实践是知识的母亲,知识是生活的明灯。这篇文章主要讲述关于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验证的问题。
推荐阅读
- 简单介绍nginx反向代理及使用
- 简单介绍Windows中将Nginx添加为服务的问题
- #yyds干货盘点#javascript学习系列(11):数组中的findIndex方法
- k8s集群线上某些特殊情况强制删除 StatefulSet 的 Pod 隐患考虑()
- Tomcat安全优化 #yyds干货盘点#
- 揭秘字节跳动云原生Spark History 服务 UIService
- 提前规划35岁的生活 未雨绸缪
- # yyds干货盘点 # Python网络爬虫之js逆向之远程调用(rpc)免去抠代码补环境简介
- 基于ARQ反馈的无人机通信中继自主选择研究