1. 程式人生 > 其它 >【MySQL主從複製】5、mysql搭建主主熱備架構

【MySQL主從複製】5、mysql搭建主主熱備架構

  • 主主熱備又被稱為主主複製,即兩臺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;
  • 配置完成後,在兩臺主伺服器都開啟主從複製,至此,主主熱備配置完畢,現在任一庫進行資料的更新都會同步到另一庫中了