什么情况会导致MySQL主从复制延迟

1.网络的延迟 由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。2.主从两台机器的负载不一致 由于mysql主从复制是主数据库上面启动1个io线程...
什么情况会导致MySQL主从复制延迟
Asynchronous Replication Automatic failover
其原理是在一条异步复制通道上配置多个可用复制源,当某个复制源不可用时(宕机、复制链路中断),且 slave 的 IO 线程尝试重连无效,自动根据权重选择新的源继续同步。
准备一个 MGR 集群和单实例,模拟复制链路切换,当 primary 故障,slave 自动切换到其他节点。dbdeployer deploy replication --topology=group 8.0.22 --single-primarydbdeployer deploy single 8.0.22
2. 在从机上建立指向 MGR 主节点的复制通道,
change master to master_user='msandbox',master_password='msandbox', master_host='127.0.0.1',master_auto_position=1,source_connection_auto_failover=1,master_port=23223,master_retry_count=6,master_connect_retry=10 for channel 'mgr-single';
在 master_retry_count 和 master_connect_retry 的设置上要考虑尝试重连多久才切换复制源。
3. 在从机上配置 asynchronous connection auto failover
配置 asynchronous connection auto failover 的两个函数:
asynchronous_connection_failover_add_source(channel-name,host,port,network-namespace,weight)
asynchronous_connection_failover_delete_source(channel-name,host,port,network-namespace)
权重值大的被优先级选择,可以配合MGR的选举权重配置 asynchronous_connection_failover 的权重。当 MGR 节点切换,异步复制也能切换到新的主节点。
SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23223,null,100); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23224,null,80); SELECT asynchronous_connection_failover_add_source('mgr-single','127.0.0.1',23225,null,50);start slave for channel 'mgr-single';
4. 检查异步复制通道是否启用 failover。
mysql> SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schema.replication_connection_configuration; +--------------+---------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------+---------------------------------+| mgr-single | 1 |+--------------+---------------------------------+1 row in set (0.01 sec
5. 把 MGR 的 primary 节点 kill 掉,这个从节点会在尝试几轮重连失败后自动切换到次权重的复制源,其日志中会输出切换信息。
注意:当主节点故障,一旦复制链路成功 failover 后,在新的复制链路没有故障时,如果原主节点恢复,是不会回切的。如果当前复制链路发生故障,会再次选择权重高的进行切换
2021-01-28
1.网络的延迟
由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。
2.主从两台机器的负载不一致
由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况。
3.max_allowed_packet设置不一致
主数据库上面设置的max_allowed_packet比从数据库大,当一个大的sql语句,能在主数据库上面执行完毕,从数据库上面设置过小,无法执行,导致的主从不一致。
4.key自增键开始的键值跟自增步长设置不一致引起的主从不一致。2017-08-11
mengvlog 阅读 509 次 更新于 2025-10-30 05:28:30 我来答关注问题0
  •  深空见闻 mysql主从复制 update_rows失败了

    常见原因:数据不一致:从库数据和主库不一致,这是最常见的原因。手动更改:从库某些表被手动更改或删除了数据。事务顺序问题:多线程复制+并发下的事务顺序问题可能导致数据不一致。表结构不一致:主库使用了ROW格式binlog但从库表结构不一致。日志未完整应用:从库IO线程或SQL线程之前中断导致某些日志...

  •  深空见闻 什么是mysql主从复制和读写分离

    MySQL主从复制是将数据的改变从主服务器(Master)同步到从服务器(Slave)的过程,MySQL读写分离指只在主服务器上写,只在从服务器上读。MySQL主从复制定义与原理:主从复制过程中,Master在日志中记录数据的改变并通知存储引擎提交。Slave则将Master的日志复制到自身的中继日志中,再从中继日志读取事件并...

  •  文暄生活科普 看完这篇还不懂 MySQL 主从复制,可以回家躺平了

    MySQL主从复制是MySQL高可用性、高性能(负载均衡)的基础。复制过程中应该时刻监控复制状态,复制出错或延时可能给系统造成影响。MySQL主从复制目前也存在一些问题,可以根据需要部署复制增强功能。十、作用 MySQL主从复制带来了很多好处,包括:数据更安全:做了数据冗余,不会因为单台服务器的宕机而丢失数据。...

  •  阿暄生活 mysql主从复制数据不一致怎么办

    首先,需要了解MySQL主从复制的基本流程。主库写Binlog、从库拉Binlog以及从库回放Relay Log,任何一步出问题,都可能导致主从数据不一致。针对主从数据不一致的问题,可以采取以下措施:检查复制链路:登录从库执行SHOW SLAVE STATUSG,查看IO线程和SQL线程的状态。如果IO线程没在运行,可能是因为网络问题、...

  •  文暄生活科普 MySQl主从复制

    四、主从复制模式 异步模式:主节点不会主动将binary log推送到从节点。可能导致在故障转移(failover)时,从节点没有即时地将最新的binary log同步到本地。异步模式性能较高,但数据一致性可能受到影响。半同步模式:主节点需要接收到其中一台从节点的返回信息后才会提交事务。如果等待超时,则切换为异步...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部