本例介紹Mysql雙主雙從同步配置,一主一從參考:【Mysql】主從同步配置
雙主雙從架構
搭建步驟
1、環境准備,本例准備了4台服務器
mysql版本:5.8
系統:CentOS 7.4
master1服務器: 172.17.0.2
slave1服務器: 172.17.0.3
master2服務器: 172.17.0.4
slave2服務器: 172.17.0.5
2、在4台服務器上分支安裝mysql實例,參考:【Linux】CentOS 7.4 安裝 MySQL 8.0.12 解壓版
3、修改4個mysql的配置
master1的配置(/etc/my.cnf)如下:
1 #主服務器唯一ID 2 server-id=1 3 #啟用二進制日志 4 log-bin=mysql-bin 5 # 設置不要復制的數據庫(可設置多個) 6 binlog-ignore-db=mysql 7 binlog-ignore-db=information_schema 8 #設置需要復制的數據庫 9 binlog-do-db=test_slave 10 #設置logbin格式 11 binlog_format=STATEMENT 12 # 在作為從數據庫的時候,有寫入操作也要更新二進制日志文件 13 log-slave-updates 14 #表示自增長字段每次遞增的量,指自增字段的起始值,其默認值是1,取值范圍是1 .. 65535 15 auto-increment-increment=2 16 # 表示自增長字段從哪個數開始,指字段一次遞增多少,他的取值范圍是1 .. 65535 17 auto-increment-offset=1
slave1的配置(/etc/my.cnf)如下:
1 #從服務器唯一ID 2 server-id=2 3 #啟用中繼日志 4 relay-log=mysql-relay
master2的配置(/etc/my.cnf)如下:
1 #主服務器唯一ID 2 server-id=3 3 #啟用二進制日志 4 log-bin=mysql-bin 5 # 設置不要復制的數據庫(可設置多個) 6 binlog-ignore-db=mysql 7 binlog-ignore-db=information_schema 8 #設置需要復制的數據庫 9 binlog-do-db=test_slave 10 #設置logbin格式 11 binlog_format=STATEMENT 12 # 在作為從數據庫的時候,有寫入操作也要更新二進制日志文件 13 log-slave-updates 14 #表示自增長字段每次遞增的量,指自增字段的起始值,其默認值是1,取值范圍是1 .. 65535 15 auto-increment-increment=2 16 # 表示自增長字段從哪個數開始,指字段一次遞增多少,他的取值范圍是1 .. 65535 17 auto-increment-offset=2
slave2的配置(/etc/my.cnf)如下:
1 #從服務器唯一ID 2 server-id=3 3 #啟用中繼日志 4 relay-log=mysql-relay
4、重啟4個mysql實例服務
5、查詢主節點信息
登錄master1的mysql,執行以下命令:show master status;
登錄master2的mysql,執行以下命令:show master status;
6、配置雙從機
1)登錄slave1的mysql,執行以下命令
1 CHANGE MASTER TO 2 MASTER_HOST = '172.17.0.2', 3 MASTER_USER = 'root', 4 MASTER_PASSWORD = '123456', 5 MASTER_PORT = 3306, 6 MASTER_LOG_FILE='mysql-bin.000003', 7 MASTER_LOG_POS=615;
登錄slave2的mysql,執行以下命令
1 CHANGE MASTER TO 2 MASTER_HOST = '172.17.0.4', 3 MASTER_USER = 'root', 4 MASTER_PASSWORD = '123456', 5 MASTER_PORT = 3306, 6 MASTER_LOG_FILE='mysql-bin.000003', 7 MASTER_LOG_POS=787;
2)分別啟動2個節點的從服務
命令:start slave;
3)查看從服務狀態
命令:show slave status\G;
如下:
slave1
slave2
7、兩個主機互相復制
1)登錄master1的mysql,執行以下命令
1 CHANGE MASTER TO 2 MASTER_HOST = '172.17.0.4', 3 MASTER_USER = 'root', 4 MASTER_PASSWORD = '123456', 5 MASTER_PORT = 3306, 6 MASTER_LOG_FILE='mysql-bin.000003', 7 MASTER_LOG_POS=787;
登錄master2的mysql,執行以下命令
1 CHANGE MASTER TO 2 MASTER_HOST = '172.17.0.2', 3 MASTER_USER = 'root', 4 MASTER_PASSWORD = '123456', 5 MASTER_PORT = 3306, 6 MASTER_LOG_FILE='mysql-bin.000003', 7 MASTER_LOG_POS=615;
2)分別啟動2個主節點的從服務
命令:start slave;
驗證雙主雙從
1、登錄master1,創建數據庫 test_slave
1 CREATE DATABASE test_slave;
2、創建表
1 CREATE TABLE `test_tbl` (
2 `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 3 `title` varchar(100) NOT NULL, 4 `update_date` date DEFAULT NULL, 5 PRIMARY KEY (`id`) 6 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、插入數據
1 INSERT INTO `test_slave`.`test_tbl`(`id`, `title`, `update_date`) VALUES (1, '白色', '2020-07-10');
4、更新數據
1 UPDATE `test_slave`.`test_tbl` SET `title` = '黑色', `update_date` = '2020-07-10' WHERE `id` = 1;
查看master1、master2 和 slave1、slave2 節點數據是否相同