MySQL 5.7 主从复制
两台机器:192.168.96.2 - 主,192.168.96.3 - 从
步骤:
- 修改MySQL配置文件my.conf
192.168.96.2:
#vim /etc/my.cnf
保证binlog功能开启(如果原来就是打开的就不用修改了,用 show variables like ‘log_%’; 查看)
添加如下配置:
1 | log-bin=mysql-bin // 将mysql二进制日志取名为mysql-bin |
重启mysql:
#service mysqld restart
重启后可以登录进mysql,用 show variables like ‘log_%’; 查看binlog是否为ON
192.168.96.3:
配置同上,就是my.cnf中server-id的配置不同,server-id=3
- 在主服务器上为从服务器分配一个账号
GRANT replication slave ON *.* TO ‘slave‘@’%’ IDENTIFIED BY ‘slave’;
- 查看主服务器binlog的信息
show master status;
配置完从服务器之前不要对主服务器进行任何操作!!
- 设置从服务器
(如果你以前配置过主从的话,一定要先关闭:stop slave;)
CHANGE MASTER TO MASTER_HOST=”192.168.96.2”, MASTER_USER=”slave”, MASTER_PASSWORD=”slave”, MASTER_LOG_FILE=”mysql-bin.000001”, MASTER_LOG_POS=249;
参数解释:
MASTER_HOST:设置要连接的主服务器的ip地址
MASTER_USER:设置要连接的主服务器的用户名
MASTER_PASSWORD:设置要连接的主服务器的密码
MASTER_LOG_FILE:设置要连接的主服务器的bin日志的日志名称,即第3步得到的信息
MASTER_LOG_POS:设置要连接的主服务器的bin日志的记录位置,即第3步得到的信息,最后一项不需要加引号,否则配置失败
- 启动从服务器
start slave;
- 查看是否配置成功
show slave status;
| Slave_IO_Running | Slave_SQL_Running |
这两项为yes就OK了
现在就可以自己测试了,比如在master的某个数据库中更新一条记录,就会看到slave数据库也会跟着同步了。
如果不能同步的,需要把master数据库的sql文件dump下来,然后用slave恢复一下,避免binlog的Position落后太多导致同步失败。