【MySQL主從複製】5、mysql搭建主主熱備架構
阿新 • • 發佈:2022-04-18
- 主主熱備又被稱為主主複製,即兩臺MySQL主機之間互為 主從,當任一庫的資料發生變更時,都可在另一庫找到完全一樣的備份資料,從而達到主庫發生故障時迅速切換到另一主庫,以便備災。
1、資料庫配置
- 除了匯出備份外都需要設定一遍,主要server-id不能衝突
- 修改MySQL配置檔案
- 主1即第一臺主MySQL伺服器,先將其配置檔案修改成如下,相比主從複製而言,資料庫之間為了防止id唯一性問題,修改id自增步長,步長即主伺服器數量:
auto_increment_increment=2
- 修改id初始值:
auto_increment_offset=1|2
- 如下:
# vi /etc/mysql/my.cnf log-bin=mysql-master-bin-log relay-log=mysql-master-relay-log server-id=11 max-connections=2000 innodb_buffer_pool_size=500M binlog_format=ROW auto_increment_offset=1 auto_increment_increment=2 [client] default-character-set=utf8
- 新增master使用者
- 新增master使用者,作為第二臺主備伺服器的複製賬戶:
mysql> create user 'master'@'%' identified by '123'; # Query OK, 0 rows affected (0.00 sec) mysql> grant replication slave,replication client on *.* to 'master'@'%'; # Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; # Query OK, 0 rows affected (0.00 sec)
- 匯出當前資料備份
mysqldump -uroot -proot > all.sql
- 檢視當前主庫資訊:
mysql> show master status\G
*************************** 1. row ***************************
File: mysql-master-bin-log.000008
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
- 雙主配置:
- 在第二臺伺服器內匯入MySQL的備份資料後,重複上述配置,現在兩臺伺服器分別配置另一臺伺服器為master,即互為主從
- 主1:
mysql> change master to
-> master_host='172.17.0.5',
-> master_port=3306,
-> master_user='master',
-> master_password='123',
-> master_log_file='mysql-master-bin-log.000007',
-> master_log_pos=440,
-> master_connect_retry=30
- 主2:
mysql> change master to
-> master_host='172.17.0.3',
-> master_port=3306,
-> master_user='master',
-> master_password='123',
-> master_log_file='mysql-master-bin-log.000008',
-> master_log_pos=107,
-> master_connect_retry=30;
- 配置完成後,在兩臺主伺服器都開啟主從複製,至此,主主熱備配置完畢,現在任一庫進行資料的更新都會同步到另一庫中了