2024-11-09
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/7793578724

回答

MySQL 通过 server 层的 binlog 实现数据复制,保障主备服务器的数据一致性。

但主从复制会出现如下问题:

  1. 异步复制延迟,MySQL 的默认复制模式为异步复制,当网络延迟或数据库负载过高时,主库和备库会出现数据不一致现象。
  2. 奔溃恢复不一致,也是因为异步复制,当主库提交事务后奔溃,变更数据尚未同步至从库,那么从库会丢失这些事务,从而导致数据不一致。
  3. GTID 不一致,由于设置不当以及操作错误导致主从 GTID 不一致,从而出现主从库之间的数据偏差。

确保主从复制数据一致性

  1. 二进制日志(Binlog)

MySQL 主服务器将所有数据库变更记录在 binlog 中,然后从服务器同步这些日志文件并重放,恢复主库的数据变更。

  1. 主从复制

从数据库通过复制主数据库的 binlog 来实现数据的同步。主从复制主要分为两大过程,从库 IO 线程读取主库的 binlog,然后其 SQL 线程在从库执行 binlog 中的操作