<div dir="ltr"><div><div><div>Hi Tatsuo,<br></div>Did you have a chance to look at this topic? I would like to understand why failover command is calleded in the pgpool log, but the script did not really executed.<br><br></div>
Thanks~<br></div><div>Ning<br><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Feb 19, 2013 at 3:02 PM, ning chan <span dir="ltr">&lt;<a href="mailto:ninchan8328@gmail.com" target="_blank">ninchan8328@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div>Hi Tatsuo,<br></div>I figured out the problem to the some scripting error in the pgpool_remote_start to have the incorrect path to pg_ctl.<br>
</div>As soon as I corrected it i can recover the failed server and bring it online. <br>
</div>I now however facing another problem.<br></div>After I bring the failed master back in to the pgpool as a standby server, i then shutdown the currect Primary server and expecting Standby server will be promoted to become the new Primary; however it did not happen.<br>

</div>I check the pgpool log, i see failover command is called but it did not execute. I check and confirm my failover script works just fine. <br><br></div>Here is the log:<br>Feb 19 14:51:40 server0 pgpool[3519]: set 1 th backend down status<br>

Feb 19 14:51:43 server0 pgpool[3554]: wd_create_send_socket: connect() reports failure (No route to host). You can safely ignore this while starting up.<br>Feb 19 14:51:43 server0 pgpool[3522]: wd_lifecheck: lifecheck failed 3 times. pgpool seems not to be working<br>

Feb 19 14:51:43 server0 pgpool[3522]: wd_IP_down: ifconfig down succeeded<br>Feb 19 14:51:43 server0 pgpool[3519]: starting degeneration. shutdown host server1(5432)<br>Feb 19 14:51:43 server0 pgpool[3519]: Restart all children<br>

Feb 19 14:51:43 server0 pgpool[3519]: execute command: /home/pgpool/failover.py -d 1 -h server1 -p 5432 -D /opt/postgres/9.2/data -m 0 -H server0 -M 0 -P 1 -r 5432 -R /opt/postgres/9.2/data<br>Feb 19 14:51:43 server0 postgres[3939]: [2-1] LOG:  incomplete startup packet<br>

Feb 19 14:51:43 server0 postgres[3931]: [2-1] LOG:  incomplete startup packet<br>Feb 19 14:51:43 server0 postgres[3935]: [2-1] LOG:  incomplete startup packet<br>Feb 19 14:51:43 server0 pgpool[3519]: find_primary_node_repeatedly: waiting for finding a primary node<br>

Feb 19 14:51:46 server0 pgpool[3522]: wd_create_send_socket: connect() reports failure (No route to host). You can safely ignore this while starting up.<br>Feb 19 14:51:46 server0 pgpool[3522]: wd_lifecheck: lifecheck failed 3 times. pgpool seems not to be working<br>

Feb 19 14:51:54 server0 pgpool[3556]: connect_inet_domain_socket: connect() failed: Connection timed out<br>Feb 19 14:51:54 server0 pgpool[3556]: make_persistent_db_connection: connection to server1(5432) failed<br>Feb 19 14:51:54 server0 pgpool[3556]: check_replication_time_lag: could not connect to DB node 1, check sr_check_user and sr_check_password<br>

Feb 19 14:52:05 server0 pgpool[3522]: wd_lifecheck: lifecheck failed 3 times. pgpool seems not to be working<br>Feb 19 14:52:05 server0 pgpool[3556]: connect_inet_domain_socket: connect() failed: No route to host<br>Feb 19 14:52:05 server0 pgpool[3556]: make_persistent_db_connection: connection to server1(5432) failed<br>

Feb 19 14:52:05 server0 pgpool[3556]: check_replication_time_lag: could not connect to DB node 1, check sr_check_user and sr_check_password<br>Feb 19 14:52:05 server0 pgpool[3522]: wd_lifecheck: lifecheck failed 3 times. pgpool seems not to be working<br>

Feb 19 14:52:14 server0 pgpool[3519]: failover: no follow backends are degenerated<br>Feb 19 14:52:14 server0 pgpool[3519]: failover: set new primary node: -1<br>Feb 19 14:52:14 server0 pgpool[3519]: failover: set new master node: 0<br>

Feb 19 14:52:14 server0 pgpool[3980]: connection received: host=server0.local port=45361<br>Feb 19 14:52:14 server0 pgpool[3556]: worker process received restart request<br>Feb 19 14:52:14 server0 pgpool[3519]: failover done. shutdown host server1(5432)<br>

<br></div>As you can see, postgreSQL did not restarted.<br><br></div>From a successful failover, the log should looks like this:<br>Feb 19 13:47:01 server0 pgpool[4391]: execute command: /home/pgpool/failover.py -d 1 -h server1 -p 5432 -D /opt/postgres/9.2/data -m 0 -H server0 -M 0 -P 1 -r 5432 -R /opt/postgres/9.2/data<br>

Feb 19 13:47:01 server0 postgres[4786]: [2-1] LOG:  incomplete startup packet<br>Feb 19 13:47:02 server0 pgpool[4391]: find_primary_node_repeatedly: waiting for finding a primary node<br>Feb 19 13:47:06 server0 postgres[3083]: [6-1] LOG:  trigger file found: /opt/postgres/9.2/data/trigger_file0<br>

Feb 19 13:47:06 server0 postgres[3083]: [7-1] LOG:  redo done at 0/91000020<br>Feb 19 13:47:06 server0 postgres[3083]: [8-1] LOG:  selected new timeline ID: 18<br>Feb 19 13:47:06 server0 postgres[3083]: [9-1] LOG:  archive recovery complete<br>

Feb 19 13:47:06 server0 postgres[3081]: [2-1] LOG:  database system is ready to accept connections<br>Feb 19 13:47:06 server0 postgres[4804]: [2-1] LOG:  autovacuum launcher started<br>Feb 19 13:47:07 server0 pgpool[4391]: find_primary_node: primary node id is 0<br>

Feb 19 13:47:07 server0 pgpool[4391]: starting follow degeneration. shutdown host server1(5432)<br>Feb 19 13:47:07 server0 pgpool[4391]: failover: 1 follow backends have been degenerated<br>Feb 19 13:47:07 server0 pgpool[4391]: failover: set new primary node: 0<br>

Feb 19 13:47:07 server0 pgpool[4391]: failover: set new master node: 0<br>Feb 19 13:47:07 server0 pgpool[4817]: connection received: host=server1.local port=54619<br>Feb 19 13:47:07 server0 pgpool[4816]: do_child: failback event found. restart myself.<br>

Feb 19 13:47:07 server0 pgpool[4818]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4819]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4815]: start triggering follow command.<br>

Feb 19 13:47:07 server0 pgpool[4815]: execute command: echo 1 server1 5432 /opt/postgres/9.2/data 0 server0 0 1 5432 /opt/postgres/9.2/data %<br>Feb 19 13:47:07 server0 pgpool[4821]: do_child: failback event found. restart myself.<br>

Feb 19 13:47:07 server0 pgpool[4822]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4823]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4820]: do_child: failback event found. restart myself.<br>

Feb 19 13:47:07 server0 pgpool[4827]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4828]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4826]: do_child: failback event found. restart myself.<br>

Feb 19 13:47:07 server0 pgpool[4829]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4830]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4831]: do_child: failback event found. restart myself.<br>

Feb 19 13:47:07 server0 pgpool[4832]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4833]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4834]: do_child: failback event found. restart myself.<br>

Feb 19 13:47:07 server0 pgpool[4833]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4834]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4835]: do_child: failback event found. restart myself.<br>

Feb 19 13:47:07 server0 pgpool[4836]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4837]: do_child: failback event found. restart myself.<br>Feb 19 13:47:07 server0 pgpool[4391]: failover done. shutdown host server1(5432)<br>

<br></div>Any idea why failover did not work after the recovery? Do i need to restart remote pgpool after recovery?<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 18, 2013 at 4:24 PM, ning chan <span dir="ltr">&lt;<a href="mailto:ninchan8328@gmail.com" target="_blank">ninchan8328@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div><br>Hi Tatsuo,<br></div>Sorry for the late reply as I was traveling. <br>

</div>I am able to reproduce the problem and here is what I did:<br>
<br></div><b>1) Make sure primary (server0) and standby (server1) connections are good.</b><br>[root@server0 tmp]# psql -c &quot;show pool_nodes&quot; -p 9999<br> node_id | hostname | port | status | lb_weight |  role   <br>


---------+----------+------+--------+-----------+---------<br> 0       | server0  | 5432 | 2      | 0.500000  | primary<br> 1       | server1  | 5432 | 2      | 0.500000  | standby<br>(2 rows)<br><br>[root@server1 tmp]# psql -c &quot;show pool_nodes&quot; -p 9999<br>


 node_id | hostname | port | status | lb_weight |  role   <br>---------+----------+------+--------+-----------+---------<br> 0       | server0  | 5432 | 2      | 0.500000  | primary<br> 1       | server1  | 5432 | 2      | 0.500000  | standby<br>


(2 rows)<br><br></div><b>2) force shutdown primary (server0), and standby (server1) server was promoted, below is the pgpool log from server1 during the failover:</b><br>Feb 18 15:31:45 server1 pgpool[2691]: connect_inet_domain_socket: connect() failed: No route to host<br>


Feb 18 15:31:45 server1 pgpool[2691]: make_persistent_db_connection: connection to server0(5432) failed<br>Feb 18 15:31:45 server1 pgpool[2691]: check_replication_time_lag: could not connect to DB node 0, check sr_check_user and sr_check_password<br>


Feb 18 15:31:45 server1 pgpool[2689]: connect_inet_domain_socket: connect() failed: No route to host<br>Feb 18 15:31:45 server1 pgpool[2689]: connection to server0(5432) failed<br>Feb 18 15:31:45 server1 pgpool[2689]: new_connection: create_cp() failed<br>


Feb 18 15:31:45 server1 pgpool[2689]: degenerate_backend_set: 0 fail over request from pid 2689<br>Feb 18 15:31:48 server1 pgpool[2689]: wd_create_send_socket: connect() reports failure (No route to host). You can safely ignore this while starting up.<br>


Feb 18 15:31:48 server1 pgpool[2653]: connect_inet_domain_socket: connect() failed: No route to host<br>Feb 18 15:31:48 server1 pgpool[2653]: make_persistent_db_connection: connection to server0(5432) failed<br>Feb 18 15:31:48 server1 pgpool[2653]: health check failed. 0 th host server0 at port 5432 is down<br>


Feb 18 15:31:48 server1 pgpool[2653]: health check retry sleep time: 5 second(s)<br>Feb 18 15:31:48 server1 pgpool[2653]: starting degeneration. shutdown host server0(5432)<br>Feb 18 15:31:48 server1 pgpool[2653]: Restart all children<br>


Feb 18 15:31:48 server1 pgpool[2653]: execute command: /home/pgpool/failover.py -d 0 -h server0 -p 5432 -D /opt/postgres/9.2/data -m 1 -H server1 -M 0 -P 0 -r 5432 -R /opt/postgres/9.2/data<br>Feb 18 15:31:49 server1 pgpool[2653]: find_primary_node_repeatedly: waiting for finding a primary node<br>


Feb 18 15:31:53 server1 postgres[1970]: [7-1] LOG:  trigger file found: /tmp/trigger_file0<br>Feb 18 15:31:53 server1 postgres[2597]: [3-1] FATAL:  terminating walreceiver process due to administrator command<br>Feb 18 15:31:53 server1 postgres[1970]: [8-1] LOG:  record with zero length at 0/64000418<br>


Feb 18 15:31:53 server1 postgres[1970]: [9-1] LOG:  redo done at 0/640003B8<br>Feb 18 15:31:53 server1 postgres[1970]: [10-1] LOG:  selected new timeline ID: 15<br>Feb 18 15:31:53 server1 postgres[1970]: [11-1] LOG:  archive recovery complete<br>


Feb 18 15:31:53 server1 postgres[1968]: [2-1] LOG:  database system is ready to accept connections<br>Feb 18 15:31:53 server1 postgres[3168]: [2-1] LOG:  autovacuum launcher started<br>Feb 18 15:31:54 server1 pgpool[2653]: find_primary_node: primary node id is 1<br>


Feb 18 15:31:54 server1 pgpool[2653]: starting follow degeneration. shutdown host server0(5432)<br>Feb 18 15:31:54 server1 pgpool[2653]: failover: 1 follow backends have been degenerated<br>Feb 18 15:31:54 server1 pgpool[2653]: failover: set new primary node: 1<br>


Feb 18 15:31:54 server1 pgpool[2653]: failover: set new master node: 1<br>Feb 18 15:31:54 server1 pgpool[3171]: connection received: host=server1.local port=58346<br>Feb 18 15:31:54 server1 pgpool[3170]: start triggering follow command.<br>


Feb 18 15:31:54 server1 pgpool[3170]: execute command: echo 0 server0 5432 /opt/postgres/9.2/data 1 server1 0 0 5432 /opt/postgres/9.2/data %<br>Feb 18 15:31:54 server1 pgpool[2691]: worker process received restart request<br>


Feb 18 15:31:54 server1 pgpool[2653]: failover done. shutdown host server0(5432)<br><br></div><b>3) boot up the failed server (server0) as usual, pgpool and database started up as usual.<br></b></div><div><b>after server0 boot up, i check the pool_nodes info, server0 pgpool still think server0 is the primary:</b><br>


[root@server0 ~]# psql -c &quot;show pool_nodes&quot; -p 9999<br> node_id | hostname | port | status | lb_weight |  role   <br>---------+----------+------+--------+-----------+---------<br> 0       | server0  | 5432 | 2      | 0.500000  | primary<br>


 1       | server1  | 5432 | 2      | 0.500000  | standby<br>(2 rows)<br><br></div><div>server1 pgpool still think server1 is the primary:<br>[root@server1 tmp]# psql -c &quot;show pool_nodes&quot; -p 9999<br> node_id | hostname | port | status | lb_weight |  role   <br>


---------+----------+------+--------+-----------+---------<br> 0       | server0  | 5432 | 3      | 0.500000  | standby<br> 1       | server1  | 5432 | 2      | 0.500000  | primary<br>(2 rows)<br></div><div><br></div><b>4) kill the database on server0 to prepare of the recovery</b><br>


</div><div><b>as soon as i kill the server0 database, pgpool log shows following:</b><br>Feb 18 15:33:56 server0 pgpool[2153]: execute command: /home/pgpool/failover.py -d 0 -h server0 -p 5432 -D /opt/postgres/9.2/data -m 1 -H server1 -M 0 -P 0 -r 5432 -R /opt/postgres/9.2/data<br>


Feb 18 15:33:57 server0 pgpool[2153]: find_primary_node_repeatedly: waiting for finding a primary node<br>Feb 18 15:33:57 server0 pgpool[2153]: find_primary_node: primary node id is 1<br>Feb 18 15:33:57 server0 pgpool[2153]: starting follow degeneration. shutdown host server0(5432)<br>


Feb 18 15:33:57 server0 pgpool[2153]: failover: 1 follow backends have been degenerated<br>Feb 18 15:33:57 server0 pgpool[2153]: failover: set new primary node: 1<br>Feb 18 15:33:57 server0 pgpool[2153]: failover: set new master node: 1<br>


Feb 18 15:33:57 server0 pgpool[2534]: start triggering follow command.<br>Feb 18 15:33:57 server0 pgpool[2534]: execute command: echo 0 server0 5432 /opt/postgres/9.2/data 1 server1 0 0 5432 /opt/postgres/9.2/data %<br>Feb 18 15:33:57 server0 pgpool[2190]: worker process received restart request<br>


Feb 18 15:33:57 server0 pgpool[2153]: failover done. shutdown host server0(5432)<br><br></div><div>pool_nodes shows:<br>[root@server0 ~]# psql -c &quot;show pool_nodes&quot; -p 9999<br> node_id | hostname | port | status | lb_weight |  role   <br>


---------+----------+------+--------+-----------+---------<br> 0       | server0  | 5432 | 3      | 0.500000  | standby<br> 1       | server1  | 5432 | 2      | 0.500000  | primary<br>(2 rows)<br></div><div><br><br></div>


<b>5) on server1, execute /usr/local/bin/pcp_recovery_node 10 localhost 9898 pgpool password 0</b><br></div>server 1 pgpool log shows following:<br>Feb 18 15:34:52 server1 pgpool[3209]: starting recovery command: &quot;SELECT pgpool_recovery(&#39;basebackup.sh&#39;, &#39;server0&#39;, &#39;/opt/postgres/9.2/data&#39;)&quot;<br>


Feb 18 15:34:53 server1 pgpool[3209]: 1st stage is done<br>Feb 18 15:34:53 server1 pgpool[3209]: check_postmaster_started: try to connect to postmaster on hostname:server0 database:postgres user:postgres (retry 0 times)<br>


Feb 18 15:34:53 server1 pgpool[3209]: check_postmaster_started: failed to connect to postmaster on hostname:server0 database:postgres user:postgres<br><br></div><b>The message &quot;fail to connect to postmaster on hostname server0&quot; continue until the command timeout.<br>


</b></div><div><b>it looks like the 1st stage command is done but pgpool on server1 did not call the pgpool_remote_start to start the server0 database engine although the script is there under postgresql data folder<br></b><br>


[root@server1 data]# ls<br>backup_label.old     data       pg_hba.conf    pg_notify            pg_stat_tmp  PG_VERSION       postmaster.pid<br>base                 global     pg_ident.conf  pgpool_remote_start  pg_subtrans  pg_xlog          recovery.done<br>


basebackup.sh        ning.test  pg_log         pg_serial            pg_tblspc    postgresql.conf  recovery.standby1<br>copy-base-backup.sh  pg_clog    pg_multixact   pg_snapshots         pg_twophase  postmaster.opts<br></div>


<div><br></div><b>during this period, pgpool log on server0 shows the following:</b><br>Feb 18 15:34:42 server0 pgpool[2567]: connection received: host=server0.local port=45366<br>Feb 18 15:34:46 server0 pgpool[2567]: connection received: host=server1.local port=39535<br>


Feb 18 15:34:52 server0 pgpool[2567]: connection received: host=server0.local port=45381<br>Feb 18 15:34:56 server0 pgpool[2565]: connection received: host=server1.local port=39557<br>Feb 18 15:35:02 server0 pgpool[2565]: connection received: host=server0.local port=45396<br>


Feb 18 15:35:06 server0 pgpool[2565]: connection received: host=server1.local port=39576<br>Feb 18 15:35:12 server0 pgpool[2565]: connection received: host=server0.local port=45410<br>Feb 18 15:35:16 server0 pgpool[2565]: connection received: host=server1.local port=39593<br>


Feb 18 15:35:22 server0 pgpool[2565]: connection received: host=server0.local port=45425<br>Feb 18 15:35:26 server0 pgpool[2565]: connection received: host=server1.local port=39612<br>Feb 18 15:35:32 server0 pgpool[2565]: connection received: host=server0.local port=45440<br>


Feb 18 15:35:36 server0 pgpool[2565]: connection received: host=server1.local port=39630<br>Feb 18 15:35:42 server0 pgpool[2565]: connection received: host=server0.local port=45455<br>Feb 18 15:35:46 server0 pgpool[2565]: connection received: host=server1.local port=39648<br>


<br></div><b>Below is the script of recovery_1st_stage_command = &#39;basebackup.sh&#39;</b><br>[root@server1 ~]# more /opt/postgres/9.2/data/basebackup.sh <br>#! /bin/sh<br># Recovery script for streaming replication.<br>


# This script assumes that DB node 0 is primary, and 1 is standby.<br>#<br>datadir=$1<br>desthost=$2<br>destdir=$3<br><br>echo &quot;datadir=$datadir&quot;<br>echo &quot;desthost=$desthost&quot;<br>echo &quot;destdir=$destdir&quot;<br>


<br>echo &quot;Executing basebackup.sh&quot; &gt;&gt; /var/log/replication.log<br><br>echo &quot;Executing start backup&quot; &gt;&gt; /var/log/replication.log<br>psql -c &quot;SELECT pg_start_backup(&#39;Streaming Replication&#39;, true)&quot; postgres<br>


<br>echo &quot;Executing rsync&quot; &gt;&gt; /var/log/replication.log<br>echo &quot;rsync -C -a --progress --delete -e ssh --exclude postgresql.conf --exclude postmaster.pid --exclude postmaster.<br>opts --exclude pg_log --exclude pg_xlog --exclude recovery.conf $datadir/ $desthost:$destdir/&quot;<br>


<br>echo &quot;Renaming recovery conf file&quot; &gt;&gt;/var/log/replication.log<br>echo &quot;ssh -T $desthost mv $destdir/recovery.done $destdir/recovery.conf&quot;<br>ssh -T $desthost mv $destdir/recovery.done $destdir/recovery.conf<br>


<br>echo &quot;Removing trigger file&quot;<br>ssh -T $desthost rm -f /tmp/trigger_file0 <br><br>echo &quot;Executing stop backup&quot; &gt;&gt; /var/log/replication.log<br>psql -c &quot;SELECT pg_stop_backup()&quot; postgres<br>


<br>echo &quot;existing basebackup.sh&quot; &gt;&gt; /var/log/replication.log<br><br></div><b>Manually execute the command on server1 return the following result:</b><br><br>[root@server1 data]# ./basebackup.sh /opt/postgres/9.2/data/ server0 /opt/postgres/9.2/data/<br>


datadir=/opt/postgres/9.2/data/<br>desthost=server0<br>destdir=/opt/postgres/9.2/data/<br> pg_start_backup <br>-----------------<br> 0/76000020<br>(1 row)<br><br>rsync -C -a --progress --delete -e ssh --exclude postgresql.conf --exclude postmaster.pid --exclude postmaster.opts --exclude pg_log --exclude pg_xlog --exclude recovery.conf /opt/postgres/9.2/data// server0:/opt/postgres/9.2/data//<br>


ssh -T server0 mv /opt/postgres/9.2/data//recovery.done /opt/postgres/9.2/data//recovery.conf<br>Removing trigger file<br>NOTICE:  WAL archiving is not enabled; you must ensure that all required WAL segments are copied through other means to complete the backup<br>


 pg_stop_backup <br>----------------<br> 0/760000E0<br>(1 row)<br><br></div>Thanks and please advise.<span><font color="#888888"><br><br></font></span></div><span><font color="#888888"><div>
Ning</div></font></span><div><div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Feb 17, 2013 at 7:05 AM, 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">Hi,<br>
<br>
It seems the standby was unable to start up. Can you show standby<br>
PostgreSQL&#39;s log? Maybe we could find the cause of the problem.<br>
<div>--<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>
</div><div><div>&gt; Hi Tatsuo,<br>
&gt; Thank you so much for your reply.<br>
&gt; Actually in my case, i was using the pcp_recovery command and execute it on<br>
&gt; the current primary server.<br>
&gt; However, if the remote node (recover node) database is off, i got the<br>
&gt; following message on the primary server pgpool log:<br>
&gt;<br>
&gt; Jan 31 16:58:10 server0 pgpool[2723]: starting recovery command: &quot;SELECT<br>
&gt; pgpool_recovery(&#39;basebackup.sh&#39;, &#39;server1&#39;, &#39;/opt/postgres/9.2/data&#39;)&quot;<br>
&gt; Jan 31 16:58:11 server0 pgpool[2723]: 1st stage is done<br>
&gt; Jan 31 16:58:11 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:postgres user:postgres<br>
&gt; (retry 0 times)<br>
&gt; Jan 31 16:58:11 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:postgres user:postgres<br>
&gt; Jan 31 16:58:13 server0 pgpool[2719]: connection received:<br>
&gt; host=server0.local port=58446<br>
&gt; Jan 31 16:58:14 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:postgres user:postgres<br>
&gt; (retry 1 times)<br>
&gt; Jan 31 16:58:14 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:postgres user:postgres<br>
&gt; Jan 31 16:58:14 server0 pgpool[2719]: connection received:<br>
&gt; host=server1.local port=39928<br>
&gt; Jan 31 16:58:17 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:postgres user:postgres<br>
&gt; (retry 2 times)<br>
&gt; Jan 31 16:58:17 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:postgres user:postgres<br>
&gt; Jan 31 16:58:20 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:postgres user:postgres<br>
&gt; (retry 3 times)<br>
&gt; Jan 31 16:58:20 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:postgres user:postgres<br>
&gt; Jan 31 16:58:23 server0 pgpool[2719]: connection received:<br>
&gt; host=server0.local port=58464<br>
&gt; Jan 31 16:58:23 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; (retry 0 times)<br>
&gt; Jan 31 16:58:23 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; Jan 31 16:58:26 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; (retry 1 times)<br>
&gt; Jan 31 16:58:26 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; Jan 31 16:58:26 server0 pgpool[2719]: connection received:<br>
&gt; host=server1.local port=39946<br>
&gt; Jan 31 16:58:29 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; (retry 2 times)<br>
&gt; Jan 31 16:58:29 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; Jan 31 16:58:32 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; (retry 3 times)<br>
&gt; Jan 31 16:58:32 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; Jan 31 16:58:33 server0 pgpool[2719]: connection received:<br>
&gt; host=server0.local port=58483<br>
&gt; Jan 31 16:58:35 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; (retry 4 times)<br>
&gt; Jan 31 16:58:35 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; Jan 31 16:58:38 server0 pgpool[2723]: check_postmaster_started: try to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt; (retry 5 times)<br>
&gt; Jan 31 16:58:38 server0 pgpool[2723]: check_postmaster_started: failed to<br>
&gt; connect to postmaster on hostname:server1 database:template1 user:postgres<br>
&gt;<br>
&gt; here is the exact command i execute on server0 to recover server1,<br>
&gt; /usr/local/bin/pcp_recovery_node 10 localhost 9898 pgpool password 1<br>
&gt;<br>
&gt; Do you have any idea why?<br>
&gt;<br>
&gt; Just FYI, we cannot pgpoolAdmin in our environment.<br>
&gt;<br>
&gt;<br>
</div></div><div><div>&gt; On Sun, Feb 17, 2013 at 12:13 AM, Tatsuo Ishii &lt;<a href="mailto:ishii@postgresql.org" target="_blank">ishii@postgresql.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; &gt; Hi all,<br>
&gt;&gt; &gt; I have the following question regarding the recovery of a filed Primary<br>
&gt;&gt; &gt; Database Server.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Question 1: in the documentation, under Streaming Replication Online<br>
&gt;&gt; &gt; Recovery section.<br>
&gt;&gt; &gt;<br>
&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;<br>
&gt;&gt; &gt; in steps 6:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;    1. After completing online recovery, pgpool-II will start PostgreSQL<br>
&gt;&gt; on<br>
&gt;&gt; &gt;    the standby node. Install the script for this purpose on each DB<br>
&gt;&gt; &gt; nodes. Sample<br>
&gt;&gt; &gt;    script &lt;<a href="http://www.pgpool.net/docs/latest/pgpool_remote_start" target="_blank">http://www.pgpool.net/docs/latest/pgpool_remote_start</a>&gt; is<br>
&gt;&gt; &gt;    included in &quot;sample&quot; directory of the source code. This script uses<br>
&gt;&gt; ssh.<br>
&gt;&gt; &gt;    You need to allow recovery_user to login from the primary node to the<br>
&gt;&gt; &gt;    standby node without being asked password.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; To my understanding, i think the postgreSQL doesn&#39;t not need to be online<br>
&gt;&gt; &gt; for the recovery process right? Since later on it mentions that<br>
&gt;&gt; &gt; pgpool_remote_start will start up the DB on the failed node.<br>
&gt;&gt;<br>
&gt;&gt; Acually standby PostgreSQL node should not be started.<br>
&gt;&gt;<br>
&gt;&gt; &gt; Question 2: in my configuration, i have 2 pgpool server with two<br>
&gt;&gt; backends.<br>
&gt;&gt; &gt; Will it work for oneline recovery?<br>
&gt;&gt;<br>
&gt;&gt; Yes, but online recovery process should be initiated by one of pgpool,<br>
&gt;&gt; not both. If you enable pgpool-II 3.2&#39;s watchdog, it will take care of<br>
&gt;&gt; neccessary interlocking.<br>
&gt;&gt;<br>
&gt;&gt; &gt; Question 3: when the failed node comes back online, should i use<br>
&gt;&gt; &gt; pcp_recovery from DB primary or should i use pcp_attach on the failed<br>
&gt;&gt; node<br>
&gt;&gt; &gt; to recover the failed system? Actually in my case, both methods do not<br>
&gt;&gt; &gt; recover my system every time.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;m confused. Didn&#39;t you start the online recovery process by using<br>
&gt;&gt; pcp_recovery_node?(of course you could do it via pgpoolAdmin).<br>
&gt;&gt;<br>
&gt;&gt; Anyway pcp_recovery_node automatically attach recovered node, and you<br>
&gt;&gt; don&#39;t need to execute pcp_attach_node.<br>
&gt;&gt;<br>
&gt;&gt; I suggest you read tutorial:<br>
&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; --<br>
&gt;&gt; Tatsuo Ishii<br>
&gt;&gt; SRA OSS, Inc. Japan<br>
&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; Japanese: <a href="http://www.sraoss.co.jp" target="_blank">http://www.sraoss.co.jp</a><br>
&gt;&gt;<br>
</div></div></blockquote></div><br></div></div></div></div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>