MySQL中主从复制的原理

本文介绍了MySQL复制技术的基本原理,包括其解决的问题、不同类型的复制方式(如基于行的复制和基于语句的复制),以及复制的步骤。同时,还探讨了一主库多备库架构的优缺点,并列举了复制技术在数据分布、负载均衡、备份等方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL中的复制:
复制解决的问题:让一台服务器的数据与其他服务器保持同步;
主库+备库【从库】;

基于行的复制:from V5.1;
基于语句的复制:逻辑复制,from V3.23
1.都是通过在主库上记录二进制日志,在备库重放日志的方式来实现异步的数据复制;
2.复制向后兼容:新版本的服务器可以作为老版本服务器的备库,反过来可能就不行;
3.开销:启用二进制日志带来的开销,每个备库也会对主库增加一些负载(网络IO开销)。锁的竞争也可能阻碍事务的提交。从主库复制到多个备库,唤醒多个复制线程发送事件的开销将会累加。
4.通过复制可以将读操作指向备库来获得更好的读扩展;对于写操作除非设计得当,否则并不适合通过复制来扩展写操作。一主库多备库中,写操作会被执行多次,这时候系统性能取决于写入最慢的那部分。
5.一主库多备库架构时,可能会造成一些浪费。它会复制大量不必要的重复数据;
一个主库和10个备库,会有11份数据拷贝,并且这11台服务器缓存中存储了大部分相同的数据。
6.复制比较常见的用途:
数据分布:复制通常带宽压力不大,但是基于行的复制会比传统的基于语句的复制模式的带宽压力更大;
负载均衡:通过复制可以将读操作分布到多个服务器上,实现对读密集型的应用的优化;
简单的代码修改就可以实现基本的负载均衡;小规模的可以简单的对机器名硬编码或者DNS轮询(将一个机器名指向多个IP地址);
备份:对于备份来说,复制是一项很有意义的技术补充,但是复制既不是备份也不是能够取代备份;
高可用性和故障切换:避免单点失败;
MySQL升级测试:更好版本的作为备库;

2. 复制的步骤:
2.1 把主库上数据更改记录到二进制日志(Binary Log)中(二进制日志文件);
2.2 备库将主库上的日志复制到自己的中继日志中(Relay Log);
2.3 备库读取中继日志中的事件,将其重放到备库数据之上;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值