MySql雙主一從服務搭建

程式猿vs碼農發表於2020-10-28

主庫A1:192.168.1.120
主庫A2:192.168.1.121
從庫B:192.168.1.122

注意:搭建雙主一從之前必須保證三臺伺服器的網路可以互通,資料庫埠號也是開放的,再有就是資料的使用者許可權是否為%

第一步,搭建雙主,A1、A2互為主從,A1的搭建

1)A1:
該配置三臺伺服器必須不同
server-id=1

log_bin 啟動mysql二進位制日誌,如果沒有配置這個將無法遠端連結
log-bin=mysql-bin

指定mysql的binlog日誌記錄哪個db
binlog-do-db=ceshi

引數是在slave上配置,指定slave要複製哪個庫
replicate-do-db=ceshi

步進值auto_imcrement。一般有n臺主MySQL就填n
auto_increment_increment=2

設定資料庫中自動增長的起點,兩臺mysql的起點必須不同,這樣才能避免兩臺伺服器同步時出現主鍵衝突
auto_increment_offset=1

在預設情況下mysql會阻止主從同步的資料庫function的建立,這會導致我們在匯入sql檔案時如果有建立function或者使用function的語句將會報錯。
log-bin-trust-function-creators=1

2)重啟A1主庫的mysql服務

3)授權A2主庫使用者訪問A1主庫的許可權
grant replication slave, replication client on . to ‘root’@‘192.168.1.121’ identified by ‘root’

flush privileges; //重新整理MySQL的系統許可權相關表,否則會無法用賬號連結

4)檢視A2主庫的日誌節點:
show master status;

5)相互設定同步的日誌節點
change master to aster_host=‘192.168.1.121’,master_port=3306,master_user=‘root’,
master_password=‘root’,master_log_file=‘mysql-bin.000001’,master_log_pos=121;

**

第二步,搭建雙主,A1、A2互為主從,A2的搭建

**
1)A2:
該配置三臺伺服器必須不同
server-id=2

log_bin 啟動mysql二進位制日誌,如果沒有配置這個將無法遠端連結
log-bin=mysql-bin

#指定mysql的binlog日誌記錄哪個db
binlog-do-db=ceshi

引數是在slave上配置,指定slave要複製哪個庫
replicate-do-db=ceshi

#步進值auto_imcrement。一般有n臺主MySQL就填n
auto_increment_increment=2

#設定資料庫中自動增長的起點,兩臺mysql的起點必須不同,這樣才能避免兩臺伺服器同步時出現主鍵衝突
auto_increment_offset=2

#在預設情況下mysql會阻止主從同步的資料庫function的建立,這會導致我們在匯入sql檔案時如果有建立function或者使用function的語句將會報錯。
log-bin-trust-function-creators=1

2)重啟A2主庫的mysql服務

3)授權A1主庫使用者訪問A2主庫的許可權
grant replication slave, replication client on . to ‘root’@‘192.168.1.120’ identified by ‘root’

flush privileges; //重新整理MySQL的系統許可權相關表,否則會無法用賬號連結

4)檢視A1主庫的日誌節點:
show master status;

5)相互設定同步的日誌節點
change master to aster_host=‘192.168.1.120’,master_port=3306,master_user=‘root’,
master_password=‘root’,master_log_file=‘mysql-bin.000002’,master_log_pos=120;

**

第三步,搭建雙主,A1、A2互為主從,開啟A1、A2的slave服務

**

A1:
start slave;

A2:
start slave;

然後檢視主從服務的狀態是否正常show slave status\G;

**

第四步,搭建雙主一從,一臺從庫通過通道關聯倆臺主庫

**
1)B:
#該配置三臺伺服器必須不同
server-id=3

log_bin 啟動mysql二進位制日誌,如果沒有配置這個將無法遠端連結
log-bin=mysql-bin

#指定mysql的binlog日誌記錄哪個db
binlog-do-db=ceshi

引數是在slave上配置,指定slave要複製哪個庫
replicate-do-db=ceshi

#並行複製的執行緒數(有幾臺主庫就寫幾)
slave_parallel_workers=2

#允許從庫開啟通道,與多主庫關聯
master_info_repository=table
relay_log_info_repository=table

relay_log_recovery=1

  1. A1、A2主庫分別給B從庫使用者授權
    A1:
    grant replication slave, replication client on . to ‘root’@‘192.168.1.122’ identified by ‘root’
    flush privileges;

A2:
grant replication slave, replication client on . to ‘root’@‘192.168.1.122’ identified by ‘root’
flush privileges;

3)從庫通過通道關聯倆臺主庫
change master to master_host=‘192.168.1.120’,master_user=‘root’,master_password=‘root’, master_port=3306, master_log_file=‘mysql-bin.000001’, master_log_pos=120 for channel ‘120’;

change master to master_host=‘192.168.1.121’,master_user=‘root’,master_password=‘root’, master_port=3306, master_log_file=‘mysql-bin.000002’, master_log_pos=121 for channel ‘121’;

4)分別啟動倆個通道的主從服務
start slave for channel ‘120’;
start slave for channel ‘121’;

5)檢視從庫的主從服務狀態
show slave status for channel ‘120’\G;
show slave status for channel ‘121’\G;

相關文章