pgpool-II 2.10故障节点动态恢复 基于pgpool-ii的集群配置(五)

来源:互联网 发布:上海市软件协会 编辑:程序博客网 时间:2024/04/29 09:50

该恢复过程为手工触发脚本,半自动执行。

su - pg93

cd $PGDATA

       上传basebackup.sh文件到各个节点的相同目录中。

首先根据实际主备节点IP编辑脚本内容

#! /bin/sh

# Recovery script for streamingreplication.

# This script assumes that DB node 0 isprimary, and 1 is standby.

# ./basebackup.sh /home/pg93/pg_root192.168.160.128

# ifconfig eth0 | grep "inetaddr:" | awk '{print $2}' | cut -c 6-

# `ifconfig eth0 | grep "inetaddr" | awk -F: '{print $2}' | awk '{print $1}'`

# `ifconfig eth0 | grep "inet" |awk '{print $2}'`

datahost=$1

datadir="/home/pg93/pg_root"   主节点数据库目录

desthost=$2

destdir="/home/pg93/pg_root"   备节点数据库目录

pgpoolhost=172.16.0.195      pgpool-ii 的IP

h0=172.16.0.195               主库IP

h1=172.16.0.196               备库IP

pgpool="/opt/pgpool/bin"        pgpool的安装目录

pghome="/opt/pgsql932/bin"     pg数据库管理系统的目录

ssh -T $datahost psql -c "SELECTpg_start_backup('Streaming Replication', true)" postgres

rsync -C -a --delete -e ssh --excludepostgresql.conf --exclude postmaster.pid \

--exclude postmaster.opts --exclude pg_log--exclude pg_xlog \

--exclude recovery.conf $datadir/$desthost:$destdir/

ssh -T $desthost rm $destdir/recovery.done

cat > $datadir/recovery.conf <<EOF

standby_mode = 'on'

recovery_target_timeline = 'latest'

primary_conninfo = 'host=$datahostport=1999 user=replica password=replica'

trigger_file = '/tmp/trigger_file'

EOF

scp $datadir/recovery.confpg93@$desthost:$destdir

rm -rf $datadir/recovery.conf

ssh -T $datahost psql -c "SELECTpg_stop_backup()" postgres

ssh -f -n -T $desthost $pghome/pg_ctl start-D /home/pg93/pg_root >/dev/null 2>&1

ssh -f -n -T $desthost $pghome/bin/pg_ctlstart -D /home/pg93/pg_root >/dev/null 2>&1

if  [$desthost = $h0 ]; then

   /usr/bin/ssh -T $pgpoolhost $pgpool/pcp_attach_node -d 5 $pgpoolhost9898 postgres cuipeng 0;

    /usr/bin/ssh-T $pgpoolhost $pgpool/pcp_promote_node -d 5 $pgpoolhost 9898 postgres cuipeng0;

  /usr/bin/ssh -T $pgpoolhost $pgpool/pcp_attach_node -d 5 $pgpoolhost9898 postgres cuipeng 1

elif [ $desthost = $h1 ]; then

   /usr/bin/ssh -T $pgpoolhost $pgpool/pcp_attach_node -d 5 $pgpoolhost9898 postgres cuipeng 1;

   /usr/bin/ssh -T $pgpoolhost $pgpool/pcp_promote_node -d 5 $pgpoolhost9898 postgres cuipeng 1;

   /usr/bin/ssh -T $pgpoolhost $pgpool/pcp_attach_node -d 5 $pgpoolhost9898 postgres cuipeng 0

 else

   exit 0;

fi

   exit 0;

 

1.1.1     脚本使用方法

当某个数据节点宕机之后,切换到当前集群中主节点目录下找到basebackup.sh文件

./basebackup.sh  当前主节点IP  要恢复的故障节点IP

0 0
原创粉丝点击