关于repmgr+vip的部分改进

实践是知识的母亲,知识是生活的明灯。这篇文章主要讲述关于repmgr+vip的部分改进相关的知识,希望能为你提供帮助。
以下链接是之前配置做的部署。
??https://blog.51cto.com/lishiyan/2595607??
repmgr这个在进行配置的时候,发现数据库负载较高(当然因为上边有很多组件),repmgr这个中间件,有时候也会导致断掉连接,因此我需要对该配置文件进行优化。


主要优化点就是防止意外提升到备库。
以下是修改repmgr_promote.sh文件
-bash-4.2$ more repmgr_promote.sh
#!/bin/bash


#发生故障后,数据库进行failover的脚本
?function failover()?
      echo "failover开始切换" > > /var/lib/pgsql/repmgr.log
      /usr/pgsql-11/bin/repmgr standby promote -f /var/lib/pgsql/repmgr.conf --log-to-file > > /var/lib/pgsql/repmgr.log
      echo "failover已经切换完毕" > > /var/lib/pgsql/repmgr.log



#删除对端VIP的脚本
function delete_vip()


      /bin/ssh -t postgres@10.10.10.232 "/bin/sudo /usr/sbin/ip addr del 10.10.10.111/24 dev ens37"   > > /var/lib/pgsql/repmgr.log



#在本机上添加vip的脚本
function add_vip()
      /bin/sudo /usr/sbin/ip addr add 10.10.10.111/24 dev ens37   > > /var/lib/pgsql/repmgr.log



#检查是否能够telnet通,如果不通,则进行后续failover操作。
result=`echo -e "\\n" | telnet 10.10.10.232 5432 2> /dev/null | grep Connected | wc -l`


# 如果仍然能够telnet通,则停止后续操作
# 如果不能telnet通,则进行后续failover操作。
if [ $result -eq 1 ]; then
            echo "数据库仍然能够提供服务,推出" > > /var/lib/pgsql/repmgr.log
            exit 0
else
            echo "["`date "+%Y-%m-%d %H:%M:%S"`"]: 删除 VIP in 232 开始操作中" > > /var/lib/pgsql/repmgr.log
            delete_vip
            echo "["`date "+%Y-%m-%d %H:%M:%S"`"]: 删除 VIP in 232 完成" > > /var/lib/pgsql/repmgr.log
            echo "现在端口已经不通,开始进行failover." > > /var/lib/pgsql/repmgr.log
            echo "["`date "+%Y-%m-%d %H:%M:%S"`"]: promote start" > > /var/lib/pgsql/repmgr.log
            failover      
            echo "["`date "+%Y-%m-%d %H:%M:%S"`"]: promote finish" > > /var/lib/pgsql/repmgr.log
fi


# 检查数据库状态 ,备库变成主库后进行操作。


standby_flg=`psql -p 5432 -U repmgr -h localhost -At -c "SELECT pg_is_in_recovery(); "`
##if [ $? -eq 0 ]; then
if [ $standby_flg == f ]; then
        echo "数据库发生切换,并且提升为主库,开始对VIP进行源端删除"
        echo "["`date "+%Y-%m-%d %H:%M:%S"`"]: 删除 VIP in 232 开始操作中" > > /var/lib/pgsql/repmgr.log
            delete_vip
        echo "["`date "+%Y-%m-%d %H:%M:%S"`"]: 删除 VIP in 232 完成" > > /var/lib/pgsql/repmgr.log
        echo "["`date "+%Y-%m-%d %H:%M:%S"`"]: 添加 VIP 开始操作中" > > /var/lib/pgsql/repmgr.log
            add_vip
        echo "["`date "+%Y-%m-%d %H:%M:%S"`"]: 添加 VIP 完成" > > /var/lib/pgsql/repmgr.log
        exit 0


elif [ $standby_flg == t ];
        then
          echo e "`date +%F\\ %T`: 数据库提升失败,该数据库仍然为备库, 推出!\\n" > > /var/lib/pgsql/repmgr.log
          exit 0
?fi
?
?
【关于repmgr+vip的部分改进】通过这个文件修改以后,部分解决了数据库vip验证的问题。

    推荐阅读