目录
一、简介
导致MySQL主从复制延迟的原因有很多,其中一个原因就是大表缺失主键或唯一索引。
今天我们就通过实验的方式来验证这种情况。
二、环境准备
主库:IP为192.168.68.168,端口3306,版本为8.0.20
从库:IP为192.168.68.168,端口3306,版本为8.0.20
三、实验过程
3.1 主库创建表
主库先创建一张8万行的大表:
从库查询延迟:
发现,从库延迟越来越高,主要原因是主库正在进行大批量的数据插入操作。
大约5分钟后,主库执行完毕,
从库查询,数据已同步完成:
3.2 主库做更新操作
可以看出,主库基本在2s就更新完成,变化的行数为4万行。
从库查询延迟,
可以发现,最长延迟21秒左右。
3.3 分析主库的binlog日志
可以看出,在ROW模式下,在主库上执行了一条UPDATE语句,更新了4万行记录,但是在binlog中,记录了4万行的UPDATE语句。
3.4 分析从库的中继日志
可以看出,在从库上也是4万行的UPDATE语句,也是一条一条的进行更新。由于没有主键和索引,所以,就会导致在从库进行4万次的全表扫描,这样也就拖慢了从库APPLY的效率。
四、结论
在MySQL的主从复制架构中,若存在大表,那么一定要有主键或唯一索引,否则将导致很大的主从延迟。
本文结束。
• 若有侵权请联系小麦苗删除
领取专属 10元无门槛券
私享最新 技术干货