1. 程式人生 > >Centos7+Mysql5.7實現主從複製

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;
這裡寫圖片描述

二、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;
這裡寫圖片描述
備註:Slave_IO_Running和Slave_SQL_Running都為yes才表示同步成功。

三、測試:
這裡寫圖片描述

這裡寫圖片描述

同步成功。

遇到問題: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步中的值再改小;如此反覆。。。