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

MySQL 主從安裝配置全流程:從環境準備到常見錯誤修復實戰

     編輯:MySQL 綜合教學

環境規劃

角色IPMySQL 版本Server ID
Master192.168.0.15.1.341
Slave192.168.0.25.1.342

Master 端配置

1. 編輯 /etc/my.cnf

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = test      # 需同步的庫,多行可寫多個
binlog-ignore-db = mysql # 不同步的庫
log-slave-updates        # 級聯復制必開
slave-skip-errors = 1062,1032  # 跳過主鍵衝突等(慎用)

2. 建立復制賬號

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.0.2' IDENTIFIED BY '111111';
FLUSH PRIVILEGES;

3. 鎖表、記錄 Binlog 位置、打包數據

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
-- 記錄 File: mysql-bin.000001, Position: 106
-- 另開終端打包數據目錄
cd /usr/local/mysql
tar zcvf var.tar.gz var

Slave 端配置

1. 傳輸解包、修正權限

scp 192.168.0.1:/usr/local/mysql/var.tar.gz .
tar zxvf var.tar.gz
chown -R mysql:mysql var

2. 編輯 /etc/my.cnf

[mysqld]
server-id = 2
log-bin = mysql-bin
master-host = 192.168.0.1
master-user = slave
master-password = 111111
master-port = 3306
replicate-do-db = test
replicate-ignore-db = mysql
master-connect-retry = 60
log-slave-updates
slave-skip-errors = 1062,1032

3. 驗證連通性、配置同步點、啟動

# 測試連接
mysql -h192.168.0.1 -uslave -p111111

# 配置同步座標
SLAVE STOP;
CHANGE MASTER TO
  MASTER_HOST='192.168.0.1',
  MASTER_USER='slave',
  MASTER_PASSWORD='111111',
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=106;

SLAVE START;
SHOW SLAVE STATUS\G;

成功標誌: Slave_IO_Running: Yes 且 Slave_SQL_Running: Yes

4. 解鎖 Master

UNLOCK TABLES;

常見錯誤與修復速查表

現象可能原因修復步驟
IO_Running:Yes
SQL_Running:No
Slave 寫入導致數據衝突 / 重啟事務回滾Master 取最新 SHOW MASTER STATUS → Slave CHANGE MASTER TO 新位置 → START SLAVE
IO_Running:No
Seconds_Behind_Master:NULL
Master 端故障 / Binlog 損壞service mysql restart Master → 重新同步座標 → 重啟 Slave
連接被拒絕防火牆 / bind-address / 用戶宿主不匹配檢查 3306 端口、bind-address=0.0.0.0、GRANT ...@'IP'

核心原理補充

  • **三線程模型**:Master Binlog Dump 線程 → Slave IO 線程(寫 Relay Log) → Slave SQL 線程(回放)
  • **異步復制**:Master 不等待 Slave 確認,極端情況下可能丟數據(5.7+ 可用半同步)
  • **過濾規則**:Master 端 binlog-do/ignore-db 由「當前默認庫」決定,易誤判;Slave 端 replicate-do/ignore-* 更安全但傳輸量大

總結

標準化部署腳本 + 固定檢查清單(網絡、權限、Server ID、Binlog 位置、防火牆、bind-address)= 可靠主從。文檔記錄每次變更的 Binlog 位置,災難恢復時可精準定位。

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