1. 网络的延迟
由于 mysql 主从复制是基于 binlog 的一种异步复制, 通过网络传送 binlog 文件, 理所当然网络延迟是主从不同步的绝大多数的原因, 特别是跨机房的数据同步出现这种几率非常的大, 所以做读写分离, 注意从业务层进行前期设计.
2. 主从两台机器的负载不一致
由于 mysql 主从复制是主数据库上面启动 1 个 io 线程, 而从上面启动 1 个 sql 线程和 1 个 io 线程, 当中任何一台机器的负载很高, 忙不过来, 导致其中的任何一个线程出现资源不足, 都将出现主从不一致的情况.
3.max_allowed_packet 设置不一致
主数据库上面设置的 max_allowed_packet 比从数据库大, 当一个大的 sql 语句, 能在主数据库上面执行完毕, 从数据库上面设置过小, 无法执行, 导致的主从不一致.
4.key 自增键开始的键值跟自增步长设置不一致引起的主从不一致.
5.mysql 异常宕机情况下, 如果未设置 sync_binlog=1 或者 innodb_flush_log_at_trx_commit=1 很有可能出现 binlog 或者 relaylog 文件出现损坏, 导致主从不一致.
6.mysql 本身的 bug 引起的主从不同步.
7. 版本不一致, 特别是高版本是主, 低版本为从的情况下, 主数据库上面支持的功能, 从数据库上面不支持该功能.
来源: http://www.bubuko.com/infodetail-2761806.html