mysql集羣實現-主主複製(另外一種主從複製只是比主主複製少一步配置)

主要實現功能:實現兩臺數據庫服務之間數據同步

實現前準備:兩臺帶數據庫服務的linuxOS(此處使用centOS6 64位,ip分別是192.168.88.129和192.168.88.131,下文用192和131稱呼,mysql5.7)防火牆和selinux都關閉

主主複製模式是指兩臺mysql服務都是master,同時又都是slave,這樣的話在其中一臺做數據操作,另外一臺的數據庫服務也會執行同樣的操作
還有一種是主從複製:
其中一臺作爲master,另外一臺作爲slave,在slave服務器修改數據庫的話是不會同步到master服務器的,而master服務器修改數據庫會同步到slave服務器,
因此這種模式要進行讀寫分離的話,寫的操作必須是在 master服務

1、更改兩臺主機的mysql配置文件/etc/my.cnf
在129的my.cnf添加
server-id=1
log-bin=mysqlmaster-bin.log
auto-increment-increment=2
auto-increment-offset=1
在131的my.cnf添加
server-id=2
log-bin=mysqlmaster-bin.log
auto-increment-increment=2
auto-increment-offset=2
說明:
server-id:在集羣時本機服務的唯一標誌,因此不能相同
auto-increment-increment:整個結構中服務器的總數,此實驗爲兩臺服務器,所以值爲2
auto-increment-offset:數據庫中自動增長的起點的,因爲服務器都設定了一次自動增長的值爲2,所以他們的起點必須得不同,這樣才能避免兩臺服務器數據同步時出現主鍵衝突


注意:可能在etc下沒有my.cnf文件,解決方法是複製mysql的安裝路徑下my.cnf(cp /usr/local/mysql/my.cnf /etc/my.cnf)
2.root登陸MySQL,創建同步數據所需要的用戶
129 
GRANT REPLICATION SLAVE ON *.* TO 'synuser1'@'192.168.88.%' IDENTIFIED BY '123456';
131
GRANT REPLICATION SLAVE ON *.* TO 'synuser2'@'192.168.88.%' IDENTIFIED BY '123456';
3.查看兩臺服務器的master狀態
129
mysql>show master status;
+------------------------+----------+--------------+------------------+-------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+----------+--------------+------------------+-------------------+
| mysqlmaster-bin.000002 |      120 |              |                  |                   |


執行(主從模式下,若此機作爲master,則不需要再執行,因爲本文是使用主主模式,因此兩臺服務器都要指明對應的master)
CHANGE MASTER TO MASTER_HOST='192.168.88.131',MASTER_USER='synuser2',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=336;


131:
mysql>show master status;
+------------------------+----------+--------------+------------------+-------------------+
| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------------+----------+--------------+------------------+-------------------+
| mysqlmaster-bin.000001 |      336 |              |                  |                   |


執行
CHANGE MASTER TO MASTER_HOST='192.168.88.129',MASTER_USER='synuser1',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=120;


4.兩臺服務器都執行mysql>start slave;從而開啓同步功能
分別輸入show slave status;查看結果中的以下兩個屬性值是否爲yes,若是則成功
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注意:通常做集羣實驗的時候都是在一臺虛擬機上安裝mysql之後複製一臺作爲另外一臺,這樣會出現兩臺mysql服務的server-uuid相同,解決方法是修改其中一臺的uuid
vim /usr/local/mysql/data/auto.cnf 改成與另外一臺不一樣即可,修改之後重啓兩臺服務器的MySQL服務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章