首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.7 多源複制:一個從庫同步多個主庫

     編輯:MySQL 資料庫相關知識

突破單一主庫限制的複制新架構

MySQL 5.7.2 引入 Multi-Source Replication,允許一個從庫同時從多個主庫拉取二進制日志,構建更靈活的複制拓撲。

核心概念

  • Multi-Master (環狀複制) vs Multi-Source: 前者任意節點可寫並互相複制;後者一個從庫對應多個主庫,主庫間無直接複制關係。
  • Channel(通道): 每個主庫對應一個獨立的複制通道,擁有專屬 `IO_THREAD`、`SQL_THREAD`、中繼日志。

配置步驟

  1. 從庫啟用資料表式儲存庫:
    master_info_repository=TABLE;
    relay_log_info_repository=TABLE;
  2. 為每個主庫建立通道:
    CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=12047, MASTER_USER='msandbox', MASTER_PASSWORD='msandbox' FOR CHANNEL='master1';
    CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=12048, MASTER_USER='msandbox', MASTER_PASSWORD='msandbox' FOR CHANNEL='master2';
  3. 啟動各通道複制:
    START SLAVE FOR CHANNEL='master1';
    START SLAVE FOR CHANNEL='master2';
  4. 監控狀態:
    SHOW SLAVE STATUS FOR CHANNEL='master1'\G
    SHOW PROCESSLIST; -- 可見多組 IO/SQL 線程

驗證測試

-- 主庫1建庫
CREATE DATABASE master1;
-- 主庫2建庫
CREATE DATABASE master2;
-- 從庫查看
SHOW DATABASES LIKE 'master%'; -- 兩個庫均出現

應用場景與注意

  • 數據聚合:將多地分庫彙總至中央分析庫。
  • 結合 GTID、多線程從庫 (`slave_parallel_workers`)、按庫並行 (`slave_parallel_type=LOGICAL_CLOCK`) 進一步提升效能。
  • 應用層需自行處理衝突檢測(如主鍵衝突),資料庫不保證跨主庫數據一致性。
  • 仍屬開發版特性,生產環境謹慎評估。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved