MYSQL主從複製、主主複製、雙主多從配置

1、如何配置MYSQL的主從複製?html

1. 兩臺數據庫服務器,IP分別爲 192.168.216.128 和 192.168.216.129,在服務器上裝MYSQL(個人配置版本爲5.5.56)mysql

2. 打開 192.168.216.128 服務器上的MYSQL的配置文件 /etc/my.cnf (路徑根據本身服務器的狀況來看),將其中的 server-id 設爲1(默認爲1,總之兩臺服務器要設置爲不一樣的ID),而後重啓MYSQL服務sql

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

而後試一下可不能夠連上,若是能夠,則正確,若是連不上,看一下什麼緣由,是不是防火牆的緣由,若是是則去配置防火牆的規則。spa

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

show master status;

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

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. 執行完畢後,在從庫上繼續執行以下語句:code

slave start;
show slave status\G;

這樣,查看從服務器的狀態,若是狀態中的用紅線標出來兩個參數的值都爲YES,那證實配置已經成功,不然能夠檢查一下具體問題出如今什麼地方。

 

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

 

若是失敗,能夠從如下幾個方面去排查問題:  

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

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

3.server-id 是否配成一致

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

  

2、如何配置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中分別進行一些建庫、建表、插入、更新等操做,看一下另外一臺會不會進行同步,若是能夠則證實主主配置成功,不然仍是上面的排錯方法,進行錯誤排查。

 

3、如何配置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主從複製、主主複製、雙主多從配置咱們均已經搞定!

相關文章
相關標籤/搜索