背景
云顾问 - 混沌演练提供模拟云数据库 PostgreSQL 主备切换的场景故障动作,可以模拟 PostgreSQL 因故发生主备切换的场景。进行主备切换演练,旨在帮助开发人员在更加复杂和真实的环境中进行系统测试和实验,以发现可能存在的问题和风险。通过混沌工程的实验和测试,开发人员可以更加全面地了解系统的工作方式和性能特征,并针对不同的故障场景制定相应的应对措施和策略,从而提高系统的稳定性和可用性。
注意:
PostgreSQL 在主备切换之后,会进行备机的重建与迁移。备机就绪的时间与数据量有关,若出现执行失败,请稍后重试执行。同时,不要频繁进行主备切换演练,在切换完成之后,建议等待10~20分钟再执行二次切换。PostgreSQL切换主备实例参考文档。
主备切换影响
主备切换过程中会有闪断,请确保应用程序有重连机制。
如果主实例挂载的有只读实例,主备切换后只读实例会有分钟级延迟。
演练实施
步骤一:演练准备
一台 PostgreSQL 实例。示例实例为一台主节点位于广州四区,备节点位于广州六区的跨 AZ PostgreSQL 实例。
![](https://qcloudimg.tencent-cloud.cn/image/document/12746d1e9351b5c0e761118eb5fc0199.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/12746d1e9351b5c0e761118eb5fc0199.png)
步骤二:演练编排
1. 登录 云顾问 > 混沌演练控制台,进入演练管理页面,单击新建演练。
![](https://qcloudimg.tencent-cloud.cn/image/document/1501f204502fced1c1acd665b73b8727.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/1501f204502fced1c1acd665b73b8727.png)
2. 单击左下角跳过,新建空白演练。
![](https://qcloudimg.tencent-cloud.cn/image/document/ba2659e96a2d8c351da3879ed1bc8b7b.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/ba2659e96a2d8c351da3879ed1bc8b7b.png)
3. 填写演练信息,选择对象类型 PostgreSQL。然后点击添加实例,添加需要进行演练的实例。
![](https://qcloudimg.tencent-cloud.cn/image/document/b077f27d6d6ca10cd05f12ed94067982.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b077f27d6d6ca10cd05f12ed94067982.png)
4. 选择实例之后,点击演练动作模块中立即添加。
![](https://qcloudimg.tencent-cloud.cn/image/document/a2c372f254b18c66d34f0545e67983f5.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/a2c372f254b18c66d34f0545e67983f5.png)
5. 添加主备切换故障动作。然后点击下一步。
![](https://qcloudimg.tencent-cloud.cn/image/document/7784fc32683ae4cf9df91a428c0c7761.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/7784fc32683ae4cf9df91a428c0c7761.png)
6. 配置动作参数,动作参数处关闭强制切换,单击确认。
![](https://qcloudimg.tencent-cloud.cn/image/document/3e1a59795f56d7179c45170d0fa30006.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/3e1a59795f56d7179c45170d0fa30006.png)
说明:
强制切换: 若开启,将不会校验主备切换条件,直接进行主备切换;若关闭,则需要通过主备切换条件校验之后才会进行主备切换。
![](https://qcloudimg.tencent-cloud.cn/image/document/aef832fc18e6fa41ed49944d971dee39.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/aef832fc18e6fa41ed49944d971dee39.png)
7. 单击下一步,进入全局配置,全局配置请参见 快速入门。
![](https://qcloudimg.tencent-cloud.cn/image/document/cc7e3f4516567f284502ce6115109e57.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/cc7e3f4516567f284502ce6115109e57.png)
8. 确认无误后,单击提交。
![](https://qcloudimg.tencent-cloud.cn/image/document/dc063e457503d5e2d78ec35c7c2b09d8.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/dc063e457503d5e2d78ec35c7c2b09d8.png)
9. 点击演练详情,进入演练详情页,并开始演练。
![](https://qcloudimg.tencent-cloud.cn/image/document/d3c80c831b45221fc57c07802c4bedf0.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d3c80c831b45221fc57c07802c4bedf0.png)
步骤三:执行演练
1. 观察演练前实例可用性信息数据,并关注演练前实例的主节点、备节点。
![](https://qcloudimg.tencent-cloud.cn/image/document/721dd18f1d18c96760d4dc5f671925f5.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/721dd18f1d18c96760d4dc5f671925f5.png)
2. 由于演练为手动推进,所以需要手动执行故障动作。可单击动作卡片中的执行启动故障注入。
![](https://qcloudimg.tencent-cloud.cn/image/document/eb837148118f81386c94e9728e56c17e.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/eb837148118f81386c94e9728e56c17e.png)
3. 故障注入过程中,可在 PostgreSQL控制台 对应实例的基本信息模块中观察到实例的状态为切换中。
![](https://qcloudimg.tencent-cloud.cn/image/document/24922fb294cb88d1f0e7aac53181f185.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/24922fb294cb88d1f0e7aac53181f185.png)
4. 故障注入成功之后,可点击动作卡片的空白处,查看动作详情。可以看到,实例的主节点已切换。
![](https://qcloudimg.tencent-cloud.cn/image/document/52da5a937e17e53c480335db954bf893.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/52da5a937e17e53c480335db954bf893.png)
5. 在 PostgreSQL控制台 对应实例的详情页中,可以确认主节点已经成功切换。
![](https://qcloudimg.tencent-cloud.cn/image/document/838ea382f3ed5cbc37da101e1d3c167a.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/838ea382f3ed5cbc37da101e1d3c167a.png)
6. 执行故障恢复动作,可将实例部署状态恢复至故障前状态。(建议等待10分钟之后再执行恢复动作)
![](https://qcloudimg.tencent-cloud.cn/image/document/c06176a9db8c8a77db6bc3ba08703ae9.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c06176a9db8c8a77db6bc3ba08703ae9.png)
7. 故障恢复动作执行成功之后,可点击动作卡片的空白处,查看动作详情。可以看到,实例的主节点已切换。
![](https://qcloudimg.tencent-cloud.cn/image/document/61613aef7c01ae1da0f9dbebc13da251.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/61613aef7c01ae1da0f9dbebc13da251.png)
8. 在 PostgreSQL控制台 对应实例的详情页中,可以确认主节点已经成功切到故障前的主可用区。
![](https://qcloudimg.tencent-cloud.cn/image/document/fb93d80429b6510ee2e7e2f80b18fff8.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/fb93d80429b6510ee2e7e2f80b18fff8.png)