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

MySQL 主從同步完整設定指南:從架構規劃到驗證上線

     編輯:MySQL 資料庫相關知識

MySQL 內建的 Replication(主從同步)是實現高可用、讀寫分離、異地備份的核心功能。本文詳細記錄基於 MySQL 5.0.15 / Ubuntu Linux 的標準主從架構部署流程,含參數設定、帳號授權、資料同步、啟動驗證與常見問題。

架構規劃與版本原則

  • Master:rep1,server-id=1,啟用 log-bin
  • Slave:rep2,server-id=2,指向 Master
  • 版本原則:Master 版本 ≤ Slave 版本(binlog 格式向前相容)
  • 雙方 basedir=/usr/local/mysql,datadir=/usr/local/mysql/data

Master 端設定

1. 修改 my.cnf

[mysqld]
server-id = 1
log-bin
binlog-ignore-db = mysql   # 不同步系統庫,避免權限異步

2. 建立同步專用帳號

GRANT REPLICATION SLAVE ON *.* TO 'rep'@'rep2' IDENTIFIED BY 'rep';
-- 若需支援 LOAD TABLE FROM MASTER,需額外授予 FILE、SELECT
GRANT FILE, SELECT, REPLICATION SLAVE ON *.* TO 'rep'@'rep2' IDENTIFIED BY 'rep';

3. 鎖表備份資料

-- Session 1:鎖定並保持
FLUSH TABLES WITH READ LOCK;

-- Session 2:打包資料目錄
cd /usr/local/mysql
tar zcf data.tar.gz ./data

-- 複製到 Slave 解壓、修正權限後,回 Session 1
UNLOCK TABLES;

Slave 端設定

1. 修改 my.cnf

[mysqld]
server-id = 2
master-host = rep1
master-user = rep
master-password = rep
master-port = 3306
replicate-ignore-db = mysql
replicate-do-db = yejr      # 僅同步指定庫,可重複多行

2. 驗證連線權限

mysql -h rep1 -u rep -prep
SHOW GRANTS;
-- 確認具備 REPLICATION SLAVE、SELECT、FILE 權限

3. 啟動同步並驗證

-- Slave 端
START SLAVE;
SHOW SLAVE STATUS\G

關鍵指標皆為 Yes 即代表成功:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

常見問題 FAQ

  • IO 執行緒無法連線:檢查防火牆、master-host 解析、帳號主機名匹配
  • SQL 執行緒報錯:SHOW SLAVE STATUS\G 觀察 Last_Error,常見為主鍵衝突、欄位定義不一致
  • 同步延遲大:檢查 Slave 機器效能、sync_binlog、innodb_flush_log_at_trx_commit 設定
  • 跳過錯誤:STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;(謹慎使用)

結語

主從同步是 MySQL 高可用架構的基石。嚴格遵循「版本相容、server-id 唯一、binlog 格式一致、權限最小化、資料一致性驗證」五大原則,即可建立穩定可靠的同步鏈路。

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