<div dir="ltr">I know that failover.py did not execute because it did not print anything to the failover.log. If it is executed, i see that the activities is logged to the file, below is the sample:<br><br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>
Thu Feb 28 16:04:04 2013 failover  DEBUG:  FAILED NODEID: 0<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  FAILED HOSTNAME: server0<br>
Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  FAILED PORTNUMBER: 5432<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>
Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  FAILED DBPath: /opt/postgres/9.2/data<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>
Thu Feb 28 16:04:04 2013 failover  DEBUG:  NEW_MASTER_NODEID: 1<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  NEW_MASTER_HOSTNAME: server1<br>
Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  OLD_MASTER_NODEID: 0<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>
Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  OLD_PRIMARY_NODEID: 0<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>
Thu Feb 28 16:04:04 2013 failover  DEBUG:  NEW_MASTER_PORT: 5432<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  --&gt;<br>Thu Feb 28 16:04:04 2013 failover  DEBUG:  NEW_MASTER_DBPATH: /opt/postgres/9.2/data<br>
Thu Feb 28 16:04:04 2013 failover  DEBUG:  &lt;--<br>Thu Feb 28 16:04:04 2013 failover.run  ERROR:  Failed server server0 is an old Primary, and localhost is the new primary, let&#39;s failover.<br>Thu Feb 28 16:04:04 2013 failover.run  DEBUG:  Executing /bin/touch /opt/postgres/9.2/data/trigger_file0<br>
Thu Feb 28 16:04:04 2013 failover.run  DEBUG:  Failover has been triggered successfully<br>Thu Feb 28 16:04:04 2013 failover.run  DEBUG:  &lt;--<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 28, 2013 at 11:38 PM, Tatsuo Ishii <span dir="ltr">&lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">&gt; Hi Tatsuo,<br>
&gt; I reproduce the problem on pgpool 3.2.3.<br>
&gt; Basically server1 is the originally primary, and server0 is standby. When<br>
&gt; server1 kernel panic, server0 failover which become the primary, which is<br>
&gt; expected.<br>
&gt; When failed server1 comes back online, execute pcp_recovery on server0 to<br>
&gt; recover and connect it to primary as a standby, which is expected also.<br>
&gt; Now, if server0 kernel panic, pgpool on server1 trigger the failover<br>
&gt; script, however, the script did not really get executed although it is<br>
&gt; logged in the pgpool log.<br>
<br>
</div>How do you determine failover scrit did not get executed?<br>
I see this line:<br>
<div class="im HOEnZb"><br>
Feb 28 21:47:41 server1 pgpool[2054]: execute command:<br>
/home/pgpool/failover.py -d 0 -h server0 -p 5432 -D /opt/postgres/9.2/data<br>
-m 1 -H server1 -M 0 -P 0 -r 5432 -R /opt/postgres/9.2/data<br>
</div><div class="HOEnZb"><div class="h5">--<br>
Tatsuo Ishii<br>
SRA OSS, Inc. Japan<br>
English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
<br>
&gt; See below for the trace:<br>
&gt;<br>
&gt; Feb 28 21:47:40 server1 pgpool[3593]: connect_inet_domain_socket: select()<br>
&gt; timedout. retrying...<br>
&gt; Feb 28 21:47:40 server1 pgpool[3679]: connect_inet_domain_socket: select()<br>
&gt; timedout. retrying...<br>
&gt; Feb 28 21:47:41 server1 pgpool[3594]: wd_create_send_socket: connect()<br>
&gt; reports failure (No route to host). You can safely ignore this while<br>
&gt; starting up.<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: pool_flush_it: write failed to<br>
&gt; backend (0). reason: No route to host offset: 0 wlen: 42<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: notice_backend_error: called from<br>
&gt; pgpool main. ignored.<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: child_exit: called from pgpool main.<br>
&gt; ignored.<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: pool_read: EOF encountered with<br>
&gt; backend<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: s_do_auth: error while reading<br>
&gt; message kind<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: make_persistent_db_connection:<br>
&gt; s_do_auth failed<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: health check failed. 0 th host<br>
&gt; server0 at port 5432 is down<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: health check retry sleep time: 5<br>
&gt; second(s)<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: starting degeneration. shutdown host<br>
&gt; server0(5432)<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: Restart all children<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: execute command:<br>
&gt; /home/pgpool/failover.py -d 0 -h server0 -p 5432 -D /opt/postgres/9.2/data<br>
&gt; -m 1 -H server1 -M 0 -P 0 -r 5432 -R /opt/postgres/9.2/data<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: find_primary_node_repeatedly: waiting<br>
&gt; for finding a primary node<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: connect_inet_domain_socket_by_port:<br>
&gt; health check timer expired<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: make_persistent_db_connection:<br>
&gt; connection to server1(5432) failed<br>
&gt; Feb 28 21:47:41 server1 pgpool[2054]: find_primary_node:<br>
&gt; make_persistent_connection failed<br>
&gt; Feb 28 21:47:41 server1 pgpool[3679]: connect_inet_domain_socket: select()<br>
&gt; timedout. retrying...<br>
&gt; Feb 28 21:47:42 server1 pgpool[2054]: connect_inet_domain_socket_by_port:<br>
&gt; health check timer expired<br>
&gt;<br>
&gt; above logs repeat few times, and after few seconds, i see this:<br>
&gt; Feb 28 21:47:47 server1 pgpool[3679]: check_replication_time_lag: could not<br>
&gt; connect to DB node 0, check sr_check_user and sr_check_password<br>
&gt;<br>
&gt; Feb 28 21:48:24 server1 pgpool[2054]: find_primary_node:<br>
&gt; make_persistent_connection failed<br>
&gt; Feb 28 21:48:25 server1 pgpool[3679]: connect_inet_domain_socket: select()<br>
&gt; timedout. retrying...<br>
&gt; Feb 28 21:48:25 server1 pgpool[2057]: wd_lifecheck: lifecheck failed 3<br>
&gt; times. pgpool 0 (server1:9999) seems not to be working<br>
&gt; Feb 28 21:48:25 server1 pgpool[3679]: connect_inet_domain_socket:<br>
&gt; getsockopt() detected error: No route to host<br>
&gt; Feb 28 21:48:25 server1 pgpool[3679]: make_persistent_db_connection:<br>
&gt; connection to server0(5432) failed<br>
&gt; Feb 28 21:48:25 server1 pgpool[2057]: wd_lifecheck: lifecheck failed 3<br>
&gt; times. pgpool 1 (server0:9999) seems not to be working<br>
&gt; Feb 28 21:48:25 server1 pgpool[2057]: wd_lifecheck: watchdog status is<br>
&gt; DOWN. You need to restart this for recovery.<br>
&gt; Feb 28 21:48:25 server1 pgpool[3679]: check_replication_time_lag: could not<br>
&gt; connect to DB node 0, check sr_check_user and sr_check_password<br>
&gt;<br>
&gt; Feb 28 21:48:44 server1 pgpool[2057]: wd_lifecheck: lifecheck failed 3<br>
&gt; times. pgpool 0 (server1:9999) seems not to be working<br>
&gt; Feb 28 21:48:44 server1 pgpool[2057]: wd_lifecheck: lifecheck failed 3<br>
&gt; times. pgpool 1 (server0:9999) seems not to be working<br>
&gt;<br>
&gt; Feb 28 21:49:10 server1 pgpool[2054]: connect_inet_domain_socket_by_port:<br>
&gt; health check timer expired<br>
&gt; Feb 28 21:49:10 server1 pgpool[2054]: make_persistent_db_connection:<br>
&gt; connection to server1(5432) failed<br>
&gt; Feb 28 21:49:10 server1 pgpool[2054]: find_primary_node:<br>
&gt; make_persistent_connection failed<br>
&gt; Feb 28 21:49:11 server1 pgpool[2054]: failover: no follow backends are<br>
&gt; degenerated<br>
&gt; Feb 28 21:49:11 server1 pgpool[2054]: failover: set new primary node: -1<br>
&gt; Feb 28 21:49:11 server1 pgpool[2054]: failover: set new master node: 1<br>
&gt; Feb 28 21:49:11 server1 pgpool[4012]: do_child: failback event found.<br>
&gt; restart myself.<br>
&gt; Feb 28 21:49:11 server1 pgpool[4013]: do_child: failback event found.<br>
&gt; restart myself.<br>
&gt; Feb 28 21:49:11 server1 pgpool[4014]: do_child: failback event found.<br>
&gt; restart myself.<br>
&gt; Feb 28 21:49:11 server1 pgpool[4015]: do_child: failback event found.<br>
&gt; restart myself.<br>
&gt;<br>
&gt; Feb 28 21:49:11 server1 pgpool[4030]: do_child: failback event found.<br>
&gt; restart myself.<br>
&gt; Feb 28 21:49:11 server1 pgpool[4039]: do_child: failback event found.<br>
&gt; restart myself.<br>
&gt; Feb 28 21:49:11 server1 pgpool[4040]: connection received:<br>
&gt; host=server1.local port=41474<br>
&gt; Feb 28 21:49:11 server1 pgpool[4040]: read_startup_packet: incorrect packet<br>
&gt; length (0)<br>
&gt; Feb 28 21:49:11 server1 pgpool[4040]: connection received:<br>
&gt; host=server1.local port=41481<br>
&gt; Feb 28 21:49:11 server1 pgpool[4040]: read_startup_packet: incorrect packet<br>
&gt; length (0)<br>
&gt; Feb 28 21:49:11 server1 pgpool[4040]: connection received:<br>
&gt; host=server1.local port=41485<br>
&gt; Feb 28 21:49:11 server1 pgpool[4040]: read_startup_packet: incorrect packet<br>
&gt; length (0)<br>
&gt; Feb 28 21:49:11 server1 pgpool[4040]: connection received:<br>
&gt; host=server1.local port=41491<br>
&gt; Feb 28 21:49:11 server1 pgpool[4040]: read_startup_packet: incorrect packet<br>
&gt; length (0)<br>
&gt; Feb 28 21:49:11 server1 pgpool[2054]: failover done. shutdown host<br>
&gt; server0(5432)<br>
&gt; Feb 28 21:49:11 server1 pgpool[4029]: do_child: failback event found.<br>
&gt; restart myself.<br>
&gt; Feb 28 21:49:12 server1 pgpool[3678]: pcp child process received restart<br>
&gt; request<br>
&gt; Feb 28 21:49:12 server1 pgpool[2054]: PCP child 3678 exits with status 256<br>
&gt; in failover()<br>
&gt; Feb 28 21:49:12 server1 pgpool[2054]: fork a new PCP child pid 4042 in<br>
&gt; failover()<br>
&gt; Feb 28 21:49:12 server1 pgpool[2054]: worker child 3679 exits with status<br>
&gt; 256<br>
&gt; Feb 28 21:49:12 server1 pgpool[2054]: fork a new worker child pid 4043<br>
&gt; Feb 28 21:49:12 server1 pgpool[4043]: connect_inet_domain_socket_by_port:<br>
&gt; health check timer expired<br>
&gt; Feb 28 21:49:12 server1 pgpool[4043]: make_persistent_db_connection:<br>
&gt; connection to server1(5432) failed<br>
&gt; Feb 28 21:49:12 server1 pgpool[2054]: after some retrying backend returned<br>
&gt; to healthy state<br>
&gt; Feb 28 21:49:13 server1 pgpool[4073]: connection received:<br>
&gt; host=server1.local port=41496<br>
&gt; Feb 28 21:49:13 server1 pgpool[4073]: connect_inet_domain_socket_by_port:<br>
&gt; health check timer expired<br>
&gt; Feb 28 21:49:13 server1 pgpool[4073]: connection to server1(5432) failed<br>
&gt; Feb 28 21:49:13 server1 pgpool[4073]: new_connection: create_cp() failed<br>
&gt; Feb 28 21:49:13 server1 pgpool[4073]: degenerate_backend_set: 1 fail over<br>
&gt; request from pid 4073<br>
&gt; Feb 28 21:49:13 server1 pgpool[2054]: starting degeneration. shutdown host<br>
&gt; server1(5432)<br>
&gt; Feb 28 21:49:13 server1 pgpool[2054]: failover_handler: no valid DB node<br>
&gt; found<br>
&gt; Feb 28 21:49:13 server1 pgpool[2054]: Restart all children<br>
&gt; Feb 28 21:49:13 server1 pgpool[2054]: execute command:<br>
&gt; /home/pgpool/failover.py -d 1 -h server1 -p 5432 -D /opt/postgres/9.2/data<br>
&gt; -m -1 -H  -M 1 -P 1 -r  -R<br>
&gt; Feb 28 21:49:13 server1 pgpool[2054]: find_primary_node_repeatedly: waiting<br>
&gt; for finding a primary node<br>
&gt; Feb 28 21:49:16 server1 pgpool[2057]: wd_lifecheck: lifecheck failed 3<br>
&gt; times. pgpool 0 (server1:9999) seems not to be working<br>
&gt; Feb 28 21:49:16 server1 pgpool[2057]: wd_lifecheck: lifecheck failed 3<br>
&gt; times. pgpool 1 (server0:9999) seems not to be working<br>
&gt; Feb 28 21:49:16 server1 pgpool[2057]: wd_lifecheck: watchdog status is<br>
&gt; DOWN. You need to restart this for recovery.<br>
&gt; Feb 28 21:49:22 server1 pgpool[4043]: connect_inet_domain_socket_by_port:<br>
&gt; health check timer expired<br>
&gt; Feb 28 21:49:22 server1 pgpool[4043]: make_persistent_db_connection:<br>
&gt; connection to server1(5432) failed<br>
&gt; Feb 28 21:49:32 server1 pgpool[4043]: connect_inet_domain_socket_by_port:<br>
&gt; health check timer expired<br>
&gt; Feb 28 21:49:32 server1 pgpool[4043]: make_persistent_db_connection:<br>
&gt; connection to server1(5432) failed<br>
&gt; Feb 28 21:49:35 server1 pgpool[2057]: wd_lifecheck: lifecheck failed 3<br>
&gt; times. pgpool 0 (server1:9999) seems not to be working<br>
&gt; Feb 28 21:49:35 server1 pgpool[2057]: wd_lifecheck: lifecheck failed 3<br>
&gt; times. pgpool 1 (server0:9999) seems not to be working<br>
&gt; Feb 28 21:49:35 server1 pgpool[2057]: wd_lifecheck: watchdog status is<br>
&gt; DOWN. You need to restart this for recovery.<br>
&gt; Feb 28 21:49:42 server1 pgpool[4043]: connect_inet_domain_socket_by_port:<br>
&gt; health check timer expired<br>
&gt;<br>
&gt;<br>
&gt; Question 1: why the failover script did not executed? is it becuase primary<br>
&gt; is -1?<br>
&gt; Question 2: why failover script trigger again?<br>
&gt; Question 3: why pgpool on server1 failed? why watchdog on server1 is down?<br>
&gt;<br>
&gt; Thanks~<br>
&gt; Ning<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Feb 27, 2013 at 10:44 PM, ning chan &lt;<a href="mailto:ninchan8328@gmail.com">ninchan8328@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Hi Tatsuo,<br>
&gt;&gt; I am on 3.2.1. I will try 3.2.3 and report back to you.<br>
&gt;&gt;<br>
&gt;&gt; Meanwhile, I have question about the backend server setting in the<br>
&gt;&gt; pgpool.conf<br>
&gt;&gt; I have two pgpools and each of them pointing to the same backend servers,<br>
&gt;&gt; should  both pgpool.conf have the same backend_hostname configuration?<br>
&gt;&gt;<br>
&gt;&gt; *****pgpool-A****<br>
&gt;&gt; backend_hostname0 = &#39;se032c-94-30&#39;<br>
&gt;&gt; backend_port0 = 5432<br>
&gt;&gt; backend_weight0 = 1<br>
&gt;&gt; backend_data_directory0 = &#39;/opt/postgres/9.2/data&#39;<br>
&gt;&gt; backend_flag0 = &#39;ALLOW_TO_FAILOVER&#39;<br>
&gt;&gt;<br>
&gt;&gt; backend_hostname1 = &#39;se032c-94-31&#39;<br>
&gt;&gt; backend_port1 = 5432<br>
&gt;&gt; backend_weight1 = 1<br>
&gt;&gt; backend_data_directory1 = &#39;/opt/postgres/9.2/data&#39;<br>
&gt;&gt; backend_flag1 = &#39;ALLOW_TO_FAILOVER&#39;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ****pgpool-B****<br>
&gt;&gt; backend_hostname0 = &#39;se032c-94-30&#39;<br>
&gt;&gt; backend_port0 = 5432<br>
&gt;&gt; backend_weight0 = 1<br>
&gt;&gt; backend_data_directory0 = &#39;/opt/postgres/9.2/data&#39;<br>
&gt;&gt; backend_flag0 = &#39;ALLOW_TO_FAILOVER&#39;<br>
&gt;&gt;<br>
&gt;&gt; backend_hostname1 = &#39;se032c-94-31&#39;<br>
&gt;&gt; backend_port1 = 5432<br>
&gt;&gt; backend_weight1 = 1<br>
&gt;&gt; backend_data_directory1 = &#39;/opt/postgres/9.2/data&#39;<br>
&gt;&gt; backend_flag1 = &#39;ALLOW_TO_FAILOVER&#39;<br>
&gt;&gt;<br>
&gt;&gt; Thanks~<br>
&gt;&gt; Ning<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Feb 27, 2013 at 6:12 PM, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&gt;wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; What version of pgpool-II are you using?  We have found a failover<br>
&gt;&gt;&gt; handling problem with 3.2.2 and released 3.2.3 afterwards.<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Tatsuo Ishii<br>
&gt;&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt; Hi Tatsuo,<br>
&gt;&gt;&gt; &gt; Do you have any chance to look at this problem yet?<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; Thanks~<br>
&gt;&gt;&gt; &gt; Ning<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt; On Tue, Feb 19, 2013 at 3:02 PM, ning chan &lt;<a href="mailto:ninchan8328@gmail.com">ninchan8328@gmail.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt; Hi Tatsuo,<br>
&gt;&gt;&gt; &gt;&gt; I figured out the problem to the some scripting error in the<br>
&gt;&gt;&gt; &gt;&gt; pgpool_remote_start to have the incorrect path to pg_ctl.<br>
&gt;&gt;&gt; &gt;&gt; As soon as I corrected it i can recover the failed server and bring it<br>
&gt;&gt;&gt; &gt;&gt; online.<br>
&gt;&gt;&gt; &gt;&gt; I now however facing another problem.<br>
&gt;&gt;&gt; &gt;&gt; After I bring the failed master back in to the pgpool as a standby<br>
&gt;&gt;&gt; server,<br>
&gt;&gt;&gt; &gt;&gt; i then shutdown the currect Primary server and expecting Standby server<br>
&gt;&gt;&gt; &gt;&gt; will be promoted to become the new Primary; however it did not happen.<br>
&gt;&gt;&gt; &gt;&gt; I check the pgpool log, i see failover command is called but it did not<br>
&gt;&gt;&gt; &gt;&gt; execute. I check and confirm my failover script works just fine.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Here is the log:<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:40 server0 pgpool[3519]: set 1 th backend down status<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 pgpool[3554]: wd_create_send_socket: connect()<br>
&gt;&gt;&gt; &gt;&gt; reports failure (No route to host). You can safely ignore this while<br>
&gt;&gt;&gt; &gt;&gt; starting up.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 pgpool[3522]: wd_lifecheck: lifecheck failed 3<br>
&gt;&gt;&gt; &gt;&gt; times. pgpool seems not to be working<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 pgpool[3522]: wd_IP_down: ifconfig down<br>
&gt;&gt;&gt; succeeded<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 pgpool[3519]: starting degeneration. shutdown<br>
&gt;&gt;&gt; host<br>
&gt;&gt;&gt; &gt;&gt; server1(5432)<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 pgpool[3519]: Restart all children<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 pgpool[3519]: execute command:<br>
&gt;&gt;&gt; &gt;&gt; /home/pgpool/failover.py -d 1 -h server1 -p 5432 -D<br>
&gt;&gt;&gt; /opt/postgres/9.2/data<br>
&gt;&gt;&gt; &gt;&gt; -m 0 -H server0 -M 0 -P 1 -r 5432 -R /opt/postgres/9.2/data<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 postgres[3939]: [2-1] LOG:  incomplete startup<br>
&gt;&gt;&gt; &gt;&gt; packet<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 postgres[3931]: [2-1] LOG:  incomplete startup<br>
&gt;&gt;&gt; &gt;&gt; packet<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 postgres[3935]: [2-1] LOG:  incomplete startup<br>
&gt;&gt;&gt; &gt;&gt; packet<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:43 server0 pgpool[3519]: find_primary_node_repeatedly:<br>
&gt;&gt;&gt; &gt;&gt; waiting for finding a primary node<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:46 server0 pgpool[3522]: wd_create_send_socket: connect()<br>
&gt;&gt;&gt; &gt;&gt; reports failure (No route to host). You can safely ignore this while<br>
&gt;&gt;&gt; &gt;&gt; starting up.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:46 server0 pgpool[3522]: wd_lifecheck: lifecheck failed 3<br>
&gt;&gt;&gt; &gt;&gt; times. pgpool seems not to be working<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:54 server0 pgpool[3556]: connect_inet_domain_socket:<br>
&gt;&gt;&gt; &gt;&gt; connect() failed: Connection timed out<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:54 server0 pgpool[3556]: make_persistent_db_connection:<br>
&gt;&gt;&gt; &gt;&gt; connection to server1(5432) failed<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:51:54 server0 pgpool[3556]: check_replication_time_lag: could<br>
&gt;&gt;&gt; &gt;&gt; not connect to DB node 1, check sr_check_user and sr_check_password<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:05 server0 pgpool[3522]: wd_lifecheck: lifecheck failed 3<br>
&gt;&gt;&gt; &gt;&gt; times. pgpool seems not to be working<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:05 server0 pgpool[3556]: connect_inet_domain_socket:<br>
&gt;&gt;&gt; &gt;&gt; connect() failed: No route to host<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:05 server0 pgpool[3556]: make_persistent_db_connection:<br>
&gt;&gt;&gt; &gt;&gt; connection to server1(5432) failed<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:05 server0 pgpool[3556]: check_replication_time_lag: could<br>
&gt;&gt;&gt; &gt;&gt; not connect to DB node 1, check sr_check_user and sr_check_password<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:05 server0 pgpool[3522]: wd_lifecheck: lifecheck failed 3<br>
&gt;&gt;&gt; &gt;&gt; times. pgpool seems not to be working<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:14 server0 pgpool[3519]: failover: no follow backends are<br>
&gt;&gt;&gt; &gt;&gt; degenerated<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:14 server0 pgpool[3519]: failover: set new primary node:<br>
&gt;&gt;&gt; -1<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:14 server0 pgpool[3519]: failover: set new master node: 0<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:14 server0 pgpool[3980]: connection received:<br>
&gt;&gt;&gt; &gt;&gt; host=server0.local port=45361<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:14 server0 pgpool[3556]: worker process received restart<br>
&gt;&gt;&gt; &gt;&gt; request<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 14:52:14 server0 pgpool[3519]: failover done. shutdown host<br>
&gt;&gt;&gt; &gt;&gt; server1(5432)<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; As you can see, postgreSQL did not restarted.<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; From a successful failover, the log should looks like this:<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:01 server0 pgpool[4391]: execute command:<br>
&gt;&gt;&gt; &gt;&gt; /home/pgpool/failover.py -d 1 -h server1 -p 5432 -D<br>
&gt;&gt;&gt; /opt/postgres/9.2/data<br>
&gt;&gt;&gt; &gt;&gt; -m 0 -H server0 -M 0 -P 1 -r 5432 -R /opt/postgres/9.2/data<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:01 server0 postgres[4786]: [2-1] LOG:  incomplete startup<br>
&gt;&gt;&gt; &gt;&gt; packet<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:02 server0 pgpool[4391]: find_primary_node_repeatedly:<br>
&gt;&gt;&gt; &gt;&gt; waiting for finding a primary node<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:06 server0 postgres[3083]: [6-1] LOG:  trigger file found:<br>
&gt;&gt;&gt; &gt;&gt; /opt/postgres/9.2/data/trigger_file0<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:06 server0 postgres[3083]: [7-1] LOG:  redo done at<br>
&gt;&gt;&gt; 0/91000020<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:06 server0 postgres[3083]: [8-1] LOG:  selected new<br>
&gt;&gt;&gt; timeline<br>
&gt;&gt;&gt; &gt;&gt; ID: 18<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:06 server0 postgres[3083]: [9-1] LOG:  archive recovery<br>
&gt;&gt;&gt; &gt;&gt; complete<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:06 server0 postgres[3081]: [2-1] LOG:  database system is<br>
&gt;&gt;&gt; &gt;&gt; ready to accept connections<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:06 server0 postgres[4804]: [2-1] LOG:  autovacuum launcher<br>
&gt;&gt;&gt; &gt;&gt; started<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4391]: find_primary_node: primary node<br>
&gt;&gt;&gt; id<br>
&gt;&gt;&gt; &gt;&gt; is 0<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4391]: starting follow degeneration.<br>
&gt;&gt;&gt; &gt;&gt; shutdown host server1(5432)<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4391]: failover: 1 follow backends have<br>
&gt;&gt;&gt; &gt;&gt; been degenerated<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4391]: failover: set new primary node: 0<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4391]: failover: set new master node: 0<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4817]: connection received:<br>
&gt;&gt;&gt; &gt;&gt; host=server1.local port=54619<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4816]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4818]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4819]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4815]: start triggering follow command.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4815]: execute command: echo 1 server1<br>
&gt;&gt;&gt; 5432<br>
&gt;&gt;&gt; &gt;&gt; /opt/postgres/9.2/data 0 server0 0 1 5432 /opt/postgres/9.2/data %<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4821]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4822]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4823]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4820]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4827]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4828]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4826]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4829]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4830]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4831]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4832]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4833]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4834]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4833]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4834]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4835]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4836]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4837]: do_child: failback event found.<br>
&gt;&gt;&gt; &gt;&gt; restart myself.<br>
&gt;&gt;&gt; &gt;&gt; Feb 19 13:47:07 server0 pgpool[4391]: failover done. shutdown host<br>
&gt;&gt;&gt; &gt;&gt; server1(5432)<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; Any idea why failover did not work after the recovery? Do i need to<br>
&gt;&gt;&gt; &gt;&gt; restart remote pgpool after recovery?<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt; On Mon, Feb 18, 2013 at 4:24 PM, ning chan &lt;<a href="mailto:ninchan8328@gmail.com">ninchan8328@gmail.com</a>&gt;<br>
&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Hi Tatsuo,<br>
&gt;&gt;&gt; &gt;&gt;&gt; Sorry for the late reply as I was traveling.<br>
&gt;&gt;&gt; &gt;&gt;&gt; I am able to reproduce the problem and here is what I did:<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *1) Make sure primary (server0) and standby (server1) connections are<br>
&gt;&gt;&gt; &gt;&gt;&gt; good.*<br>
&gt;&gt;&gt; &gt;&gt;&gt; [root@server0 tmp]# psql -c &quot;show pool_nodes&quot; -p 9999<br>
&gt;&gt;&gt; &gt;&gt;&gt;  node_id | hostname | port | status | lb_weight |  role<br>
&gt;&gt;&gt; &gt;&gt;&gt; ---------+----------+------+--------+-----------+---------<br>
&gt;&gt;&gt; &gt;&gt;&gt;  0       | server0  | 5432 | 2      | 0.500000  | primary<br>
&gt;&gt;&gt; &gt;&gt;&gt;  1       | server1  | 5432 | 2      | 0.500000  | standby<br>
&gt;&gt;&gt; &gt;&gt;&gt; (2 rows)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; [root@server1 tmp]# psql -c &quot;show pool_nodes&quot; -p 9999<br>
&gt;&gt;&gt; &gt;&gt;&gt;  node_id | hostname | port | status | lb_weight |  role<br>
&gt;&gt;&gt; &gt;&gt;&gt; ---------+----------+------+--------+-----------+---------<br>
&gt;&gt;&gt; &gt;&gt;&gt;  0       | server0  | 5432 | 2      | 0.500000  | primary<br>
&gt;&gt;&gt; &gt;&gt;&gt;  1       | server1  | 5432 | 2      | 0.500000  | standby<br>
&gt;&gt;&gt; &gt;&gt;&gt; (2 rows)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *2) force shutdown primary (server0), and standby (server1) server was<br>
&gt;&gt;&gt; &gt;&gt;&gt; promoted, below is the pgpool log from server1 during the failover:*<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:45 server1 pgpool[2691]: connect_inet_domain_socket:<br>
&gt;&gt;&gt; &gt;&gt;&gt; connect() failed: No route to host<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:45 server1 pgpool[2691]: make_persistent_db_connection:<br>
&gt;&gt;&gt; &gt;&gt;&gt; connection to server0(5432) failed<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:45 server1 pgpool[2691]: check_replication_time_lag:<br>
&gt;&gt;&gt; could<br>
&gt;&gt;&gt; &gt;&gt;&gt; not connect to DB node 0, check sr_check_user and sr_check_password<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:45 server1 pgpool[2689]: connect_inet_domain_socket:<br>
&gt;&gt;&gt; &gt;&gt;&gt; connect() failed: No route to host<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:45 server1 pgpool[2689]: connection to server0(5432)<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:45 server1 pgpool[2689]: new_connection: create_cp()<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:45 server1 pgpool[2689]: degenerate_backend_set: 0 fail<br>
&gt;&gt;&gt; over<br>
&gt;&gt;&gt; &gt;&gt;&gt; request from pid 2689<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:48 server1 pgpool[2689]: wd_create_send_socket: connect()<br>
&gt;&gt;&gt; &gt;&gt;&gt; reports failure (No route to host). You can safely ignore this while<br>
&gt;&gt;&gt; &gt;&gt;&gt; starting up.<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:48 server1 pgpool[2653]: connect_inet_domain_socket:<br>
&gt;&gt;&gt; &gt;&gt;&gt; connect() failed: No route to host<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:48 server1 pgpool[2653]: make_persistent_db_connection:<br>
&gt;&gt;&gt; &gt;&gt;&gt; connection to server0(5432) failed<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:48 server1 pgpool[2653]: health check failed. 0 th host<br>
&gt;&gt;&gt; &gt;&gt;&gt; server0 at port 5432 is down<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:48 server1 pgpool[2653]: health check retry sleep time: 5<br>
&gt;&gt;&gt; &gt;&gt;&gt; second(s)<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:48 server1 pgpool[2653]: starting degeneration. shutdown<br>
&gt;&gt;&gt; &gt;&gt;&gt; host server0(5432)<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:48 server1 pgpool[2653]: Restart all children<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:48 server1 pgpool[2653]: execute command:<br>
&gt;&gt;&gt; &gt;&gt;&gt; /home/pgpool/failover.py -d 0 -h server0 -p 5432 -D<br>
&gt;&gt;&gt; /opt/postgres/9.2/data<br>
&gt;&gt;&gt; &gt;&gt;&gt; -m 1 -H server1 -M 0 -P 0 -r 5432 -R /opt/postgres/9.2/data<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:49 server1 pgpool[2653]: find_primary_node_repeatedly:<br>
&gt;&gt;&gt; &gt;&gt;&gt; waiting for finding a primary node<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:53 server1 postgres[1970]: [7-1] LOG:  trigger file<br>
&gt;&gt;&gt; found:<br>
&gt;&gt;&gt; &gt;&gt;&gt; /tmp/trigger_file0<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:53 server1 postgres[2597]: [3-1] FATAL:  terminating<br>
&gt;&gt;&gt; &gt;&gt;&gt; walreceiver process due to administrator command<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:53 server1 postgres[1970]: [8-1] LOG:  record with zero<br>
&gt;&gt;&gt; &gt;&gt;&gt; length at 0/64000418<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:53 server1 postgres[1970]: [9-1] LOG:  redo done at<br>
&gt;&gt;&gt; &gt;&gt;&gt; 0/640003B8<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:53 server1 postgres[1970]: [10-1] LOG:  selected new<br>
&gt;&gt;&gt; &gt;&gt;&gt; timeline ID: 15<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:53 server1 postgres[1970]: [11-1] LOG:  archive recovery<br>
&gt;&gt;&gt; &gt;&gt;&gt; complete<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:53 server1 postgres[1968]: [2-1] LOG:  database system is<br>
&gt;&gt;&gt; &gt;&gt;&gt; ready to accept connections<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:53 server1 postgres[3168]: [2-1] LOG:  autovacuum<br>
&gt;&gt;&gt; launcher<br>
&gt;&gt;&gt; &gt;&gt;&gt; started<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[2653]: find_primary_node: primary node<br>
&gt;&gt;&gt; id<br>
&gt;&gt;&gt; &gt;&gt;&gt; is 1<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[2653]: starting follow degeneration.<br>
&gt;&gt;&gt; &gt;&gt;&gt; shutdown host server0(5432)<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[2653]: failover: 1 follow backends have<br>
&gt;&gt;&gt; &gt;&gt;&gt; been degenerated<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[2653]: failover: set new primary node:<br>
&gt;&gt;&gt; 1<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[2653]: failover: set new master node: 1<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[3171]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server1.local port=58346<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[3170]: start triggering follow command.<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[3170]: execute command: echo 0 server0<br>
&gt;&gt;&gt; &gt;&gt;&gt; 5432 /opt/postgres/9.2/data 1 server1 0 0 5432 /opt/postgres/9.2/data<br>
&gt;&gt;&gt; %<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[2691]: worker process received restart<br>
&gt;&gt;&gt; &gt;&gt;&gt; request<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:31:54 server1 pgpool[2653]: failover done. shutdown host<br>
&gt;&gt;&gt; &gt;&gt;&gt; server0(5432)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *3) boot up the failed server (server0) as usual, pgpool and database<br>
&gt;&gt;&gt; &gt;&gt;&gt; started up as usual.<br>
&gt;&gt;&gt; &gt;&gt;&gt; *<br>
&gt;&gt;&gt; &gt;&gt;&gt; *after server0 boot up, i check the pool_nodes info, server0 pgpool<br>
&gt;&gt;&gt; &gt;&gt;&gt; still think server0 is the primary:*<br>
&gt;&gt;&gt; &gt;&gt;&gt; [root@server0 ~]# psql -c &quot;show pool_nodes&quot; -p 9999<br>
&gt;&gt;&gt; &gt;&gt;&gt;  node_id | hostname | port | status | lb_weight |  role<br>
&gt;&gt;&gt; &gt;&gt;&gt; ---------+----------+------+--------+-----------+---------<br>
&gt;&gt;&gt; &gt;&gt;&gt;  0       | server0  | 5432 | 2      | 0.500000  | primary<br>
&gt;&gt;&gt; &gt;&gt;&gt;  1       | server1  | 5432 | 2      | 0.500000  | standby<br>
&gt;&gt;&gt; &gt;&gt;&gt; (2 rows)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; server1 pgpool still think server1 is the primary:<br>
&gt;&gt;&gt; &gt;&gt;&gt; [root@server1 tmp]# psql -c &quot;show pool_nodes&quot; -p 9999<br>
&gt;&gt;&gt; &gt;&gt;&gt;  node_id | hostname | port | status | lb_weight |  role<br>
&gt;&gt;&gt; &gt;&gt;&gt; ---------+----------+------+--------+-----------+---------<br>
&gt;&gt;&gt; &gt;&gt;&gt;  0       | server0  | 5432 | 3      | 0.500000  | standby<br>
&gt;&gt;&gt; &gt;&gt;&gt;  1       | server1  | 5432 | 2      | 0.500000  | primary<br>
&gt;&gt;&gt; &gt;&gt;&gt; (2 rows)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *4) kill the database on server0 to prepare of the recovery*<br>
&gt;&gt;&gt; &gt;&gt;&gt; *as soon as i kill the server0 database, pgpool log shows following:*<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:56 server0 pgpool[2153]: execute command:<br>
&gt;&gt;&gt; &gt;&gt;&gt; /home/pgpool/failover.py -d 0 -h server0 -p 5432 -D<br>
&gt;&gt;&gt; /opt/postgres/9.2/data<br>
&gt;&gt;&gt; &gt;&gt;&gt; -m 1 -H server1 -M 0 -P 0 -r 5432 -R /opt/postgres/9.2/data<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2153]: find_primary_node_repeatedly:<br>
&gt;&gt;&gt; &gt;&gt;&gt; waiting for finding a primary node<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2153]: find_primary_node: primary node<br>
&gt;&gt;&gt; id<br>
&gt;&gt;&gt; &gt;&gt;&gt; is 1<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2153]: starting follow degeneration.<br>
&gt;&gt;&gt; &gt;&gt;&gt; shutdown host server0(5432)<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2153]: failover: 1 follow backends have<br>
&gt;&gt;&gt; &gt;&gt;&gt; been degenerated<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2153]: failover: set new primary node:<br>
&gt;&gt;&gt; 1<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2153]: failover: set new master node: 1<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2534]: start triggering follow command.<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2534]: execute command: echo 0 server0<br>
&gt;&gt;&gt; &gt;&gt;&gt; 5432 /opt/postgres/9.2/data 1 server1 0 0 5432 /opt/postgres/9.2/data<br>
&gt;&gt;&gt; %<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2190]: worker process received restart<br>
&gt;&gt;&gt; &gt;&gt;&gt; request<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:33:57 server0 pgpool[2153]: failover done. shutdown host<br>
&gt;&gt;&gt; &gt;&gt;&gt; server0(5432)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; pool_nodes shows:<br>
&gt;&gt;&gt; &gt;&gt;&gt; [root@server0 ~]# psql -c &quot;show pool_nodes&quot; -p 9999<br>
&gt;&gt;&gt; &gt;&gt;&gt;  node_id | hostname | port | status | lb_weight |  role<br>
&gt;&gt;&gt; &gt;&gt;&gt; ---------+----------+------+--------+-----------+---------<br>
&gt;&gt;&gt; &gt;&gt;&gt;  0       | server0  | 5432 | 3      | 0.500000  | standby<br>
&gt;&gt;&gt; &gt;&gt;&gt;  1       | server1  | 5432 | 2      | 0.500000  | primary<br>
&gt;&gt;&gt; &gt;&gt;&gt; (2 rows)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *5) on server1, execute /usr/local/bin/pcp_recovery_node 10 localhost<br>
&gt;&gt;&gt; &gt;&gt;&gt; 9898 pgpool password 0*<br>
&gt;&gt;&gt; &gt;&gt;&gt; server 1 pgpool log shows following:<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:34:52 server1 pgpool[3209]: starting recovery command:<br>
&gt;&gt;&gt; &quot;SELECT<br>
&gt;&gt;&gt; &gt;&gt;&gt; pgpool_recovery(&#39;basebackup.sh&#39;, &#39;server0&#39;, &#39;/opt/postgres/9.2/data&#39;)&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:34:53 server1 pgpool[3209]: 1st stage is done<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:34:53 server1 pgpool[3209]: check_postmaster_started: try to<br>
&gt;&gt;&gt; &gt;&gt;&gt; connect to postmaster on hostname:server0 database:postgres<br>
&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt; (retry 0 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:34:53 server1 pgpool[3209]: check_postmaster_started:<br>
&gt;&gt;&gt; failed to<br>
&gt;&gt;&gt; &gt;&gt;&gt; connect to postmaster on hostname:server0 database:postgres<br>
&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *The message &quot;fail to connect to postmaster on hostname server0&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt; continue until the command timeout.<br>
&gt;&gt;&gt; &gt;&gt;&gt; *<br>
&gt;&gt;&gt; &gt;&gt;&gt; *it looks like the 1st stage command is done but pgpool on server1 did<br>
&gt;&gt;&gt; &gt;&gt;&gt; not call the pgpool_remote_start to start the server0 database engine<br>
&gt;&gt;&gt; &gt;&gt;&gt; although the script is there under postgresql data folder<br>
&gt;&gt;&gt; &gt;&gt;&gt; *<br>
&gt;&gt;&gt; &gt;&gt;&gt; [root@server1 data]# ls<br>
&gt;&gt;&gt; &gt;&gt;&gt; backup_label.old     data       pg_hba.conf    pg_notify<br>
&gt;&gt;&gt; &gt;&gt;&gt; pg_stat_tmp  PG_VERSION       postmaster.pid<br>
&gt;&gt;&gt; &gt;&gt;&gt; base                 global     pg_ident.conf  pgpool_remote_start<br>
&gt;&gt;&gt; &gt;&gt;&gt; pg_subtrans  pg_xlog          recovery.done<br>
&gt;&gt;&gt; &gt;&gt;&gt; basebackup.sh        ning.test  pg_log         pg_serial<br>
&gt;&gt;&gt; &gt;&gt;&gt; pg_tblspc    postgresql.conf  recovery.standby1<br>
&gt;&gt;&gt; &gt;&gt;&gt; copy-base-backup.sh  pg_clog    pg_multixact   pg_snapshots<br>
&gt;&gt;&gt; &gt;&gt;&gt; pg_twophase  postmaster.opts<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *during this period, pgpool log on server0 shows the following:*<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:34:42 server0 pgpool[2567]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server0.local port=45366<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:34:46 server0 pgpool[2567]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server1.local port=39535<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:34:52 server0 pgpool[2567]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server0.local port=45381<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:34:56 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server1.local port=39557<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:02 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server0.local port=45396<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:06 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server1.local port=39576<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:12 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server0.local port=45410<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:16 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server1.local port=39593<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:22 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server0.local port=45425<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:26 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server1.local port=39612<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:32 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server0.local port=45440<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:36 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server1.local port=39630<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:42 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server0.local port=45455<br>
&gt;&gt;&gt; &gt;&gt;&gt; Feb 18 15:35:46 server0 pgpool[2565]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt; host=server1.local port=39648<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *Below is the script of recovery_1st_stage_command = &#39;basebackup.sh&#39;*<br>
&gt;&gt;&gt; &gt;&gt;&gt; [root@server1 ~]# more /opt/postgres/9.2/data/basebackup.sh<br>
&gt;&gt;&gt; &gt;&gt;&gt; #! /bin/sh<br>
&gt;&gt;&gt; &gt;&gt;&gt; # Recovery script for streaming replication.<br>
&gt;&gt;&gt; &gt;&gt;&gt; # This script assumes that DB node 0 is primary, and 1 is standby.<br>
&gt;&gt;&gt; &gt;&gt;&gt; #<br>
&gt;&gt;&gt; &gt;&gt;&gt; datadir=$1<br>
&gt;&gt;&gt; &gt;&gt;&gt; desthost=$2<br>
&gt;&gt;&gt; &gt;&gt;&gt; destdir=$3<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;datadir=$datadir&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;desthost=$desthost&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;destdir=$destdir&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;Executing basebackup.sh&quot; &gt;&gt; /var/log/replication.log<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;Executing start backup&quot; &gt;&gt; /var/log/replication.log<br>
&gt;&gt;&gt; &gt;&gt;&gt; psql -c &quot;SELECT pg_start_backup(&#39;Streaming Replication&#39;, true)&quot;<br>
&gt;&gt;&gt; postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;Executing rsync&quot; &gt;&gt; /var/log/replication.log<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;rsync -C -a --progress --delete -e ssh --exclude postgresql.conf<br>
&gt;&gt;&gt; &gt;&gt;&gt; --exclude postmaster.pid --exclude postmaster.<br>
&gt;&gt;&gt; &gt;&gt;&gt; opts --exclude pg_log --exclude pg_xlog --exclude recovery.conf<br>
&gt;&gt;&gt; $datadir/<br>
&gt;&gt;&gt; &gt;&gt;&gt; $desthost:$destdir/&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;Renaming recovery conf file&quot; &gt;&gt;/var/log/replication.log<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;ssh -T $desthost mv $destdir/recovery.done<br>
&gt;&gt;&gt; $destdir/recovery.conf&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt; ssh -T $desthost mv $destdir/recovery.done $destdir/recovery.conf<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;Removing trigger file&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt; ssh -T $desthost rm -f /tmp/trigger_file0<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;Executing stop backup&quot; &gt;&gt; /var/log/replication.log<br>
&gt;&gt;&gt; &gt;&gt;&gt; psql -c &quot;SELECT pg_stop_backup()&quot; postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; echo &quot;existing basebackup.sh&quot; &gt;&gt; /var/log/replication.log<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; *Manually execute the command on server1 return the following result:*<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; [root@server1 data]# ./basebackup.sh /opt/postgres/9.2/data/ server0<br>
&gt;&gt;&gt; &gt;&gt;&gt; /opt/postgres/9.2/data/<br>
&gt;&gt;&gt; &gt;&gt;&gt; datadir=/opt/postgres/9.2/data/<br>
&gt;&gt;&gt; &gt;&gt;&gt; desthost=server0<br>
&gt;&gt;&gt; &gt;&gt;&gt; destdir=/opt/postgres/9.2/data/<br>
&gt;&gt;&gt; &gt;&gt;&gt;  pg_start_backup<br>
&gt;&gt;&gt; &gt;&gt;&gt; -----------------<br>
&gt;&gt;&gt; &gt;&gt;&gt;  0/76000020<br>
&gt;&gt;&gt; &gt;&gt;&gt; (1 row)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; rsync -C -a --progress --delete -e ssh --exclude postgresql.conf<br>
&gt;&gt;&gt; &gt;&gt;&gt; --exclude postmaster.pid --exclude postmaster.opts --exclude pg_log<br>
&gt;&gt;&gt; &gt;&gt;&gt; --exclude pg_xlog --exclude recovery.conf /opt/postgres/9.2/data//<br>
&gt;&gt;&gt; &gt;&gt;&gt; server0:/opt/postgres/9.2/data//<br>
&gt;&gt;&gt; &gt;&gt;&gt; ssh -T server0 mv /opt/postgres/9.2/data//recovery.done<br>
&gt;&gt;&gt; &gt;&gt;&gt; /opt/postgres/9.2/data//recovery.conf<br>
&gt;&gt;&gt; &gt;&gt;&gt; Removing trigger file<br>
&gt;&gt;&gt; &gt;&gt;&gt; NOTICE:  WAL archiving is not enabled; you must ensure that all<br>
&gt;&gt;&gt; required<br>
&gt;&gt;&gt; &gt;&gt;&gt; WAL segments are copied through other means to complete the backup<br>
&gt;&gt;&gt; &gt;&gt;&gt;  pg_stop_backup<br>
&gt;&gt;&gt; &gt;&gt;&gt; ----------------<br>
&gt;&gt;&gt; &gt;&gt;&gt;  0/760000E0<br>
&gt;&gt;&gt; &gt;&gt;&gt; (1 row)<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Thanks and please advise.<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; Ning<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt; On Sun, Feb 17, 2013 at 7:05 AM, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a><br>
&gt;&gt;&gt; &gt;wrote:<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; It seems the standby was unable to start up. Can you show standby<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; PostgreSQL&#39;s log? Maybe we could find the cause of the problem.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; Tatsuo Ishii<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Hi Tatsuo,<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Thank you so much for your reply.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Actually in my case, i was using the pcp_recovery command and<br>
&gt;&gt;&gt; execute<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; it on<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; the current primary server.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; However, if the remote node (recover node) database is off, i got<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; following message on the primary server pgpool log:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:10 server0 pgpool[2723]: starting recovery command:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &quot;SELECT<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; pgpool_recovery(&#39;basebackup.sh&#39;, &#39;server1&#39;,<br>
&gt;&gt;&gt; &#39;/opt/postgres/9.2/data&#39;)&quot;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:11 server0 pgpool[2723]: 1st stage is done<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:11 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 0 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:11 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:13 server0 pgpool[2719]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; host=server0.local port=58446<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:14 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 1 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:14 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:14 server0 pgpool[2719]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; host=server1.local port=39928<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:17 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 2 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:17 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:20 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 3 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:20 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:23 server0 pgpool[2719]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; host=server0.local port=58464<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:23 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 0 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:23 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:26 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 1 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:26 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:26 server0 pgpool[2719]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; host=server1.local port=39946<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:29 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 2 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:29 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:32 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 3 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:32 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:33 server0 pgpool[2719]: connection received:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; host=server0.local port=58483<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:35 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 4 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:35 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:38 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; try to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; (retry 5 times)<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Jan 31 16:58:38 server0 pgpool[2723]: check_postmaster_started:<br>
&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; connect to postmaster on hostname:server1 database:template1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; user:postgres<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; here is the exact command i execute on server0 to recover server1,<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; /usr/local/bin/pcp_recovery_node 10 localhost 9898 pgpool password<br>
&gt;&gt;&gt; 1<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Do you have any idea why?<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; Just FYI, we cannot pgpoolAdmin in our environment.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt; On Sun, Feb 17, 2013 at 12:13 AM, Tatsuo Ishii &lt;<br>
&gt;&gt;&gt; <a href="mailto:ishii@postgresql.org">ishii@postgresql.org</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Hi all,<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; I have the following question regarding the recovery of a filed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; Primary<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Database Server.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Question 1: in the documentation, under Streaming Replication<br>
&gt;&gt;&gt; Online<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Recovery section.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; <a href="http://www.pgpool.net/docs/latest/pgpool-en.html#stream" target="_blank">http://www.pgpool.net/docs/latest/pgpool-en.html#stream</a><br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; in steps 6:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;    1. After completing online recovery, pgpool-II will start<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; PostgreSQL<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; on<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;    the standby node. Install the script for this purpose on<br>
&gt;&gt;&gt; each DB<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; nodes. Sample<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;    script &lt;<br>
&gt;&gt;&gt; <a href="http://www.pgpool.net/docs/latest/pgpool_remote_start" target="_blank">http://www.pgpool.net/docs/latest/pgpool_remote_start</a>&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; is<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;    included in &quot;sample&quot; directory of the source code. This<br>
&gt;&gt;&gt; script<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; uses<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; ssh.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;    You need to allow recovery_user to login from the primary<br>
&gt;&gt;&gt; node<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; to the<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;    standby node without being asked password.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; To my understanding, i think the postgreSQL doesn&#39;t not need to<br>
&gt;&gt;&gt; be<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; online<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; for the recovery process right? Since later on it mentions that<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; pgpool_remote_start will start up the DB on the failed node.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Acually standby PostgreSQL node should not be started.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Question 2: in my configuration, i have 2 pgpool server with two<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; backends.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Will it work for oneline recovery?<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Yes, but online recovery process should be initiated by one of<br>
&gt;&gt;&gt; pgpool,<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; not both. If you enable pgpool-II 3.2&#39;s watchdog, it will take<br>
&gt;&gt;&gt; care of<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; neccessary interlocking.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; Question 3: when the failed node comes back online, should i use<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; pcp_recovery from DB primary or should i use pcp_attach on the<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; failed<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; node<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; to recover the failed system? Actually in my case, both methods<br>
&gt;&gt;&gt; do<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; not<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; &gt; recover my system every time.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; I&#39;m confused. Didn&#39;t you start the online recovery process by<br>
&gt;&gt;&gt; using<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; pcp_recovery_node?(of course you could do it via pgpoolAdmin).<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Anyway pcp_recovery_node automatically attach recovered node, and<br>
&gt;&gt;&gt; you<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; don&#39;t need to execute pcp_attach_node.<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; I suggest you read tutorial:<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; <a href="http://www.pgpool.net/pgpool-web/contrib_docs/simple_sr_setting2/index.html" target="_blank">http://www.pgpool.net/pgpool-web/contrib_docs/simple_sr_setting2/index.html</a><br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Tatsuo Ishii<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; SRA OSS, Inc. Japan<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; English: <a href="http://www.sraoss.co.jp/index_en.php" target="_blank">http://www.sraoss.co.jp/index_en.php</a><br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
</div></div></blockquote></div><br></div>