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

MySQL 主從復制搭建筆記:單主單實例 → 多實例從庫 (GTID 前身實踐)

     編輯:MySQL 綜合教學

場景與環境宣告

  • 主庫:單實例,IP 192.168.199.21,server-id=1,開啟 log-bin。
  • 從庫:同一台物理機跑**多實例**(端口 3306 等),實例 server-id=06,初期未開 log-bin(只做從庫)。
  • 復制用戶:rep@'%',密碼 111111,權限 REPLICATION SLAVE。
  • 備份工具:mysqldump --master-data=1 獲取一致性位點。

一、主庫配置 (/etc/my.cnf)

[mysqld]
server-id = 1
log-bin = mysql-bin
# 建議補上
binlog_format = ROW
gtid_mode = ON          # 5.6+ 可選,本文未啟用
enforce_gtid_consistency = ON

二、建立復制賬號

mysql -uroot -p111111 -e "
GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%' IDENTIFIED BY '111111';
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'rep'@'%';"

三、主庫一致性備份 (獲取 Binlog 位點)

# 官方推薦流程:鎖表 → 記錄位點 → 備份 → 解鎖
# 這裡用 --master-data=1 直接在 dump 文件頭部輸出 CHANGE MASTER TO 語句
mysqldump -uroot -p111111 -A -B --events --master-data=1 --single-transaction > /backup/db.sql

--master-data=1 會在 dump 輸出:CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000025', MASTER_LOG_POS=107;,導入從庫後可直接 START SLAVE。

四、從庫導入備份

mysql -uroot -p111111 -S /data/3306/mysql.sock -e "
CHANGE MASTER TO
  MASTER_HOST='192.168.199.21',
  MASTER_PORT=3306,
  MASTER_USER='rep',
  MASTER_PASSWORD='111111',
  MASTER_LOG_FILE='mysql-bin.000025',
  MASTER_LOG_POS=107;
START SLAVE;
SHOW SLAVE STATUS\G"

六、驗證關鍵指標

*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.199.21
Master_User: rep
Master_Port: 3306
Master_Log_File: mysql-bin.000025
Read_Master_Log_Pos: 107
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 253
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

雙 Yes + Seconds_Behind_Master=0** = 復制正常運行。

七、多實例從庫擴展提示

  • 每個實例獨立 datadir、socket、port、server-id、relay-log。
  • 主庫 server-id 與所有從庫實例 server-id **全局唯一**。
  • 建議從庫也開啟 log-bin、log-slave-updates,支援鏈式復制、雙主切換、GTID 升級。

八、避坑提醒

  1. --master-data=1 需主庫有 RELOAD 權限 (root 當然有);若主庫極忙,考慮 --single-transaction (InnoDB) 避免長時間鎖表。
  2. 從庫 CHANGE MASTER TO 參數若與 dump 文件頭不一致,以實際執行的為準;建議直接 SOURCE /backup/db.sql 後再 START SLAVE,讓 dump 文件自動帶入位點。
  3. 防火牆放行 3306;SELinux 允許 mysqld 連接網絡。
  4. 監控 Seconds_Behind_Master、Slave_IO_Running/Slave_SQL_Running、Relay Log 磁碟佔用。

結語

本文記錄的是 **MySQL 5.6 時代經典「位點復制」搭建流程**。現代生產環境強烈建議啟用 **GTID (Global Transaction ID)** 復制:gtid_mode=ON + enforce_gtid_consistency=ON,配合 CHANGE MASTER TO MASTER_AUTO_POSITION=1 實現**無需手動管位點、故障自動定位、多源復制友好**。下一步:將此架構升級為 GTID + MHA/Orchestrator 自動故障轉移集群。

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