首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 主從復制核心原理與配置實戰:異步、半同步模式全解析

     編輯:MySQL 綜合教學

MySQL 主從復制核心原理與配置實戰:異步、半同步模式全解析

MySQL 主從復制採用 C/S 架構:Master 為寫入節點,Slave 通過 I/O 線程拉取二進制日志,經中繼日志由 SQL 線程重放,實現數據同步。本文覆蓋原理、常見拓撲、異步與半同步配置全流程。

核心復制原理

  1. Slave I/O 線程向 Master 請求數據。
  2. Master 驗證通過,啟動 Dump 線程發送 Binlog 事件。
  3. Slave I/O 線程接收寫入中繼日志。
  4. Slave SQL 線程檢測中繼日志變更,重放更新本地數據。

常見復制拓撲

1. 一主一從

架構簡單、成本低,適合負載較低、可用性要求一般的場景。Master 壓力大或單點故障風險高時不適用。

2. 一主多從

利用讀寫分離分攤讀壓力,Slave 可承擔備份、數據挖掘等任務。但 Slave 過多會加重 Master Dump 線程負擔,成為瓶頸。

其他如多級中繼、環狀復制原理類似,不再贅述。

異步復制配置步驟

前置條件:

  • Master:啟用 Binlog、配置唯一 server-id、建立復制用戶。
  • Slave:啟用中繼日志、配置唯一 server-id、指定 Master 連接信息。

操作命令

Master 建用戶:

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'10.12.%' IDENTIFIED BY '123456';

Slave 配置連接:

CHANGE MASTER TO 
  MASTER_HOST='10.12.128.19', MASTER_PORT=3306,
  MASTER_USER='repl', MASTER_PASSWORD='123456',
  MASTER_LOG_FILE='mysql-bin.000006', MASTER_LOG_POS=451;

查看狀態:SHOW SLAVE STATUS\G 確認 Slave_IO_Running: Yes、Slave_SQL_Running: Yes、Seconds_Behind_Master: 0。
啟動復制:START SLAVE;(可單獨啟動 IO_THREAD/SQL_THREAD)。若 IO 線程卡在 Connecting,檢查防火牆。

半同步復制配置(基於 Google 插件)

原理:事務在 Master 提交前,需至少一台 Slave 接收並寫入中繼日志,超時自動降級為異步。建立在異步基礎上。

安裝插件

Master:INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
Slave:INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

啟用功能

Master:

SET GLOBAL rpl_semi_sync_master_enabled = 1;
SET GLOBAL rpl_semi_sync_master_timeout = 100; -- 毫秒

Slave:

SET GLOBAL rpl_semi_sync_slave_enabled = ON;
STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;

驗證狀態

SHOW GLOBAL STATUS LIKE 'rpl%'; 觀察 Rpl_semi_sync_master_status: ON、Rpl_semi_sync_slave_status: ON 及相關計數器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved