MySQL 雙主雙從

一個主機 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_RunningSlave_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_RunningSlave_SQL_Running 兩個參數都是Yes,則說明主從配置成功!

7、雙主從雙 測試

在 Master1 主機新建庫、新建表、 insert 記錄, 然後在 Master2、slave1、slave2上查看複製 是否成功 。

在這裏插入圖片描述

發佈了288 篇原創文章 · 獲贊 256 · 訪問量 112萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章