1. 程式人生 > >實戰MYSQL 8.0.12 主主復制配置過程

實戰MYSQL 8.0.12 主主復制配置過程

blog http 初始 table sock log_file replica block zxvf

實戰MYSQL 8.0.12 主主復制配置過程

搭建環境:

Server name IP
mysql1 192.168.200.1
mysql2 192.168.200.2

服務器版本:CentOS Linux release 7.5.1804 (Core)
MYSQL版本:8.0.12 # 采用源碼安裝方式, 此過程略,或者參考 http://blog.51cto.com/snowlai/2140451

由於MYSQL采用的是源碼安裝方式,沒有生成 /etc/my.cnf 文件,需要手動創建,創建內容如下:

vim /etc/my.cnf # mysql1裏的內容,mysql2的內容區別是server-id = 2 就可以,其它一樣;

[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
server-id = 1
log-bin=mysql-bin
relay-log = mysql-relay-bin
replicate-wild-ignore-table=mysql.%
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
symbolic-links=0
log-error=/usr/local/mysql/data/mysql1.err
pid-file=/usr/local/mysql/data/mysql1.pid

進入mysql1的數據庫

mysql -uroot -p #輸入數據庫的密碼
mysql> flush table with read lock;

鎖住數據庫的寫操作後,不要退出這個終端,復制一個終端,將/usr/local/mysql/data 壓縮打包,然後再scp到mysql2上。

tar zcvf data.tar.gz data
scp data.tar.gz root@mysql2:/usr/local/mysql/

然後再mysql2上解壓data.tar.gz, 並刪除 auto.cnf文件

tar zxvf data.tar.gz
rm -rf auto.cnf

都重啟mysqld服務

service mysqld restart


mysql1: MASTER ; mysql2:SLAVE

在mysql1上創建復制用戶(repl_user),並授權

grant replication slave on . to ‘repl_user‘@‘mysql2‘ identified by ‘REPL_PASSWORD‘;
show master status;

並記錄master的輸出:File和Position的值

登錄到mysql2上,設置mysql1為自己的主服務器

change master to master_host=‘mysql1‘,master_user=‘repl_user‘,master_password=‘REPL_PASSWORD‘,master_log_file=‘mysql1上File的值‘,master_log_pos=mysql1上的position值;
start slave;
show slave status \G;


mysql2: MASTER ; mysql1:SLAVE
在mysql2上創建復制用戶(repl_user),並授權
grant replication slave on . to ‘repl_user‘@‘mysql1‘ identified by ‘REPL_PASSWORD‘;
show master status;

並記錄master的輸出:File和Position的值

登錄到mysql1上,設置mysql2為自己的主服務器

change master to master_host=‘mysql2‘,master_user=‘repl_user‘,master_password=‘REPL_PASSWORD‘,master_log_file=‘mysql2上File的值‘,master_log_pos=mysql2上的position值;
start slave;
show slave status \G;


註意事項:

  1. 兩個數據庫的數據在初始狀態必須保持一致, 這樣才能保證 show master status;的時候輸出的結果才一致;
  2. show slave status \G; 的時候。 Slave_IO_Running 和 Slave_SQL_Running 的結果為YES;
  3. 數據庫的配置文件:/etc/my.cnf 中的server-id的值必須不一樣;
  4. 兩臺服務器中的數據庫版本必須一樣;

實戰MYSQL 8.0.12 主主復制配置過程