Centos7+Mysql5.7实现主从复制

一、Master主服务器配置(192.168.30.201)

找到mysql配置文件my.cnf在末尾加上:
find / -name my.cnf

log-bin=mysql-bin #slave会基于此log-bin来做replication 
server-id=1 #master的标示 
innodb_flush_log_at_trx_commit=1 
sync_binlog=1

重启
systemctl restart mysqld

mysql -u root -p
mysql>grant replication slave on . to ‘admin’ @’192.168.30.%’ identified by ‘Abc123///’; #创建从服务器用到的账户和权限:

重启
systemctl restart mysqld

mysql -u root -p
show master status;
Centos7+Mysql5.7实现主从复制_第1张图片

二、Slave从服务器配置(192.168.30.202)
找到mysql配置文件my.cnf在末尾加上:
server-id=2 #slave的标示 ,192.168.30.202配置

Slave从服务器,连接Master主服务器:

change master to master_host='192.168.30.201',master_port=3306,master_user='admin',master_password='Abc123///',master_log_file='master-bin.000001',master_log_pos=351;

备注:master_host对应主服务器的IP地址,master_port对应主服务器的端口,master_log_file对应show master status显示的File列:master-bin.000001,master_log_pos对应Position列:351,否则有可能出现同步失败。

重启
systemctl restart mysqld

start slave;
show slave status\G;
Centos7+Mysql5.7实现主从复制_第2张图片
备注:Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。

三、测试:
Centos7+Mysql5.7实现主从复制_第3张图片

Centos7+Mysql5.7实现主从复制_第4张图片

同步成功。

遇到问题:Slave_IO_Running为 NO
这时可通过以下方法来处理:

方法一:(重置slave)

slave stop;

reset slave;

slave start;

方法二:(重设同步日志文件及位置)

1、查看slave状态
show slave status\G

        Master_Log_File: mysql-bin.000040
    Read_Master_Log_Pos: 4
         Relay_Log_File: mysqld-relay-bin.000001
          Relay_Log_Pos: 98
  Relay_Master_Log_File: mysql-bin.000040
       Slave_IO_Running: No
      Slave_SQL_Running: Yes

目前已同步到mysql-bin.000040这个日志文件,98的位置;

2、暂停slave
slave stop;

3、修改同步日志文件及位置;
日志文件及位置都改小;(之前是同步正常,最近才出现问题的,一般改小一个值就好)
如:
change master to master_log_file=’mysql-bin.000039’, master_log_pos=1;

4、启动slave
slave start;

5、再次确认slave状态
show slave status\G
这时会发现:
Slave_IO_Running: Yes
且下述两个值一直在不断变化中:
Relay_Log_Pos: 998875
Relay_Master_Log_File: mysql-bin.000048

如果Slave_IO_Running: No,则继续第2、3、4步,把3步中的值再改小;如此反复。。。

你可能感兴趣的:(Mysql)