MySQL 內建的 Replication(主從同步)是實現高可用、讀寫分離、異地備份的核心功能。本文詳細記錄基於 MySQL 5.0.15 / Ubuntu Linux 的標準主從架構部署流程,含參數設定、帳號授權、資料同步、啟動驗證與常見問題。
rep1,server-id=1,啟用 log-binrep2,server-id=2,指向 Masterbasedir=/usr/local/mysql,datadir=/usr/local/mysql/data[mysqld]
server-id = 1
log-bin
binlog-ignore-db = mysql # 不同步系統庫,避免權限異步
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';
-- Session 1:鎖定並保持
FLUSH TABLES WITH READ LOCK;
-- Session 2:打包資料目錄
cd /usr/local/mysql
tar zcf data.tar.gz ./data
-- 複製到 Slave 解壓、修正權限後,回 Session 1
UNLOCK TABLES;
[mysqld]
server-id = 2
master-host = rep1
master-user = rep
master-password = rep
master-port = 3306
replicate-ignore-db = mysql
replicate-do-db = yejr # 僅同步指定庫,可重複多行
mysql -h rep1 -u rep -prep
SHOW GRANTS;
-- 確認具備 REPLICATION SLAVE、SELECT、FILE 權限
-- Slave 端
START SLAVE;
SHOW SLAVE STATUS\G
關鍵指標皆為 Yes 即代表成功:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
master-host 解析、帳號主機名匹配SHOW SLAVE STATUS\G 觀察 Last_Error,常見為主鍵衝突、欄位定義不一致sync_binlog、innodb_flush_log_at_trx_commit 設定STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;(謹慎使用)主從同步是 MySQL 高可用架構的基石。嚴格遵循「版本相容、server-id 唯一、binlog 格式一致、權限最小化、資料一致性驗證」五大原則,即可建立穩定可靠的同步鏈路。