MariaDB(Mysql) Replication 同步設定-Master-Master主主同步(2)

MySQL & MariaDB

上一篇我們實作了MariaDB(Mysql) Replication 同步設定-Master-Slave主從同步,我們來實作Master-Master replication吧! 我建議要實作 主主同步前先試作上一篇的主從同步,安裝資料庫、防火牆、Selinux你得先搞定,網誌內的文章都提過,你可先搜尋。
我們先來看看這個圖

Master-Master replication

這個圖充分說明了,我們要建造兩個 servers ,暨是 master 也是 slave 。

第一步: 啟動兩個 master MariaDB servers.

在兩個server中的 /etc/my.cnf 新增或是在 /etc/my.cnf.d/ 中新增 replication.cnf

第一個 server
[mysqld]
sync_binlog = 1
skip_name_resolve = ON
server-id = 1
log-bin = master-log
relay-log = slave-log
log-slave-updates = 1
auto_increment_offset = 1
auto_increment_increment = 2

第二個 server
[mysqld]
sync_binlog = 1
skip_name_resolve = ON
server-id = 2
log-bin = master-log
relay-log = slave-log
log-slave-updates = 1
auto_increment_offset = 2
auto_increment_increment = 2

請仔細看這兩個設定檔的不同處
server-id 是 1,2 若你有第 3台 就設3.
auto_increment_offset = 1 或 2 若你有第 3 台 就設3.
auto_increment_increment 都是 2 , 若你有第 3 台 那全部的 server都要設3.

設好後,全部的mariadb都要重新啟動 Restart MariaDB (Centos: systemctl restart mariadb) 

第二步: 在兩個 master MariaDB 中設定同步複製帳號

mysql -u root -p (輸入password) (執行下面指令,新增一個使用者用來將資料複製到salve server)
CREATE USER ‘repliuser’@’%’ IDENTIFIED BY ‘<password>’;
GRANT REPLICATION SLAVE ON *.* TO ‘repliuser’@’%’;
FLUSH PRIVILEGES;

show master status\G;
在兩台 master 中會出現 以下兩組訊息 File 與 Position 要記下來

MariaDB [mysql]> SHOW MASTER STATUS\G
-----------------------------------------------------------------------
File: master-log.000001
Position: 343
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.000 sec)

---------------------------------------------------------------------
File: master-log.000002
Position: 1420
Binlog_Do_DB:
1 row in set (0.000 sec)

第三步: 設定 slave 指令,開始同步

第一台 server 是第二台的 slave (要指向第2台server的ip),所以要這樣設
mysql -u root -p (輸入password) (執行下面指令,連線到master server)
stop slave;
CHANGE MASTER TO
MASTER_HOST='second-server-ip',
MASTER_USER='repliuser',
MASTER_PASSWORD='<password>',
MASTER_LOG_FILE='master-log.000002',
MASTER_LOG_POS=1420;
start salve;

第二台 server 是第一台的 slave (要指向第1台server的ip),所以要這樣設
mysql -u root -p (輸入password) (執行下面指令,連線到master server)
stop slave;
CHANGE MASTER TO
MASTER_HOST='first-server-ip',
MASTER_USER='repliuser',
MASTER_PASSWORD='<password>',
MASTER_LOG_FILE='master-log.000001',
MASTER_LOG_POS=343;
start salve;

好了! 就這樣 ,如果你有多台server要同步,可以使用 circle (ring)- topology 來同步他們

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *