如果主库突然宕机,然后恰好数据还没同步到从库,那么有些数据可能在从库上是没有的,这时候从库成为了主库,那么有些数据可能就丢失了。
开启半同步复制 semi-sync ,用来解决主库数据丢失问题;
这个所谓半同步复制, semi-sync复制 ,指的就是主库写入binlog日志之后,就会将强制此时立即将数据同步到从库,从库将日志 写入自己本地的relay log之后 ,接着会 返回一个ack 给主库, 主库接收到至少一个从库的ack之后才会认为写 *** 作完成了。 如果 过程出现失败 ,那么 我们的客户端就可以进行重试了 ;
主从延迟对于读写分离的涉及影响比较大
这里有一个非常重要的一点,就是 从库同步主库数据的过程是串行化的 ,也就是说 主库上并行的 *** 作,在从库上会串行执行 。所以这就是一个非常重要的点了,由于从库从主库拷贝日志以及串行执行SQL的特点,在 高并发场景下,主库大量的写,那么从库的数据一个个的读,那么就会导致从库同步一定会比主库慢一些,是有延时的 。所以经常出现,刚写入主库的数据可能是读不到的,要过几十毫秒,甚至几百毫秒才能读取到。(主库并发写的量级越高,从库积压的同步数据越多,延迟越高)
我们可以用 show status 看看 Seconds_Behind_Master 参数,你可以看到从库复制主库的数据落后了几ms,但是这个也不是完全准确,可以看 Seconds_Behind_Master的
对于解决主从延迟,解决方案可以从以下方面考虑
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)