Mysql 的主从复制
2016-09-20 本文已影响20人
cammsia
复制方式
通过主库上记录二进制日志,在备库重放日志的方式来实现异步的数据复制。
- 基于行的复制
- 基于语句的复制
复制步骤
20160914112042547.png-
在主库上把数据更改记录到二进制日志。
每次准备提交事务完成数据跟新之前,把数据跟新事件记录到二进制文件中,也就是说是按照事务提交顺序来记录二进制文件,而不是按照每条语句来记录。记录完,主库会告诉存储引擎可以提交事务了。 -
备库把主库的二进制文件复制到本地中继日志
- 启动复制
CHANGE MASTER TO MASTER_HOST = '10.*.*.36', MASTER_USER = 'repl', MASTER_PASSWORD = 'replpassword', MASTER_PORT = 3306, MASTER_AUTO_POSITION = 1, MASTER_RETRY_COUNT = 0, MASTER_HEARTBEAT_PERIOD = 10000;
- 从库启动一个IO线程和SQL线程,IO线程会跟主库建立一个普通的客户端长连接,并为主库开启特殊的二进制转储(binlog dump)线程。
- 从库把自己的read_master_log_pos的值告诉主库,主库会自从库告知自己pos开始把事件推送给从库,当没有事件发生时,主从库的IO都会进行睡眠状态。
- 当主库有事件发生时,主库IO线程被激活,并把事件推送给从库,并通知从库IO线程进入工作状态。
- 从库SQL线程执行二进制日志。
主库能并行执行SQL,在从库上只能串行执行。
- 启动复制