开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详情
mysql主从复制
原理:
(1)master 服务器将数据的改变记录在二进制binlog日志中,当master上的数据发生改变时,将其改变写入binlog日志中
(2)slave 服务器 会在一定时间间隔对master二进制日志进行检测,观察二进制文件是否发生改变,如果发生改变,则开始一个I/O Thread请求读取master二进制文件
(3)同时主节点为每个I/O线程启动一个dump线程,用于发送二进制日志,并保存从节点的本地中继日志中,从节点将启动SQL线程从中继日志读取二进制日志,使其数据和主节点数据保持一致。
Mysql主从复制的步骤:
- 从库手工执行 change master to 语句连接主库,然后提供连接的用户一切条件,并让从库知道,二进制日志的起点位置; start slave
- 从库IO线程和主库的dump线程建立连接
- 从库根据change master to 语句提供的 file 名和 position 号,IO线程向主库发起binlog的请求
- 主库 dump 线程 根据从库的请求,将本地binlog以events的方式发给从库IO线程
- 从库IO线程接收 binlog events,并存放到本地 relay-log中,传送过来的信息会记录到master.info中
- 从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经用过的relay会被清理
Mysql为什么进行主从同步
1.在复杂的义务系统中,有这么一个场景,有一条SQL语句要锁表,导致不行使用读取数据的服务,就很影响运行在的业务,使用主从复制,主从同步,可以让主库负责写,从库负责读,这样即使出现锁表,从库也能保持数据的读取
2.做数据的热备,当数据访问量激增,主库压力过大,这时候有备用数据库可以承担一定的访问压力