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]