一、需求
MySQL主从同步可以实现读写分离,用以减轻主库负载.
二、原理知识
在简单的一主一从的同步机制中。主库有IO线程用于mysql-bin的读写,从库有IO线程用于向主库请求mysql-bin 和 SQL线程解析mysql-bin。
三、实现主从同步
首先主库要打开log-bin。其他步骤如下
1.复制数据
(1)主库
把主库数据mysqldump到SQL文件,确保主从有完整数据
mysqldump --master-data=1 然后 grep -n 'CHANGE MASTER' md.sql 也可拿到主从复制对接点
-x 加所有库的只读锁 -l 加所有表的只读锁 跟 with read lock只读锁效果一样
--master-data=1后 SQL文件中CHANGE MASTER TO 打开注释,SQL将自动包含日志的文件及位置
--master-data=2后 SQL文件中CHANGE MASTER TO 加上注释,需要手动获得复制对接点
flush table with read lock; 加只读锁
unlock tables;
(2)从库
mysql 命令导入SQL文件
2.在主库建立专门用于同步的账号
grant replication slave on *.* to rep@localhost identified by 'rep';
flush privileges;
3.在从库设定主库
在主库执行 show master status; show master lgos;拿到主从复制对接点
在从库执行change master to ...
如果 change master to ... 执行有错误,需要先停止slave:stop slave;
4.从库start slave
检查从库状态
show slave status G;
按图示 3-4-5-6 的顺序重复执行来达到主从同步的目的