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

MySQL 主從複制詳解(一):核心原理與架構

     編輯:MySQL 綜合教學

MySQL 主從複制詳解(一):核心原理與架構

MySQL 複制是實現高可用、讀寫分離及災備的基石。本文將深入淺出地解析 MySQL 複制的核心機制,幫助你建立清晰的認知框架。

複制的基本拓撲

最經典的拓撲是「一主多從」。主庫負責寫入操作,從庫負責讀取操作,並通過二進制日志同步數據。主庫將數據變更記錄到 Binary Log,從庫通過 I/O 線程拉取日志並存入 Relay Log,再由 SQL 線程重放執行,實現數據同步。

核心線程與流程

  • 主庫 Binlog Dump 線程:為每個從庫創建一個線程,發送二進制日志事件。
  • 從庫 I/O 線程:連接主庫,請求日志並寫入本地 Relay Log。
  • 從庫 SQL 線程:讀取 Relay Log,解析並執行其中的事件,回放數據變更。

複制格式選擇

MySQL 支持三種複制格式,各有優劣:

  • Statement-Based Replication (SBR):記錄 SQL 語句。優點是日志體積小;缺點是某些非確定性函數(如 UUID()、NOW())會導致主從數據不一致。
  • Row-Based Replication (RBR):記錄行級變更。優點是數據絕對一致,支持所有場景;缺點是日志體積大,特別是大批量更新時。
  • Mixed-Based Replication (MBR):默認使用 SBR,遇到不安全語句自動切換為 RBR。兼顧了性能與一致性,是生產環境推薦選擇。

關鍵配置參數

# 主庫配置
server-id=1
log-bin=mysql-bin
binlog-format=MIXED
expire_logs_days=7

# 從庫配置
server-id=2
relay-log=mysql-relay
read_only=1

常見問題與排查

複制延遲是最常見的痛點。可通過 SHOW SLAVE STATUS\G 觀察 Seconds_Behind_Master 指標。優化方向包括:提升從庫硬件配置、優化長事務、啟用並行複制(MySQL 5.6+ 支持庫級並行,5.7+ 支持邏輯時鐘並行)。

下一篇將詳細講解 GTID 複制、半同步複制以及故障切換實戰。

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