MySQL熱機雙備之雙主同步複製配置

2022-09-14 02:09:10 字數 3660 閱讀 5120

此配置方案**於csdn前輩部落格,奈何找不到出處了,抱拳!!!

mysql支援單向、非同步複製,複製過程中一台伺服器充當主伺服器,一台或多台伺服器充當從伺服器,雙主同步要求兩台伺服器互為主從即可。

mysql的同步機制基於主伺服器把所有的對資料庫的更新操作記錄在二進位制日誌中,並維護日誌檔案索引以跟蹤日誌。從伺服器在日誌中讀取最後一次更新的位置,並接收從那時起發生的所有更新,然後封鎖並等待主伺服器的下一次更新通知。因此,啟用同步機制,主伺服器必須啟用二進位制日誌,每個從伺服器接受來自主伺服器上二進位制日誌中記錄的更新操作,其實從伺服器執行的是來自主伺服器日誌中記錄的sql拷貝。所以啟用同步時要求主從伺服器的二進位制日誌檔案相一致,否則同步失敗。

mysql同步功能由3個執行緒(主伺服器master上1個,從伺服器sl**e上2個)來實現。執行start sl**e語句後,sl**e就建立乙個i/o執行緒。i/o執行緒連線到master上,並請求master傳送二進位制日誌中的語句。master建立乙個執行緒來把日誌的內容傳送到sl**e上。這個執行緒在master上執行show processlist語句後的結果中的 binlog dump 執行緒便是。sl**e上的i/o執行緒讀取master的binlog dump執行緒傳送的語句,並且把它們拷貝到其資料目錄下的中繼日誌(relay logs)中。第三個是sql執行緒,salve用它來讀取中繼日誌,然後執行它們來更新資料。

如上所述,每個mster/sl**e上都有3個執行緒。每個master上有多個執行緒,它為每個sl**e連線都建立乙個執行緒,每個sl**e只有i/o和sql執行緒。在mysql中執行show processlist語句就會告訴我們所關心的master和sl**e上發生的情況。

作業系統:linux

環境:mysql

a、b兩台伺服器

a-  ip:192.168.204.128

b-  ip:192.168.204.129

要求a、b兩台伺服器可通訊

關閉兩台伺服器防火牆

在a伺服器上建立乙個b伺服器可登陸的賬號,進入到mysql終端建立同步賬號為:rootnew,密碼為:123456;

mysql>grant all privileges on *.* to 『rootnew』@』192.168.204.129』  identified by 『123456』;

mysql>flush privileges;

在b伺服器上建立乙個a伺服器可登陸的賬號:

mysql>grant privileges on *.* to 『newroot』@』192.168.204.128』  identified bu 『123456』;

mysql>flush privileges;

此時在a、b伺服器上的mysql資料庫中各有乙個newroot使用者:

在a、b伺服器上建立空的zyyt_antm資料庫,開啟a伺服器的my.cnf檔案,在檔案中[mysqld]下新增如下內容:(各作業系統的my.cnf檔案位置不一樣,我的是在/etc/mysql/下)

skip-name-resolve

server-id=1 #必須與其他伺服器不同,且必須為1到232–1之間的乙個正整數值

#i am master

log-bin=mysql-bin                   #二進位制檔案

binlog-do-db=zyyt_antm              #要同步的資料庫,此處我直接用單位專案做測試

binlog-ignore-db=information_schema  #不同步的資料庫

binlog-ignore-db=db_im

binlog-ignore-db=db_mdr

binlog-ignore-db=db_mrs

binlog-ignore-db=mysql

binlog-ignore-db=performance_schema

binlog-ignore-db=test

sl**e-skip-errors=1032,1062

重啟a伺服器的mysql服務:

~# /etc/inti.d/mysql restart

重啟成功表明a伺服器配置成功。

開啟b伺服器的my.cnf檔案,在[mysqld]節點下新增同樣內容:

skip-name-resolve

server-id=2 #必須與其他伺服器不同,且必須為1到232–1之間的乙個正整數值

#i am master

log-bin=mysql-bin                   #二進位制檔案

binlog-do-db=zyyt_antm              #要同步的資料庫

binlog-ignore-db=information_schema  #不同步的資料庫

binlog-ignore-db=db_im

binlog-ignore-db=db_mdr

binlog-ignore-db=db_mrs

binlog-ignore-db=mysql

binlog-ignore-db=performance_schema

binlog-ignore-db=test

sl**e-skip-errors=1032,1062

重啟b伺服器的mysql服務。

1.在a伺服器上檢視當前二進位制日誌檔案和偏移量值:

mysql>show master status\g;

記錄mysql二進位制檔案中的file和position值;

2.在b伺服器上指定更新點(根據上面樣例修改master_log_file值為樣例結果中的file值;修改master_log_pos值為樣例結果中的position值)。

mysql>stop sl**e;

mysql>change master to master_host=』192.168.204.128』,master_port=3306,master_user=』rootnew』,master_password=』123456』,master_log_file=』mysql-bin.000012』,master_log_pos=154;

mysql>start sl**e;

3.在b伺服器上檢視當前二進位制日誌名和偏移量:

mysql>show master status;

記錄mysql二進位制檔案中的file值和position值

4. 在a伺服器上指定更新點(根據上面樣例修改master_log_file值為樣例結果中的file值;修改master_log_pos值為樣例結果中的position值)。

mysql>stop sl**e;

mysql>change master to master_host=』192.168.204.129』,master_port=3306,master_user=』rootnew』,master_password=』123456』,master_log_file=』mysql-bin.000010』,master_log_pos=154;

mysql>start sl**e;

5.重啟a、b伺服器的mysql服務。

1.檢視a、b伺服器資料庫同步狀態,主要檢視sl**e_io_running與sl**e_sql_running這兩欄位顯示為yes就可以。

mysql>show sl**e status\g;

2.檢視a、b伺服器的同步執行緒狀態:

mysql>show processlist\g;

若輸入命令後出現概述所述的三個執行緒,則證明配置成功。

mysql雙主複製的缺點 mysql雙主複製總結

雙主複製 1 在兩台伺服器上各自建立乙個具有複製許可權的使用者 2 修改配置檔案 主伺服器a上 mysqld server id 10 log bin mysql bin relay log relay mysql auto increment offset 1 起始值 auto increment...

Keepalived部署雙主熱備

二 配置keepalived主和從 2.2 配置keepalived 從 2.3 啟動keepalived 三 keepalived註冊為系統服務 四 keepalived配置nginx自動重啟 五 配置keepalived雙主熱備 上傳壓縮包 scp keppalived.tar.gz root ...

DM 雙中心如何實現主備路徑

一.dm 單雲雙中心 a.通過修改兩個中心的tunnel介面的ospf cost值,只能影響中心身後路由器去往spoke的路由選路 b.通過修改兩個中心身後物理介面的ospf cost值不同,可以影響spoke選擇不同的hub去往中心身後網路 c.因為只有一條虛擬隧道,不能通過調整spoke的隧道介...