再解释 MySQL 主从复制之前我们需要先启动 Master 数据库然后再启动 Salve 数据库,然后在 Salve 数据库中执行 start slave;,执行完成之后,流程就如下了:
- Salve 的 IO 线程会读取 mastr.info 文件中配置好的主库信息,比如说存放的有: Master 数据库的用户名、密码、端口、还有 Master 的 binlog 索引位置;
- 拿到信息之后就带着信息去链接 Master 的主库 IO 线程
- 当主库的 IO 线程先检查 SLave 传过来的配置信息是否正确,如果正确,就拿着 Slave 传过来的 binlog 索引位置和 Master 库的 binlog 文件中最后一个索引位置进行对比,如果一致就陷入等待状态,等待 Master 的 binlog 索引位置更新;
- 如果不一致就把 Slave 传过来的 binlog 索引位置往后的所有 SQL 语句包括最后一条 SQL 语句的索引位置发送个给 Slave 的 IO 线程;
- Slave 的 IO 线程拿到信息之后,先把 Master 传过来的 binlog 索引在 Slave 的 master.info 文件中进行更新;
- 然后再把 Master 传过来的 SQL 语句写入到 relay 文件中,然后继续循环执行第二个步骤;
- Slave 的 SQL 线程会一直持续的观察 relay 日志文件中是否有改动,如果没有就继续监听;
- 如果发现 relay 中有变动,那么就获取变动的内容转换为 SQL 语句,并且把 SQL 语句在 Salve 的数据库中进行执行
阅读原文
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/314010
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.