最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL互為主從(雙向同步)部署超詳細教程

 更新時間:2025年11月01日 09:59:02   作者:老吳的愛徒  
MySQL互為主從是一種特殊的復(fù)制架構(gòu),其中兩個MySQL服務(wù)器互為主從,彼此之間互相同步數(shù)據(jù),這篇文章主要介紹了MySQL互為主從(雙向同步)部署的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

(CentOS 6/7 適用)

一、環(huán)境說明

服務(wù)器角色IP 地址系統(tǒng)版本MySQL 版本核心作用
服務(wù)器 A192.168.1.51CentOS 6/7MySQL 5.7.17作為 B 的主庫 + 作為 B 的從庫
服務(wù)器 B192.168.1.52CentOS 6/7MySQL 5.7.17作為 A 的主庫 + 作為 A 的從庫

目標(biāo):實現(xiàn) A、B 雙向數(shù)據(jù)同步,確保兩邊數(shù)據(jù)實時一致,支持讀寫分離或故障備份。

二、前置準(zhǔn)備(兩臺服務(wù)器均執(zhí)行)

1. 確認(rèn) MySQL 狀態(tài)

先驗證 MySQL 版本一致性和服務(wù)運行狀態(tài),避免版本差異導(dǎo)致同步失敗。

# 1. 檢查MySQL版本(需均為5.7.17)
mysql -V

# 2. 確認(rèn)MySQL服務(wù)正常運行
# CentOS 7
systemctl status mysqld
# CentOS 6
service mysqld status

2. 關(guān)閉防火墻(測試環(huán)境簡化)

生產(chǎn)環(huán)境可改為開放 3306 端口,測試階段直接關(guān)閉防火墻更高效。

# CentOS 7
systemctl stop firewalld && systemctl disable firewalld

# CentOS 6
service iptables stop && chkconfig iptables off

三、配置服務(wù)器 A(192.168.1.51)

1. 修改 MySQL 核心配置文件

編輯my.cnf,僅保留互為主從必需配置,減少冗余。

vim /etc/my.cnf

[mysqld]區(qū)塊添加以下內(nèi)容:

[mysqld]
server-id = 51                  # 唯一ID,不可與B重復(fù)(建議用IP后兩位)
log_bin = mysql-bin             # 開啟二進制日志(主從同步核心依賴)
log_slave_updates = 1           # 允許同步的數(shù)據(jù)再次生成日志(互為主從關(guān)鍵)
auto_increment_increment = 2    # 自增步長為2,避免主鍵沖突
auto_increment_offset = 1       # A生成奇數(shù)ID(1、3、5...)

2. 重啟 MySQL 使配置生效

# CentOS 7
systemctl restart mysqld
# CentOS 6
service mysqld restart

3. 創(chuàng)建同步賬號(供服務(wù)器 B 連接)

登錄 MySQL,創(chuàng)建用于同步的賬號repluser,并授予復(fù)制權(quán)限。

# 登錄MySQL(輸入root密碼)
mysql -u root -p

執(zhí)行 SQL 命令:

-- 允許服務(wù)器B(192.168.1.52)使用repluser賬號連接
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.1.52' IDENTIFIED BY 'Sync@123';

-- 刷新權(quán)限,確保配置生效
FLUSH PRIVILEGES;

-- 查看A的主庫狀態(tài)(記錄File和Position,后續(xù)配置B需用)
SHOW MASTER STATUS;

記錄輸出結(jié)果(示例):

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      438 |              |                  |
+------------------+----------+--------------+------------------+

四、配置服務(wù)器 B(192.168.1.52)

1. 修改 MySQL 核心配置文件

與服務(wù)器 A 類似,僅調(diào)整server-idauto_increment_offset。

vim /etc/my.cnf

[mysqld]區(qū)塊添加:

[mysqld]
server-id = 52                  # 唯一ID,與A不同
log_bin = mysql-bin             # 開啟二進制日志
log_slave_updates = 1           # 互為主從關(guān)鍵配置
auto_increment_increment = 2    # 自增步長與A一致
auto_increment_offset = 2       # B生成偶數(shù)ID(2、4、6...)

2. 重啟 MySQL 服務(wù)

# CentOS 7
systemctl restart mysqld
# CentOS 6
service mysqld restart

3. 創(chuàng)建同步賬號(供服務(wù)器 A 連接)

登錄 MySQL,創(chuàng)建給 A 用的同步賬號。

mysql -u root -p

執(zhí)行 SQL 命令:

-- 允許服務(wù)器A(192.168.1.51)使用repluser賬號連接
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'192.168.1.51' IDENTIFIED BY 'Sync@123';

-- 刷新權(quán)限
FLUSH PRIVILEGES;

-- 查看B的主庫狀態(tài)(記錄File和Position,后續(xù)配置A需用)
SHOW MASTER STATUS;

記錄輸出結(jié)果(示例):

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      438 |              |                  |
+------------------+----------+--------------+------------------+

五、配置雙向同步(關(guān)鍵步驟)

1. 服務(wù)器 A 同步服務(wù)器 B 的數(shù)據(jù)(A 作為 B 的從庫)

登錄服務(wù)器 A 的 MySQL,配置 B 為主庫信息。

mysql -u root -p

執(zhí)行 SQL(替換為 B 的SHOW MASTER STATUS結(jié)果):

-- 停止現(xiàn)有從庫進程(若之前配置過)
STOP SLAVE;

-- 配置B為主庫
CHANGE MASTER TO
  MASTER_HOST = '192.168.1.52',    # B的IP
  MASTER_USER = 'repluser',        # B上創(chuàng)建的同步賬號
  MASTER_PASSWORD = 'Sync@123',    # 同步密碼
  MASTER_LOG_FILE = 'mysql-bin.000001',  # B的File
  MASTER_LOG_POS = 438;             # B的Position

-- 啟動從庫同步
START SLAVE;

2. 服務(wù)器 B 同步服務(wù)器 A 的數(shù)據(jù)(B 作為 A 的從庫)

登錄服務(wù)器 B 的 MySQL,配置 A 為主庫信息。

mysql -u root -p

執(zhí)行 SQL(替換為 A 的SHOW MASTER STATUS結(jié)果):

-- 停止現(xiàn)有從庫進程
STOP SLAVE;

-- 配置A為主庫
CHANGE MASTER TO
  MASTER_HOST = '192.168.1.51',    # A的IP
  MASTER_USER = 'repluser',        # A上創(chuàng)建的同步賬號
  MASTER_PASSWORD = 'Sync@123',    # 同步密碼
  MASTER_LOG_FILE = 'mysql-bin.000001',  # A的File
  MASTER_LOG_POS = 438;             # A的Position

-- 啟動從庫同步
START SLAVE;

六、驗證同步狀態(tài)

1. 檢查從庫運行狀態(tài)

在 A 和 B 上分別執(zhí)行以下命令,核心驗證Slave_IO_RunningSlave_SQL_Running是否均為Yes。

SHOW SLAVE STATUS\G;  # \G表示豎屏顯示,更易讀

關(guān)鍵輸出(需均為 Yes)

Slave_IO_Running: Yes    # 與主庫連接正常
Slave_SQL_Running: Yes   # 同步日志執(zhí)行正常

2. 功能測試(雙向同步驗證)

測試 1:A 寫入數(shù)據(jù),B 驗證同步

  1. 在 A 上創(chuàng)建測試數(shù)據(jù):
-- A上執(zhí)行
CREATE DATABASE IF NOT EXISTS sync_test;
USE sync_test;
CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, info VARCHAR(50));
INSERT INTO t1 (info) VALUES ('來自A的測試數(shù)據(jù)');  # ID應(yīng)為1(奇數(shù))
  1. 在 B 上查看數(shù)據(jù)是否同步:
-- B上執(zhí)行
USE sync_test;
SELECT * FROM t1;  # 應(yīng)返回ID=1的記錄

測試 2:B 寫入數(shù)據(jù),A 驗證同步

  1. 在 B 上插入數(shù)據(jù):
-- B上執(zhí)行
INSERT INTO sync_test.t1 (info) VALUES ('來自B的測試數(shù)據(jù)');  # ID應(yīng)為2(偶數(shù))
  1. 在 A 上查看數(shù)據(jù)是否同步:
-- A上執(zhí)行
USE sync_test;
SELECT * FROM t1;  # 應(yīng)返回ID=1和ID=2的兩條記錄

七、常見問題排查

  1. Slave_IO_Running: Connecting

    • 原因:IP 錯誤、同步賬號密碼錯誤、防火墻未關(guān)閉。
    • 解決:核對CHANGE MASTER TO中的 IP、賬號、密碼;確保防火墻已關(guān)閉。
  2. Slave_SQL_Running: No

    • 原因:主從數(shù)據(jù)不一致、主鍵沖突。
    • 解決:確保初始數(shù)據(jù)一致;檢查auto_increment配置是否正確(A 奇數(shù)、B 偶數(shù))。
  3. 同步延遲

    • 原因:數(shù)據(jù)量過大、服務(wù)器性能不足。
    • 解決:優(yōu)化 MySQL 配置(如增大innodb_buffer_pool_size);避免大事務(wù)。

八、總結(jié)

  1. 互為主從的核心是雙向配置主從關(guān)系,A 同步 B、B 同步 A,通過log_slave_updates = 1支撐雙向日志傳遞。
  2. 自增 ID 配置(步長 2 + 偏移 1/2)是避免主鍵沖突的關(guān)鍵,確保 A、B 生成的 ID 完全不重疊。
  3. 驗證時優(yōu)先檢查Slave_IO_RunningSlave_SQL_Running,再通過實際數(shù)據(jù)寫入測試同步功能。

總結(jié)

到此這篇關(guān)于MySQL互為主從(雙向同步)部署的文章就介紹到這了,更多相關(guān)MySQL互為主從部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

彭泽县| 左权县| 于田县| 江源县| 镇平县| 呼和浩特市| 保靖县| 东宁县| 集安市| 景泰县| 洛浦县| 天长市| 平凉市| 三明市| 平谷区| 普宁市| 宁晋县| 广安市| 泰兴市| 临颍县| 泽普县| 湖州市| 扶沟县| 新田县| 宝鸡市| 嵊泗县| 保靖县| 邹平县| 临颍县| 屏南县| 铜陵市| 诏安县| 肥城市| 通州市| 盐山县| 全椒县| 三河市| 沙湾县| 梅河口市| 海兴县| 泸水县|