一、原理
1、Master库启动binlog后,每次数据变更事务提交后写入binlog。
2、Slave库启动一个I/O 线程,不断监听master库binlog更新。
3、Slave库的I/O线程将更新的binlog内容拉取到本地,写入到relay log中。
4、slave库启动一个sql thread线程,不断的读取relay log 的内容,并将binlog内容重放到数据库中。
二、实战
master修改mysql(my.cnf)配置后,重启服务,配置如下
log-bin=mysql-bin #开启二进制日志
server-id=1 #设置server-id
binlog-do-db = dubhe #设置要复制数据库
查看状态:SHOW MASTER STATUS;
slave修改my.conf文件,追加“server-id=2 #设置server-id,必须唯一”,重启服务后打开命令端,执行以下sql
启动slave
查看状态
三、问题:
1、Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
由于slave库所在虚机是从master克隆的,所以存在UUID相同的情况;通过show variables like 'datadir'命令查找mysql数据文件,进入后删除auto.cnf文件,重启mysql服务即可。