文章目錄
一個主機 master1 用於處理所有寫請求, 它的從機 slave1 和另一臺主機 master2 還有它的從機 slave2 負責所有讀請求。
當 master1 主機宕機後, master2 主機負責寫請求, master1、 master2 互爲備機。 架構圖如下 :
1、服務器規劃
編號 | 角色 | IP 地址 | 機器名 |
---|---|---|---|
1 | Master1 | 192.168.140.101 | host101_master1 |
2 | Slave1 | 192.168.140.201 | host201_slave1 |
3 | Master2 | 192.168.140.102 | host102_master2 |
4 | Slave2 | 192.168.140.202 | host202_slave2 |
2、雙主機配置文件修改
2.1、Master1 配置
vim /etc/my.cnf
my.cnf 的內容:
[mysqld]
#主服務器唯一ID
server-id=1
#啓用二進制日誌
log-bin=mysql-bin
# 設置不要複製的數據庫(可設置多個)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#設置需要複製的數據庫
binlog-do-db=需要複製的主數據庫名字
#設置logbin格式
binlog_format=STATEMENT
# 雙主模式中,log-slave-updates必須配置。因爲作爲從數據庫的時候, 有寫入操作也要更新二進制日誌文件
log-slave-updates
#表示自增長字段每次遞增的量,指自增字段的起始值,其默認值是1, 取值範圍是1 .. 65535
auto-increment-increment=2
# 表示自增長字段從哪個數開始,指字段一次遞增多少,他的取值範圍是1 .. 65535
auto-increment-offset=1
2.2、Master2 配置
修改配置文件:
vim /etc/my.cnf
my.cnf 的內容:
[mysqld]
#主服務器唯一ID
server-id=3
#啓用二進制日誌
log-bin=mysql-bin
# 設置不要複製的數據庫(可設置多個)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#設置需要複製的數據庫
binlog-do-db=需要複製的主數據庫名字
#設置logbin格式
binlog_format=STATEMENT
# 雙主模式中,log-slave-updates必須配置。因爲作爲從數據庫的時候, 有寫入操作也要更新二進制日誌文件
log-slave-updates
#表示自增長字段每次遞增的量,指自增字段的起始值,其默認值是1,取值範圍是1 .. 65535
auto-increment-increment=2
# 表示自增長字段從哪個數開始,指字段一次遞增多少,他的取值範圍是1 .. 65535
auto-increment-offset=2
2.3、重啓Mysql,使配置生效
systemctl restart mysqld.service
3、雙從機配置文件修改
3.1、Slave1 配置
vim /etc/my.cnf
my.cnf 的內容:
[mysqld]
#從服務器唯一ID
server-id=2
#啓用中繼日誌
relay-log=mysql-relay
3.2、Slave2 配置
vim /etc/my.cnf
my.cnf 的內容:
[mysqld]
#從服務器唯一ID
server-id=4
#啓用中繼日誌
relay-log=mysql-relay
3.3、重啓Mysql,使配置生效
systemctl restart mysqld.service
4、雙主機上創建賬號,並授權遠程複製
grant replication slave on *.* TO 'slave'@'%' identified by '123123';
4.1、查詢Master1的狀態
show master status;
4.2、查詢Master2的狀態
show master status;
分別記錄下 File 和 Position 的值 ,執行完此步驟後不要再操作主服務器MYSQL,防止主服務器狀態值變化。
5、雙從機上執行 change master
change master 命令格式如下:
#複製主機的命令
change master to master_host='主機的IP地址',
master_user='slave',
master_password='123123',
master_log_file='mysql-bin.具體數字',
master_log_pos=154;
5.1、執行 change master 命令
Slave1 複製 Master1的命令:
Slave2 複製 Master2的命令:
5.2、啓動兩臺從服務器複製功能
#啓動兩臺從服務器複製功能
start slave;
5.3、查看從服務器狀態
查看從服務器狀態的命令:
show slave status\G;
5.3.1、Slave1 從服務器狀態
5.3.2、Slave2 從服務器狀態
當 Slave_IO_Running
、Slave_SQL_Running
兩個參數都是Yes,則說明主從配置成功!
從服務涉及到的命令:
1、停止從服務複製功能
stop slave;
2、重新配置主從 :
stop slave;
reset master;
6、兩個主機互相複製 change master
因爲是雙主雙從,所以要配置 Master2 複製 Master1, Master1 複製 Master2 。
Master2的複製命令
Master1的複製命令
6.1、啓動兩臺主服務器複製功能
#在兩個Mysql主服務上,執行復制功能
start slave;
6.2、查看兩臺主服務的從服務器狀態
從服務器狀態命令:
show slave status\G;
6.2.1、Master2 的服務狀態:
6.2.2、Master1 的服務狀態 :
當 Slave_IO_Running
、Slave_SQL_Running
兩個參數都是Yes,則說明主從配置成功!
7、雙主從雙 測試
在 Master1 主機新建庫、新建表、 insert 記錄, 然後在 Master2、slave1、slave2上查看複製 是否成功 。