主从复制的重点整理

第18章 主从复制

主从复制的重点整理

0.中继日志的介绍

中继日志(Relay Log)只在主从服务器架构的从服务器上存在。从服务器为了与主服务器保持一致,要从主服务器读取二进制文件的内容,并把读取到的信息写入本地的日志文件中,这个从服务器本地的日志文件就叫做中继日志。然后,从服务器读取中继日志,并根据中继日志的内容对从服务器的数据进行更新,完成主从服务器的数据同步。

1. 主从复制的作用

  1. 实现读写分离。通过主从复制的方式同步数据,读写分离提高了数据库的访问能力。
    在这里插入图片描述
    Master主库,负责写入数据,称之为:写库。
    Slave从库,负责读取数据,称之为:读库。
    当主库进行更新的时候,会自动将数据复制到从库中,而我们在客户端读取数据的时候,会从从库进行读取。
    面对“读多写少”的需求,采用读写分离的方式,可以实现更高的并发访问。同时,我们还能对从服务器进行负载均衡,让不同的读请求按照策略均匀地分发到不同的从服务器上,让读取更加顺畅。读取顺畅的另一个原因,就是减少了锁表的影响,比如我们让主库负责写,当主库出现写锁的时候,不会影响到从库进行SELECT的读取。

  2. 数据备份。通过主从复制将主库上的数据复制到从库上,属于一种热备份机制,也就是说在主库正常运行的时候进行备份,不会影响服务。

  3. 具有高可用性。数据备份是一种冗余机制,通过冗余机制可以换取数据库的高可用性,也就是当服务器出现故障或宕机的情况下,可以切换到从服务器上,保证服务的正常运行。

2. 主从复制的原理

从库从主库中读取binlog日志来进行数据同步。
主从复制的原理
直观上涉及到的线程有:主库发送数据的线程、从库接收数据并写入中继日志的线程、从库从中继日志中读取并执行的线程。
三个线程
实现主从同步的原理是基于bin log进行数据同步的。在主从复制中,会基于3个线程来操作,一个主库线程,两个从库线程。
在这里插入图片描述
二进制日志转储线程(Binlog dump thread)是一个主库线程。当从库线程连接到主库时,主库就可以将二进制日志发送给从库,当主库读取事件(Event)的时候,会在Binlog上加锁,读取完成之后再将锁释放。
从库I/O线程:连接到主库,并向主库发送请求更新Binlog。从库的I/O线程就可以读取到主库的二进制日志转储线程发送的Binlog更新部分,并且拷贝到本地的中继日志(Relay log)中。
从库SQL线程:读取从库中的中继日志,并执行日志中的事件,将从库中的数据与主库保持数据同步。
复制三步骤

  1. Master将写操作记录到二进制日志(Binlog)中。
  2. SlaveMaster的二进制日志中的事件(binary log events)拷贝到它的中继日志(relay log)中。
  3. Slave重做中继日志中的事件,将改变应用到自己的数据库。

MySQL的主从复制是异步且串行化的,重启后将从接入点开始复制。

2.2 复制的基本原则

  1. 主库和从库都只能具有唯一的服务器ID
  2. 一个主库可以有多个从库。
  3. 一个从库只能有一个主库。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值