1. 环境准备
1.1Mysql版本
**MySQL5.7**
1.2主从同步原理:
1.3 准备两台机器
master 192.168.44.121
slave 192.168.44.128
如果用clone的方式得到两个MySQL服务,需要注意的地方:
不同机器的UUID不能重复,否则IO线程不能启动:
find / -name auto.cnf
vim /var/lib/mysql/auto.cnf
把里面的UUID随便改掉一位。
重启服务命令:
service mysqld restart
2.主节点配置
121为主节点进行配置
2.1配置文件开启binlog
/etc/my.cnf文件
[mysqld]下面增加几行配置:
log-bin=/var/lib/mysql/mysql-bin
binlog-format=ROW
server_id=1
2.2创建给slave使用的用户
在121主节点创建给slave 128节点访问的用户(发放通行证)连接到MySQL:
mysql -uroot -p123456;
执行SQL:
CREATE USER 'repl'@'192.168.44.128' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.44.128';
FLUSH PRIVILEGES;
如果有多个slave节点,使用同一个用户,也可以把IP设置成通配符的方式,例如192.168.44.*
2.3 获取binlog名字和position
接下来要获取最新的binlog文件名和position
show master status;
记住file名字和position,后面会用到。
这个时候master不要发生写操作,否则position和file可能会变化。
3.slave节点配置
3.1 配置文件
log-bin=/var/lib/mysql/mysql-bin
binlog-format=ROW
server_id=2
3.2 开启主从同步
连接到MySQL:
mysql -uroot -p123456;
file和pos是从主节点获取的
change master to master_host='192.168.44.121', master_user='repl',
master_password='123456', master_log_file='mysql-bin.000028', master_log_pos=773;
3.3 查看从节点状态
show slave status\G;
注意,主从同步成功的标志:
IO线程和SQL线程都是成功运行的:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
现在可以在master节点上面做任意对于库表的修改操作,slave会自动同步。
不要直接操作slave。
如果IO线程not running:
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
show slave status\G
出了问题一定要看日志,看日志