主从同步延迟——Java全栈知识(35)

为什么会发生主从同步延迟 ?

当数据库主库有较大更新并发操作时,可能会导致主从同步延迟,因为从库里面读取 binlog 的线程仅有一个,当某个SQL 在从库上执行的时间稍长或者由于某个 SQL 要进行锁表就会导致主从同步延迟,主库的 SQL 大量积压,未被同步到从库里。这就导致了主从不一致,也就是主从延迟。

主从同步延迟的解决办法

解决主从复制延迟有几种常见的方法:

1 . 写操作后的读操作指定发给数据库主库

例如,注册账号完成后,登录时读取账号的读操作也发给数据库主库。这种方式和业务强绑定,对业务的侵入和影响较大,如果哪个新来的程序员不知道这样写代码,就会导致一个 bug。

2 , 读从库失败后再读一次主库

这就是通常所说的"二次读取”,二次读取和业务无绑定,只需要对底层数据库访问的 API 进行封装即可,实现代价较小,不足之处在于如果有很多二次读取,将大大增加主库的读操作压力。例如,黑客暴力破解账号,会导致大量的二次读取操作,主库可能顶不住读操作的压力从而崩溃。

3 , 关键业务读写操作全部指向主库,非关键业务采用读写分离

例如,对于一个用户管理系统来说,注册+登录的业务读军操作全部访问主库,用户的介绍、爱好、等级等业务,可以采用读写分离,因为即使用户改了自己的自我介绍,在查询时却看到了自我介绍还是旧的,业务影响与不能登录相比就小很多,业务上一般可以接受。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东莞呵呵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值