yashandb教程FG085-YashanDB主库故障切换
内容简介
本文档风哥主要介绍YashanDB数据库的主库故障切换方法和实战经验,包括主库故障的检测、从库提升为主库的操作步骤、故障切换后的处理等内容。风哥教程参考yashandb官方文档高可用与容灾部分,结合生产环境实际案例进行详细讲解。
目录大纲
Part01-基础概念与理论知识
1.1 主从架构
YashanDB的主从架构是一种高可用解决方案,主要包括:
- 主库(Primary):负责处理所有的写操作和读操作
- 从库(Standby):通过复制机制从主库同步数据,可用于读操作和故障切换
- 复制机制:YashanDB使用物理复制或逻辑复制将主库的数据同步到从库
1.2 主库故障的影响
主库故障会对系统产生以下影响:
- 无法处理写操作:所有写请求会失败
- 读操作可能受影响:如果应用只连接主库
- 业务中断:如果没有及时进行故障切换
- 数据一致性风险:如果故障处理不当
1.3 故障切换的原则
主库故障切换应遵循以下原则:
- 快速切换:最小化业务中断时间
- 数据一致性:确保切换后数据不丢失
- 自动化:减少人工干预,提高可靠性
- 可回滚:在切换失败时能够回滚到原始状态
- 可监控:实时监控切换过程和结果
Part02-生产环境规划与建议
2.1 高可用架构规划
YashanDB高可用架构规划应考虑:
- 部署模式:同城双活、异地灾备等
- 网络架构:确保网络连接稳定
- 存储规划:使用高性能、高可靠的存储
- 服务器配置:主从服务器配置应保持一致
2.2 故障检测机制
故障检测机制包括:
- 心跳检测:定期发送心跳包检测主库状态
- 连接检测:监控主库连接状态
- 服务检测:检查主库服务是否正常运行
- 数据检测:检查主从数据同步状态
2.3 故障切换策略
故障切换策略包括:
- 手动切换:由运维人员手动执行切换操作
- 半自动切换:系统检测到故障后,由运维人员确认后执行切换
- 自动切换:系统检测到故障后自动执行切换操作
Part03-生产环境项目实施方案
3.1 主从配置
配置YashanDB主从复制:
CREATE USER repl WITH REPLICATION PASSWORD ‘repl123’;
CREATE USER
yasdump -h localhost -U fgedu -d fgedudb -f /backup/fgedudb_backup.sql
[INFO] Starting backup…
[INFO] Backup completed successfully!
yassql -h localhost -U fgedu -d fgedudb -f /backup/fgedudb_backup.sql
[INFO] Starting restore…
[INFO] Restore completed successfully!
ALTER SYSTEM SET primary_conninfo = ‘host=192.168.1.1 port=5432 user=repl password=repl123 dbname=fgedudb’;
ALTER SYSTEM SET
SELECT pg_start_replication();
pg_start_replication
——————-
t
3.2 故障检测配置
配置故障检测:
# 添加主库状态监控项
UserParameter=yashandb.primary.status,/usr/local/bin/check_primary_status.sh
Configuration updated
#!/bin/bash
# check_primary_status.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 检查主库连接
yassql -h 192.168.1.1 -U fgedu -d fgedudb -c “SELECT 1” > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo “1”
else
echo “0”
fi
1
3.3 故障切换脚本
编写故障切换脚本:
#!/bin/bash
# master_switchover.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 停止从库复制
echo “Stopping replication on standby…”
yassql -h localhost -U fgedu -d fgedudb -c “SELECT pg_stop_replication();”
# 提升从库为主库
echo “Promoting standby to primary…”
yasboot promote -D /yashandb/fgdata_standby
# 检查新主库状态
echo “Checking new primary status…”
yasboot status -D /yashandb/fgdata_standby
echo “Master switchover completed!”
Stopping replication on standby…
Promoting standby to primary…
Checking new primary status…
[INFO] YashanDB server is running.
[INFO] Role: PRIMARY
Master switchover completed!
Part04-生产案例与实战讲解
4.1 YashanDB主库故障切换实战
执行主库故障切换:
# 在主库执行
shutdown -h now
Broadcast message from root@fgedu.net.cn
The system is going down for halt NOW!
yasboot status -D /yashandb/fgdata_standby
[INFO] YashanDB server is running.
[INFO] Replication status: ERROR
[INFO] Role: STANDBY
./master_switchover.sh
Stopping replication on standby…
Promoting standby to primary…
Checking new primary status…
[INFO] YashanDB server is running.
[INFO] Role: PRIMARY
Master switchover completed!
4.2 故障切换后的处理
故障切换后的处理步骤:
# 修改应用配置文件,将数据库连接地址指向新主库
vi /app/config/database.yml
# 重启应用
systemctl restart app
[INFO] App restarted successfully!
# 启动原主库
yasboot start -D /yashandb/fgdata
# 配置原主库连接新主库
ALTER SYSTEM SET primary_conninfo = ‘host=192.168.1.2 port=5432 user=repl password=repl123 dbname=fgedudb’;
# 启动复制
SELECT pg_start_replication();
[INFO] YashanDB server started successfully!
ALTER SYSTEM SET
pg_start_replication
——————-
t
4.3 故障切换验证
验证故障切换结果:
SELECT * FROM v$instance;
instance_name | status | role
——————————–
fgedudb | running | PRIMARY
INSERT INTO fgedu.test (id, name) VALUES (1, ‘test’);
INSERT 0 1
SELECT * FROM fgedu.test;
id | name
———–
1 | test
SELECT * FROM v$replication_status;
role | status | apply_lag
————————
PRIMARY | ACTIVE | 0
STANDBY | ACTIVE | 0
风哥提示:
主库故障切换是一项关键的运维操作,应在测试环境中反复演练,确保在生产环境中能够快速、准确地执行。同时,故障切换后应及时检查系统状态,确保所有服务正常运行。
Part05-风哥经验总结与分享
5.1 主库故障切换最佳实践
- 建立完善的监控系统:实时监控主库状态
- 制定详细的故障切换预案:明确切换步骤和责任分工
- 定期进行故障切换演练:提高运维人员的操作熟练度
- 使用自动化工具:减少人工干预,提高切换速度
- 建立回滚机制:在切换失败时能够快速回滚
- 记录切换过程:详细记录切换步骤和结果,便于后续分析
5.2 常见问题与解决方案
- 切换后数据不一致:检查主从同步状态,确保数据完全同步后再进行切换
- 切换后应用连接失败:检查应用连接配置,确保指向新主库
- 切换后从库无法同步:检查网络连接,重新配置复制
- 切换时间过长:优化切换脚本,减少切换步骤
5.3 故障切换经验分享
在实际生产环境中,主库故障切换应注意以下几点:
- 选择合适的切换时机:避免业务高峰期
- 提前通知相关人员:确保所有相关人员了解切换计划
- 准备必要的工具和脚本:确保切换过程顺利
- 监控切换过程:实时监控切换状态,及时处理异常
- 切换后验证:确保系统正常运行,数据一致
- 总结经验教训:分析切换过程中的问题,持续改进
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
学习交流加群风哥QQ113257174
风哥提示:主库故障切换应在测试环境中反复演练,确保在生产环境中能够快速、准确地执行
更多学习教程公众号风哥教程itpux_com
from yashandb视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
