Mysql主从复制原理
1:主库开始二进制日志(binlog);
2:从库执行change master 执行主库,此时主库会创建一个dump线程,用于向从库发送二进制日志;
3.从库执行 start slave ,开启IO/SQL线程;
IO线程:用于连接主库,接收主库dump线程发送的二进制日志,并保存的本地的中继日志(relay log)
SQl线程:用于管理和监控relay log,并执行relay log中的内容
中继日志:用于保存接收其他节点的二进制日志,其内容和二进制日志相同,默认保存在data目录下,由sql线程管理,默认执行后sql线程会自动清空。
具体操作:
-
在matser上开启二进制日志、添加server_id
修改mysql配置文件:/etc/my.cnf
-
在slave上添加server_id(不能与master一致);
-
在master为slave添加可以复制的权限,也可以给all
- 然后在slave上执行change master指向主库;
mysql > change master to master_host=’主库ip’,master_user=’赋权的用户名’,master_password=’密码’,master_log_file=’ matser正在记录的二进制日志文件’,master_log_pos=’ 二进制日志的节点’
在matser上查找正在记录的二进制文件
Show matser status\G;
-
在slave上开启IO线程和SQL线程;
查看是否开启:show slave status\G;
Yes 就代表开启了;
6. 测试:
slave上的库
master上的库
在matser上新建库:dali
查看slave有没有同步
ok