MySQL:主从同步

目录

一、MySQL主从同步原理

二、binlog的格式

2.1 ROW模式

2.2 STATEMENT模式

2.3 MIX模式

三、同步方式

四、同步的进度谁来记录的

五、复制线程

5.1 复制线程什么时候启动的?

5.2 复制过程中断怎么办?

六、发生了主从延迟怎么办

6.1 使用并行复制

6.2 使用半同步复制

6.3 调整同步线程配置

6.4 检查主服务器负载

总结


提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、MySQL主从同步原理

上图详细的记录了,当我们执行一条SQL语句之后,MySQL是怎么处理的,并且将数据同步到从服务器上的。 

1.1 SQL执行成功,执行commit,将命令保存到binlog二进制文件中

1.2 从服务器启动线程

1.3 该线程会向主服务器发起连接请求,建立连接

1.4 主服务器收到请求后,启动binlog dump线程

1.5 binlog dump线程启动后,从主服务器的binlog二进制文件拉取数据

1.6 binlog dump线程将拉取的数据发送到从服务器

1.7 从服务器收到数据后,将其保存到Relaylog中继日志中

1.8 从服务器启动SQL线程

1.9 SQL线程从中继日志中读取数据

1.10 SQL线程执行读取的命令,执行结果写入binlog

从服务器的I/O线程和SQL线程,都是复制线程,只不过前者负责同步数据,后者负责解析执行数据

二、binlog的格式

2.1 ROW模式

记录的是修改的细节,但是会产生大量的日志内容

2.2 STATEMENT模式

记录的是执行的SQL

2.3 MIX模式

 以上两种都用

三、同步方式

MySQL的主从同步,属于增量同步

主要基于以下三点考虑的:

3.1 效率高

3.2 网络开销小

3.3 减少对主库的负担

四、同步的进度谁来记录的

从服务器会维护一个称为:中继日志位置的信息

该信息记录了上次同步到的最后位置,下次同步的时候,会将该信息代入,获取同步的数据时,从该条记录的下一条记录开始获取,从服务器处理完之后,会将最新的最后一条记录信息存入中继日志位置信息中。

五、复制线程

5.1 复制线程什么时候启动的?

复制线程是从服务器启动时自动启动的,该线程会一直保持和主服务器的连接,并持续从主服务器拉取最新的数据,解析并执行。

5.2 复制过程中断怎么办?

复制线程会自动重连并恢复复制,来确保主从一致

六、发生了主从延迟怎么办

我们利用从库,是为了保证数据库高可用的同时,也能提高从库的查询效率,为主库减轻压力

但是一旦出现了主从延迟,就意味着主库变更的数据在从库查不到,对于敏感的数据,就得变更策略,从主库查询了,如果是不敏感的数据,可以从从库查。

6.1 使用并行复制

MySQL 5.6版本及以上支持并行复制,可以将一个大的复制线程分成多个子线程,加速复制速度

6.2 使用半同步复制

MySQL 5.5版本及以上支持半同步复制,可以确保至少有一个从服务器已经应用了主服务器的变更操作,减少延迟

6.3 调整同步线程配置

MySQL的复制线程数量是可以配置的。可以考虑增加复制线程的数量来加快同步速度

6.4 检查主服务器负载

如果主服务器的负载过高,可能会导致主从同步的延迟。可以通过优化查询、增加硬件资源等方式来减轻主服务器的负载,实际生产中遇到的大都是慢查询引起的,可以将此类慢查询通过其他的方式实现,例如走ES,同步实质上依赖的还是服务器的CPU和IO。


总结

以上就是MySQL主从复制的过程及常见的问题,涵盖了参与复制的核心组件、同步方式、复制线程等要点。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值