复制是将主数据库的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
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。