pgpool2.git / summary / log / commit / refs
commit 753fc4bcd9821fdc0d00bd9cca9c22d6c22266b3
Author: Tatsuo Ishii <ishii at sraoss.co.jp>
Date: Wed Aug 11 08:12:10 2010 +0000
Add "troubleshooting" section.
doc/pgpool-en.html | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 112 insertions(+), 1 deletion(-)
diff --git a/doc/pgpool-en.html b/doc/pgpool-en.html
index a9064d401..2953bd3ff 100644
--- a/doc/pgpool-en.html
+++ b/doc/pgpool-en.html
@@ -7,7 +7,7 @@
</head>
<!-- hhmts start -->
-Last modified: Wed Aug 11 12:02:12 JST 2010
+Last modified: Wed Aug 11 17:11:10 JST 2010
<!-- hhmts end -->
<body bgcolor="#ffffff">
@@ -35,6 +35,7 @@ Last modified: Wed Aug 11 12:02:12 JST 2010
<li><a href="#reload">Reloading pgpool-II configuration files</a></li>
<li><a href="#show-commands">SHOW commands</a></li>
<li><a href="#online-recovery">Online recovery</a></li>
+ <li><a href="#troubleshooting">Troubleshooting</a></li>
<li><a href="#restriction">Restrictions</a></li>
<li><a href="#reference">References</a></li>
<li><a href="#internal">internal</a></li>
@@ -2070,8 +2071,118 @@ set "_PGPOOL2_PCP_TIMEOUT " parameter to a greater number in
pgmgt.conf.php.
</p>
+<h1><a name="troubleshooting"></a>Troubleshooting</h1>
+<p>
+This section describes troubles and their workarounds while you are using pgpool-II.
+</p>
+<p>
+<ul>
+
+<dt>Health check failed
+<dd>
+<p>
+Health checking of pgpool-II detects DB nodes failure.
+</p>
+<p>
+<pre>
+2010-07-23 16:42:57 ERROR: pid 20031: health check failed. 1 th host foo at port 5432 is down
+2010-07-23 16:42:57 LOG: pid 20031: set 1 th backend down status
+2010-07-23 16:42:57 LOG: pid 20031: starting degeneration. shutdown host foot(5432)
+2010-07-23 16:42:58 LOG: pid 20031: failover_handler: set new master node: 0
+2010-07-23 16:42:58 LOG: pid 20031: failover done. shutdown host foo(5432)
+</pre>
+</p>
+<p>
+The log shows that DB node 1(host foo) goes down and disconnected then
+DB node 0 becomes new master.
+Check DB node 1 and remove the cause of failure. After that do online
+recovery against DB node 1 if possible.
+</p>
+
+<dt>Failed to read kind from frontend
+<dd>
+<p>
+<pre>
+2010-07-26 18:43:24 LOG: pid 24161: ProcessFrontendResponse: failed to read kind from frontend. frontend abnormally exited
+</pre>
+<p>
+This log indicates that the frontend program disconnected pgpool-II
+without proper procedure.
+The possible causes are: bugs of applications, applications are forced
+to be terminated, or temporary network failure.
+Even such kind of events happen, there's no possibility of DB
+destruction or breaking data consistency.
+It is advised that you check the applications and networks if the
+message keeps on logging.
+</p>
+
+<dt>Kind mismatch errors
+<dd>
+<p>
+It is possible that you have this error when pgpool-II operates in
+replication mode.
+</p>
+<pre>
+2010-07-22 14:18:32 ERROR: pid 9966: kind mismatch among backends. Possible last query was: "FETCH ALL FROM c;" kind details are: 0[T] 1[E: cursor "c" does not exist]
+</pre>
+<p>
+Pgpool-II waits for reponses from DB nodes after sending SQL command to them.
+The message indicates that each DB nodes return back different kind of response.
+You see SQL which possibly caused the error after "Possible last query
+was:".
+Then kind of response follows. If the response indicates an error, the
+error message from PostgreSQL is shown.
+Here you see "0[T]" saying that the 0the DB node responses "T"(starting
+to send row description), and "1[E" indicates that DB node 1 returns
+error with message "cursor "c" does not exist".
+<p>
+Caution: You will see this error when operating in master/slave mode as
+well.
+For example, even in the mode, SET command will be basically sent to all
+DB nodes to keep all the DB node in same condition.
+</p>
+<p>
+Check the database and resync them using online recovery if you find
+databases are out of sync.
+</p>
+
+<p>
+<dt>Pgpool detected difference of the number of inserted, updated or deleted tuples
+<dd>
+<p>
+In replication mode, pgpool-II detects the difference of number of
+INSERT/UPDATE/DELETE rows.
+</p>
+<p>
+<pre>
+2010-07-22 11:49:28 ERROR: pid 30710: pgpool detected difference of the number of inserted, updated or deleted tuples. Possible last query was: "update t1 set i = 1;"
+2010-07-22 11:49:28 LOG: pid 30710: ReadyForQuery: Degenerate backends: 1
+2010-07-22 11:49:28 LOG: pid 30710: ReadyForQuery: Affected tuples are: 0 1
+</pre>
+<p>
+In the example above, number of updated rows by "update t1 set i = 1"
+was differe among DB nodes.
+Also in the next line indicates that DB 1 is disconnected, and number of
+affected rows of DB node 0 was 0, while in DB node 1 that was 1.
+</p>
+<p>
+Stop the DB node which suppposed to have wrong data and do online recovery.
+</ul>
+
<h1>Restrictions<a name="restriction"></a></h1>
+
+<p>
+<h2>Functionalities of PostgreSQL</h2>
+<p>
+<ul>
+<li>If you use pg_terminate_backend() to stop backend, this will trigger
+ failover.
+ The reason why this happens is, PostgreSQL sends exactly same
+ message as postmaster shutdown. There is no workaround as for now.
+ Please do not use the function.
+</ul>
+
<p>
<h2><a name="md5"></a>Authentication / Access Controls</h2>
[parent: 3797ea0a2157]