复制是将主数据库的DDL和DML操作通过二进制日志传到从库上,然后再从库重做,从而使得从库和主库保持数据的同步。MySQL可以从一台主库同时向多台从库进行复制,从库同时也可以作为其他从库的主库,实现链式复制。
MySQL复制的优点:
- 主库故障,可以快速切换至从库提供服务;
- 在从库执行查询操作,降低主库的访问压力;
- 在从库执行备份,避免备份期间对主库影响;
MySQL复制原理
1、MySQL主库在事务提交时会把数据变更作为事件Events记录在Binlog中,主库上的sync_binlog参数控制Binlog日志刷新到磁盘;
2、主库推送Binlog中的事件到从库的Relay Log,之后从库根据Relay Log进行重做,通过逻辑复制来达到主从库的数据一致;
MySQL通过3个线程来完成主从库间的数据复制:其中Binlog Dump线程运行在主库上,I/O线程和SQL线程运行在从库上。当在从库启动复制(Start Slave)时,首先创建I/O线程连接主库,主库随后创建Binlog Dump线程读取数据库事件并发送给I/O线程,I/O线程获取到事件数据后更新到从库的Relay Log中,之后从库上的SQL线程读取Relay Log中更新的数据库事件并应用,
如下图所示:
查看主库:
mysql> show processlist\G;
*************************** 1. row ***************************
Id: 3
User: root
Host: 10.24.33.187:54194
db: NULL
Command: Sleep
Time: 176
State:
Info: NULL
*************************** 2. row ***************************
Id: 4
User: root
Host: 10.24.33.187:54195
db: NULL
Command: Sleep
Time: 176
State:
Info: NULL
*************************** 3. row ***************************
Id: 8
User: root
Host: localhost
db: test
Command: Query
Time: 0
State: starting
Info: show processlist
*************************** 4. row ***************************
Id: 12
User: repl
Host: dsz884.hcg.homecredit.net:39731
db: NULL
Command: Binlog Dump --Binlog Dump线程
Time: 87
State: Master has sent all binlog to slave; waiting for more updates --由此可见,以“推送”的方式同步
Info: NULL
4 rows in set (0.00 sec)
ERROR:
No query specified
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1142
183.71 KB下载数642
644.84 KB下载数2755