异步复制(Asynchronous Replication)在故障恢复时,核心目标是:在尽量不丢数据或少丢数据的前提下,快速恢复服务可用性。由于异步复制本身不保证主从数据强一致,恢复过程比同步复制更复杂,需要结合日志、位点、补偿机制来权衡一致性与可用性。
下面从常见故障场景 + 恢复策略 + 实践建议来说明。
异步复制的典型特征:
因此,故障恢复的本质是:
在“可用性优先”和“数据一致性”之间做补偿
判断主库是否真的不可用
选择一个从库作为新主
提升新主
原主恢复后的处理
⚠️ 可能丢数据
✅ 常见优化:
| 方法 | 适用场景 |
|---|---|
| 全量重建从库 | 差异过大 |
| 增量修复 | 差异较小 |
| 数据校验工具 | 定期巡检 |
工具示例:
pt-table-checksum / pt-table-syncpg_rewind异步复制必须能回答:
“从库复制到哪里了?”
常见机制:
恢复时:
依赖组件:
特点:
虽然不是异步复制,但很多系统会:
✅ 优点:
在应用层:
✅ 常见于:
| 目标 | 异步复制表现 |
|---|---|
| 可用性 | ✅ 高 |
| 一致性 | ❌ 弱 |
| 故障恢复速度 | ✅ 快 |
| 数据零丢失 | ❌ 不能保证 |
异步复制适合:
- 可接受少量数据丢失
- 对可用性要求极高
- 故障恢复依赖“补偿而不是强一致”
✅ 生产环境必须做:
异步复制的故障恢复 = 选新主 + 日志对齐 + 容忍少量数据丢失 + 应用层补偿
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。