关于repmgr+vip的部分改进
Posted 李石岩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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
通过这个文件修改以后,部分解决了数据库vip验证的问题。
以上是关于关于repmgr+vip的部分改进的主要内容,如果未能解决你的问题,请参考以下文章