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

MySQL 主從同步快速部署指南:CentOS + xtrabackup 熱備遷移 + GTID 免配置

     編輯:MySQL 資料庫相關知識

架構與版本

  • OS:CentOS 5.4
  • MySQL:5.1.x (RPM 安裝)
  • xtrabackup:1.2.22 (RPM)
  • Master IP:10.0.0.1,Slave IP:10.0.0.2

1. Master 配置(/etc/my.cnf)


[mysqld]
server-id = 1
log-bin = mysql-bin
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
datadir = /var/lib/mysql
character-set-server = utf8
init_connect = 'SET NAMES utf8'

2. Slave 配置(/etc/my.cnf)


[mysqld]
server-id = 2
datadir = /var/lib/mysql
character-set-server = utf8
init_connect = 'SET NAMES utf8'
# 5.6+ 可加:relay-log, log-slave-updates, gtid_mode=ON, enforce_gtid_consistency=ON

3. Master 建立同步帳號


GRANT REPLICATION SLAVE ON *.*
TO 'repl_user'@'10.0.0.2'
IDENTIFIED BY 'StrongReplPass!23';
FLUSH PRIVILEGES;

4. 熱備遷移資料(xtrabackup,鎖表極短)


# Master 執行:串流備份並 SSH 直接解壓到 Slave
innobackupex --stream=tar /tmp/ | ssh 10.0.0.2 "mkdir -p /tmp/db && tar xfi - -C /tmp/db/"

5. Slave 還原與啟動


# 套用日誌(prepare)
innobackupex --apply-log /tmp/db

# 複製回 datadir
innobackupex --copy-back /tmp/db

# 修正權限
chown -R mysql:mysql /var/lib/mysql/*

# 啟動 MySQL
systemctl start mysqld

6. 讀取 binlog 位點並建立同步


# 查看 xtrabackup 記錄的位點
cat /var/lib/mysql/xtrabackup_binlog_info
# 輸出範例:mysql-bin.000001  123456

# Slave 執行
CHANGE MASTER TO
    MASTER_HOST='10.0.0.1',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='StrongReplPass!23',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=123456;

START SLAVE;

# 驗證
SHOW SLAVE STATUS\G
# 關鍵:Slave_IO_Running=Yes, Slave_SQL_Running=Yes, Seconds_Behind_Master=0

7. 監控與維護

  • SHOW SLAVE STATUS 定期巡檢 Seconds_Behind_Master、Last_Error。
  • 忽略特定錯誤:SET GLOBAL sql_slave_skip_counter=1; START SLAVE;(謹慎使用)。
  • 5.6+ 建議啟用 **GTID**(MASTER_AUTO_POSITION=1),免手動管理位點。

常見坑點

  • server-id 唯一,不可重複。
  • 防火牆放行 3306(Slave→Master)。
  • 字元集 Master/Slave 一致,否則同步報錯。
  • 大事務導致延遲:調大 slave_pending_jobs_size_max、slave_parallel_workers (5.6+)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved