MYSQL主從復制、主主復制、雙主多從配置


一、如何配置MYSQL的主從復制?

1. 兩台數據庫服務器,IP分別為 192.168.216.128 和 192.168.216.129,在服務器上裝MYSQL(我的配置版本為5.5.56)

2. 打開 192.168.216.128 服務器上的MYSQL的配置文件 /etc/my.cnf (路徑根據自己服務器的情況來看),將其中的 server-id 設為1(默認為1,總之兩台服務器要設置為不同的ID),然后重啟MYSQL服務

3. 打開 192.168.216.129 服務器上的MYSQL的配置文件 /etc/my.cnf (路徑根據自己服務器的情況來看),將其中的 server-id 設為2(默認為1),然后重啟MYSQL服務

4. 設 192.168.216.128 為主服務器,那么在主服務器上加一個從服務器可以登錄的用戶,語句如下:

GRANT REPLICATION SLAVE ON *.* TO 'sally'@'192.168.216.129' IDENTIFIED BY 'ilovesally';
FLUSH PRIVILEGES

建好后,在192.168.216.129 服務器上執行以下語句

mysql -h 192.168.216.128 -usally -pilovesally

然后試一下可不可以連上,如果可以,則正確,如果連不上,看一下什么原因,是否是防火牆的原因,如果是則去配置防火牆的規則。

5. 以上完成后在主服務器上執行以下語句,查詢master的狀態

show master status;

可以看到以上結果,這兒只需要看 File 和 Position,其它的兩個分別是白名單和黑名單,意思為同步哪幾個數據庫和不同步哪幾個數據庫,可自行根據需求進行設置。記錄了前兩個字段后,在從庫上執行以下語句:

CHANGE MASTER TO
MASTER_HOST='192.168.216.128',
MASTER_USER='sally',
MASTER_PASSWORD='ilovesally',
MASTER_LOG_FILE='mysql-bin.000020',
MASTER_LOG_POS=1441;

6. 執行完畢后,在從庫上繼續執行如下語句:

slave start;
show slave status\G;

這樣,查看從服務器的狀態,如果狀態中的用紅線標出來兩個參數的值都為YES,那證明配置已經成功,否則可以檢查一下具體問題出現在什么地方。

 

這樣,就算配置完成了。在主庫中新建數據庫,新建一張表,插幾條數據,到從庫上查詢一下看是否已經同步過來。

 

如果失敗,可以從以下幾個方面去排查問題:  

1.首先試一下主從服務器相互之間是否 PING 得通

2.試一下遠程連接是否正確,如果連不上,則有可能是網卡不一致防火牆沒有放行 3306 端口

3.server-id 是否配成一致

4.bin-log 的信息是否正確

  

二、如何配置MYSQL的主主復制?

上面說了主從復制的配置方法,現在接着上面的配置繼續,然后實現雙主復制,讓以上的兩個服務器互為主從。

1. 在主服務器上配置 /etc/my.cnf 文件,配置如下:

auto_increment_increment=2         #步進值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=1            #起始值。一般填第n台主MySQL。此時為第一台主MySQL
binlog-ignore=mysql                #忽略mysql庫【我一般都不寫】
binlog-ignore=information_schema   #忽略information_schema庫【我一般都不寫】

配置之后重啟MYSQL服務

2.在從服務器上配置 /etc/my.cnf 文件,配置如下

auto_increment_increment=2   #步進值auto_imcrement。一般有n台主MySQL就填n
auto_increment_offset=2   #起始值。一般填第n台主MySQL。此時為第二台主MySQL
binlog-ignore=mysql   #忽略mysql庫【我一般都不寫】
binlog-ignore=information_schema   #忽略information_schema庫【我一般都不寫】

配置之后重啟MYSQL服務

3. 在從服務器上添加一個主服務器可以訪問的用戶,命令如下:

GRANT REPLICATION SLAVE ON *.* TO 'sally1'@'192.168.216.128' IDENTIFIED BY 'ilovesally';
FLUSH PRIVILEGES

建好后,在192.168.216.128 服務器上執行以下語句

mysql -h 192.168.216.129 -usally1 -pilovesally

如果可以連上,則進行下一步,連不上的話,參考上面進行問題排查。

4. 因為要互為主從,所以現在從服務器也是master ,所以也要查看一下狀態

show master status;

查到相應的信息后,在原來的主服務器上執行以下命令(因為現在它現在也是另一台的從服務器)

CHANGE MASTER TO
MASTER_HOST='192.168.216.129',
MASTER_USER='sally1',
MASTER_PASSWORD='ilovesally',
MASTER_LOG_FILE='mysql-bin.000021',
MASTER_LOG_POS=1457;

5. 執行完畢后,在原主庫上繼續執行如下語句:

start slave;
show slave status\G;

同上,如果出現如下畫面,則證明配置成功。

6. 在兩台服務器的MYSQL中分別進行一些建庫、建表、插入、更新等操作,看一下另一台會不會進行同步,如果可以則證明主主配置成功,否則還是上面的排錯方法,進行錯誤排查。

 

三、如何配置MYSQL的雙主多從?

現在已經是雙主配置了,但是如果要進行讀寫分離,那么我們要再增加N台從庫,如何做呢?非常簡單,按如下操作即可:

1. 新增加一台數據庫服務器,192.168.216.130,數據庫配置均與前兩台相同

2. 確定一下要將哪一台當作自己的主服務器,我們姑且設 192.168.216.128 為主服務器

3. 在第三台服務器中編輯 /etc/my.cnf ,將其 server-id 設為 3(保證與前兩個不一樣即可),然后重啟MYSQL服務

4. 在主服務器中,增加一條用戶記錄,用於當前服務器對主庫對的連接,代碼如下:

GRANT REPLICATION SLAVE ON *.* TO 'farrow'@'192.168.216.130' IDENTIFIED BY 'ilovesally';
FLUSH PRIVILEGES;

5. 在 192.168.216.130 服務器上測試是否可以連接到主庫

mysql -h 192.168.216.130 -ufarrow -pilovesally

如果可以連上,則可以進行下一步,否則根據上面的提示排查問題。

6. 在 192.168.216.130 服務器上查詢 master 當前狀態

看到相關信息后,我們執行如下操作:

CHANGE MASTER TO
MASTER_HOST='192.168.216.128',
MASTER_USER='sally',
MASTER_PASSWORD='ilovesally',
MASTER_LOG_FILE='mysql-bin.000020',
MASTER_LOG_POS=1441;

7. 執行完畢后,我們查詢一下當前服務器的狀態

start slave;
show slave status;

如果狀態如下,則說明配置正確

如果此處有問題,參考上面所提排查並解決問題。

8. 此時我們在 192.168.216.128 上建庫、建表、插入、更新、刪除數據,在 另外兩台上分別進行查看,發現均已經同步。但是如果我們在 192.168.216.129 上做相應的操作,則發現只有 192.168.216.128 上進行了相應的同步,而 192.168.216.130 上的數據並未同步。這是為什么呢?因為我們設置的主庫是 192.168.216.128,所以在 192.168.216.129 進行數據操作的時候並未同步,這顯然不符合我們的需求,那么,我們要怎么修改呢?非常簡單,在互為主從的兩台服務器的配置文件中均加入以下語句:

log-slave-updates=on

加上后將兩台服務器的MYSQL重啟,然后再進行測試,發現數據已經可以同步了。如果要再多加一些從服務器,和以上類似,現在我們做的是雙主一從,我們可以再加N台從服務器,配置也是一樣的。

 

至此,MYSQL主從復制、主主復制、雙主多從配置我們均已經搞定!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM