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

MySQL 5.0+ 主從同步配置完整指南:從零開始搭建高可用架構

     編輯:MySQL 資料庫相關知識

前言

MySQL 主從同步是實現資料庫高可用、讀寫分離與災備的核心技術。本文將以 MySQL 5.0 以上版本為例,詳細記錄從主庫建立同步帳號、修改配置檔、啟動服務到驗證同步狀態的完整操作流程,助你快速落地生產環境級的主從架構。

一、主庫配置:建立同步資料庫與授權帳號

1. 連線主庫並建立測試資料庫

首先透過 Socket 連線進入 MySQL:

mysql -S /tmp/MySQL-3108.sock

建立用於同步驗證的資料庫 sinatest:

CREATE DATABASE sinatest;

2. 建立同步專用帳號

為安全起見,建議僅授予必要權限。此處示範授予所有權限(生產環境請按最小權限原則調整):

GRANT ALL ON *.* TO 'ali'@'%' IDENTIFIED BY 'abc111';

3. 修改主庫配置檔 my.cnf

編輯主庫配置檔(路徑視實際安裝而定,本例為 /data2/ali/MySQL3308/my.cnf),在 [mysqld] 區段新增:

binlog-do-db=sinatest

說明:此參數指定僅記錄 sinatest 資料庫的二進位日誌,減少不必要的日誌開銷。

二、從庫配置:指定主庫連線資訊

編輯從庫配置檔(本例為 /data2/ali/MySQL3309/my.cnf),在 [mysqld] 區段新增以下參數:

master-host=127.0.0.1
master-user=ali
master-password=abc111
master-port=3308
server-id=2
master-connect-retry=60
replicate-do-db=sinatest
log-slave-updates
參數用途
server-id唯一識別從庫,不可與主庫(通常為 1)重複
replicate-do-db僅同步指定資料庫
log-slave-updates將從庫接收到的變更寫入自身二進位日誌,支援級聯同步
master-connect-retry連線失敗後重試間隔(秒)

三、重啟 MySQL 服務使配置生效

依序停止並啟動主從兩個實例:

# 停止現有進程後啟動主庫
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/MySQL3308/my.cnf --user=root &

# 啟動從庫
/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/MySQL3309/my.cnf --user=root &

四、驗證同步是否正常

1. 在主庫建立測試表並寫入資料

mysql -S /tmp/MySQL-3108.sock
USE sinatest;
CREATE TABLE IF NOT EXISTS ali_test_00 (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `my_id` VARCHAR(16) BINARY NOT NULL DEFAULT '',
  `my_title` VARCHAR(96) BINARY NOT NULL DEFAULT '',
  `status` INT(11) UNSIGNED NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  KEY `my_id` (`my_id`)
) ENGINE=MyISAM;

INSERT INTO ali_test_00 VALUES (NULL, 32, 'aliwwww', 1);
INSERT INTO ali_test_00 VALUES (NULL, 32, 'aliwwww', 1);

2. 檢查從庫是否同步表結構與資料

登入從庫執行 SHOW TABLES; 及 SELECT * FROM ali_test_00;,確認表與兩筆資料已出現。

五、常用監控與維護指令速查

指令用途
SHOW SLAVE STATUS\G查看從庫同步狀態(重點關注 Slave_IO_Running、Slave_SQL_Running、Seconds_Behind_Master)
SHOW MASTER STATUS\G查看主庫目前 Binlog 檔名與位置
SLAVE STOP; / SLAVE START;停止/啟動同步執行緒
CHANGE MASTER TO ...動態調整主庫連線參數(如切換 Binlog 位點)

範例:手動指定同步起始位點

CHANGE MASTER TO
  MASTER_HOST='127.0.0.1',
  MASTER_USER='ali',
  MASTER_PASSWORD='abc111',
  MASTER_LOG_FILE='mysql-bin.000003',
  MASTER_LOG_POS=0;

六、避坑指南與最佳實踐

  • 版本一致性:主從版本建議保持一致,或從庫版本高於主庫,避免語法不相容。
  • 防火牆與網路:確保 3306/3308 埠在雙向通暢,必要時配置安全群組規則。
  • 監控告警:生產環境務必對 Seconds_Behind_Master 設定告警,延遲超過閾值立即介入。
  • GTID 模式(MySQL 5.6+):新部署強烈建議啟用 GTID,簡化故障切換與拓撲變更。

結語

完成上述步驟後,你已擁有一套基於 Binlog 的 MySQL 主從同步架構。後續可進一步引入 ProxySQL、Orchestrator 或 MHA 實現自動故障轉移與讀寫分離,構建企業級高可用資料庫叢集。

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