MySQL复制之语句复制与行复制
这里我们来总结下MySQL复制的两种方式,基于语句的复制与基于行的复制。
一.基于语句的复制
基于语句的复制,主库会记录造成数据更改的sql语句,并记录到日志中,日志文件除了记录造成数据改变的sql外,还记录了一些元数据信息,如时间戳。
二.基于行的复制
基于行的复制莫斯会将发生改变的实际数据记录到日志中。
三.行复制与语句复制对比
优点 | 缺点 | |
基于语句的复制模式 | 1.主备模式不同时,语句复制能够在多种情况下工作。如:主备库的表定义不同但数据结构相同,列的顺序不同。 2.基于语句的复制易于理解,方便定位问题 3.节省带宽。一条更新好几MB数据的语句在日志中可能只占几十字节 |
1.对于存储过程,触发器等存在大量的bug,不建议使用基于语句的复制模式 2. 更新是串行的,需要引入更多的锁 |
基于行的复制模式 | 1.支持所有场景的数据复制,包括sql构造,触发器,存储过程。 2.不需要串行化执行,可以减少锁的使用 3.相对于重放sql会造成很大查询代价却只造成很少行变化的数据的复制,行复制可能会花费更少的时间 |
1.相对于语句复制行复制会记录更多的二进制日志,导致日志非常庞大,并且会给主库上记录日志和复制增加额外的负载,更慢的日志记录则会降低并发度。< |