pgpool2.git / summary / log / commit / refs
commit 6d34482739e77be7d9c4f841bb760eb7d0596fbc
Author: Tatsuo Ishii <ishii@sraoss.co.jp>
Date: Sat Jan 30 02:23:39 2021 +0000
Enhance online recovery script for native replication and snapshot isolation mode in pgpool_setup.
Use pg_stat_replication to get the log difference between main and
replica node while executing second stage so that reduces the number
of SQL issued.
src/test/pgpool_setup.in | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/src/test/pgpool_setup.in b/src/test/pgpool_setup.in
index dfc767c61..0cd57b214 100644
--- a/src/test/pgpool_setup.in
+++ b/src/test/pgpool_setup.in
@@ -564,22 +564,13 @@ do
sec=`expr $sec + 1`
if [ $pgversion -ge 100 ];then
- p_lsn=`psql -p $4 -c "SELECT pg_current_wal_lsn()" postgres|sed -n 3p|sed 's/ //'`
- s_lsn=`psql -p $6 -c "SELECT pg_last_wal_replay_lsn()" postgres|sed -n 3p|sed 's/ //'`
+ result=`psql -p $4 -c "SELECT sent_lsn = replay_lsn FROM pg_stat_replication where application_name = 'server$recovery_node'" postgres|sed -n 3p|sed 's/ //'`
else
- p_lsn=`psql -p $4 -c "SELECT pg_current_xlog_lsn()" postgres|sed -n 3p|sed 's/ //'`
- s_lsn=`psql -p $6 -c "SELECT pg_last_xlog_replay_lsn()" postgres|sed -n 3p|sed 's/ //'`
+ result=`psql -p $4 -c "SELECT sent_location = replay_location FROM pg_stat_replication where application_name = 'server$recovery_node'" postgres|sed -n 3p|sed 's/ //'`
fi
- if [ $pgversion -ge 100 ];then
- sql=`echo "SELECT pg_wal_lsn_diff('$p_lsn','$s_lsn');"`
- else
- sql=`echo "SELECT pg_xlog_location_diff('$p_lsn','$s_lsn');"`
- fi
-
- diff=`psql -p $4 -c "$sql" postgres|sed -n 3p|sed 's/ //g'`
-# echo "p_lsn: $p_lsn s_lsn: $s_lsn diff: $diff"
- if [ $diff -le 0 ];then
+ # echo "result: $result"
+ if [ "$result" = "t" ];then
sec=$MAX_DURATION
fi
sleep 1
[parent: 3a36284c53c1]