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

MySQL 5.1 在線熱備添加從庫:xtrabackup 實戰全記錄

     編輯:MySQL 綜合教學

場景與約束

  • 版本:MySQL 5.1.61(無 GTID,需手動指定 Binlog 文件+Position)
  • 架構:主 192.168.1.101 → 從1 192.168.1.102(正常) → 新從2 192.168.1.103
  • 引擎:InnoDB(支持 xtrabackup 熱備不鎖表)
  • 備份工具:Percona XtraBackup 已安裝

操作步驟

1. 主庫熱備(業務持續寫入)

# 插入測試數據模擬業務寫入
mysql> INSERT INTO a SELECT * FROM a;

# xtrabackup 熱備
innobackupex --user=root --password=xxx --defaults-file=/etc/my.cnf \
  --port=3306 --database=login /tmp/backup/ >/tmp/backup/innoback.log 2>&1

# 記錄關鍵位點
cat /tmp/backup/2014-02-22_07-43-36/xtrabackup_binlog_info
# 輸出示例:mysql-101-bin.000008  2423

2. 備份傳輸與從庫還原

# 壓縮傳輸
tar zcvf login.tar 2014-02-22_07-43-36
scp login.tar 192.168.1.103:/tmp/

# 從庫解壓應用日志
tar -xf login.tar
innobackupex --apply-log /tmp/2014-02-22_07-43-36/

# 停庫、清空數據目錄、還原
/etc/init.d/mysqld stop
mv /var/lib/mysql/* /tmp/mysqlback/
innobackupex --copy-back /tmp/2014-02-22_07-43-36/
mv /tmp/mysqlback/* /var/lib/mysql/   # 補回原配置/日志文件
chown -R mysql:mysql /var/lib/mysql
/etc/init.d/mysqld start

3. 驗證數據一致性

mysql> SELECT COUNT(*) FROM a;
+----------+
| count(*) |
+----------+
|  5418272 |  ← 與備份瞬間主庫一致
+----------+

4. 建立主從關係

# 讀取備份時位點
cat /var/lib/mysql/xtrabackup_binlog_pos_innodb
# mysql-101-bin.000008  2423

CHANGE MASTER TO
  MASTER_HOST='192.168.1.101',
  MASTER_USER='slave',
  MASTER_PASSWORD='slave',
  MASTER_LOG_FILE='mysql-101-bin.000008',
  MASTER_LOG_POS=2423;

START SLAVE;
SHOW SLAVE STATUS\G  -- 確認 Slave_IO/SQL_Running = Yes

關鍵提示

  • 只複製數據文件(.ibd/.frm),勿覆蓋目標庫原有日志/配置
  • --apply-log 步驟不可省略,保證數據頁一致性
  • MySQL 5.6+ 可用 GTID 簡化:CHANGE MASTER TO MASTER_AUTO_POSITION=1
  • 若原從庫可停機,也可在從庫備份並記錄 Relay_Master_Log_File/Exec_Master_Log_Pos
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved