在数据库/存储语境里,“异步复制(async replication)”本身的特点就是:主节点提交成功后不等待从节点确认就返回,所以理论上“主挂了且还没同步的数据”就可能丢。
要“减少丢数”,核心思路是:在不完全退化为同步复制的前提下,尽量降低未同步窗口和数据丢失概率。下面按常见手段说明。
异步复制丢数 = 主宕机时“已提交但未传到从”的数据。
延迟越低,丢的数越少。
做法:
目标:把“未同步数据量”从秒级降到毫秒级。
介于同步和异步之间:
效果:
示例:
rpl_semi_sync_master_enabledsynchronous_commit = remote_write(偏半同步)这是“减少丢数”最常用方案。
即使异步,也可让从更“稳”:
fsyncwal_writer_delay 等参数这样即便主挂,从已落盘的数据不丢。
如果业务可接受一点延迟:
例子:
本质:用“弱同步”换“低丢数”。
异步复制不可避免少量丢,可用业务手段补:
适合:
不要所有数据一刀切:
| 数据类型 | 策略 |
|---|---|
| 金融交易 | 同步 / 半同步 |
| 日志 | 纯异步 |
| 用户行为 | 异步 + 对账 |
很多丢数是切换造成的:
做法:
异步复制无法“零丢数”,只能:
如果你说的是 MySQL / Redis / PG / Kafka 中某一种,我可以给具体参数和架构示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。