主库通过show processlist命令可以看到binlog dump进程,如下:
mysql> show processlist \G;
*************************** 1. row ***************************
Id: 125
User: root
Host: localhost
db: test
Command: Query
Time: 0
State: init
Info: show processlist
*************************** 2. row ***************************
Id: 127 --线程127为主库复制线程
User: rep1
Host: 192.168.80.136:44889
db: NULL
Command: Binlog Dump
Time: 16991
State: Master has sent all binlog to slave; waiting for binlog to be updated --已经发送了全部binlog,等待更新
Info: NULL
2 rows in set (0.00 sec)
从库通过show processlist命令可以看到io线程和sql线程,如下:
mysql> show processlist \G;
*************************** 1. row ***************************
Id: 4
User: root
Host: localhost
db: test
Command: Query
Time: 0
State: init
Info: show processlist
*************************** 2. row ***************************
Id: 7 --从库中的io线程
User: system user
Host:
db: NULL
Command: Connect
Time: 17079
State: Waiting for master to send event --等待主库发送日志状态
Info: NULL
************************** 3. row ***************************
Id: 8 --从库sql线程
User: system user
Host:
db: NULL
Command: Connect
Time: 17107 --可以表现从服务器比主服务器滞后多长时间
State: Slave has read all relay log; waiting for the slave I/O thread to update it --已经应用了全部relay log
Info: NULL
3 rows in set (0.00 sec)
复制的作用:
复制有许多用途,比如备份、读写分离、软件升级、故障转移等。注意在mysql版本升级过程需要考虑到复制的兼容性问题。
mysql复制涉及到两种文件:binlog和relay log文件。此中根据binlog的不同设置,mysql复制分为3种模式。
l 基于sql语句级别的复制。
l 基于行的复制
l 混合模式复制
1)基于SQL语句级别的复制
基于语句级的复制,复制将实行主库上所实行的语句,也就是说,从库实行的更新语句和主库实行的一样。基于语句的复制,优点有:
l 相对于基于行的复制,更简单,易实现。
l 数据库产生的二进制日志更少,传输占用带宽更少。
l 二进制日志可读性更好,mysqlbinlog可以方便读取binlog日志内容。
l 有利于排查问题,从库上实行和主库一样。
基于语句的复制,缺点有:
l 主库的某些操纵不能正确复制到从库。
l 从库需要锁定更多记录。
l 负载、代价大的sql在从库上需要再次实行。
l 对于非核心功能支持有限。
2)基于行的复制
Mysql5.1开始支持基于行的复制,它的适用范围更广,也可靠地多。基于行的复制其格式比较难以理解。基于行的复制可以处置惩罚各种高级功能,比如存储过程、触发器等,假如你想更兼容高级功能,发起采用基于行的复制模式。
基于行的复制优点有:
l 全部改变均被复制,对比与基于语句的复制,这是一种更安全的方式。
l 更少的锁定。
l 对于mysql高级特性兼容精良,比如存储过程、触发器。
l 二进制日志更有利于恢复,因为binlog里记录了更为详细的数据库变更。
l 更容易发现数据的不一致。
基于行复制的缺点有:
l 产生更多的binlog日志。
l Binlog日志内容不易阅读,不方便使用mysqlbinlog工具解读。
l 要求主从表布局一致,如许限制了它的灵活性,因为生产情况有时需要暂时修改从库表布局,提升从库为主库。
3)混合复制模式
默认采用基于语句的复制,一旦检测到触发了某些条件,则使用基于行的方式进行复制,这种设计完美的办理了语句级和行级复制的缺点,这也是发起采用的复制方式。 复制的3种常见架构:一主多从、级联复制、双主架构
1)mysql一主多从架构:办理主库读哀求压力办理方案。