MySQL 主从复制
MySQL主从复制具体的过程为master启动dump线程,和slave的IO的线程建立连接,把master的bin log传递给slave,slave的IO的线程将从master得到的数据,写到本地的relay log(中继日志)中,之后slave的SQL线程对本地的relay log 进行回放。为了方便MySQL识别主从,即MySQL做主从复制,他们的server id不一样
MySQL主从复制的必要条件
master
- server id: 区别主从服务
- bin log: 记录master的写操作,并同步给从
- dump thread: 与从服务器的IO thread 建立连接,负责把本地bin log发送给slave 的IO thread
slave
- server id:区分主从服务
- relay log: 中继日志,负责从存储IO线程读过来的数据。但SQL线程一回放完中继日志的内容,中继日志内容不保存
- io thread:从master获取数据,并保存在本地的relay log中
- sql thread:负责回放本地的relay log
MySQL server-id参数的额外说明
server-id 本质区分每个MySQL
当MySQL使用双主互为主从的时候,会出现写循环。即master 写入,会在slave回放,但回放的同时slave会写入bin log,主会拉取slave写入的bin log数据,写入本地的relay log,然后回放,又写入bin log依次会陷入循环。而server id是标识mysql,当mysql 拉取的binlog中的server-id,发现是自己的server id,就不会拉取