MySQL中Xtrabackup高效部署實現(xiàn)主從復(fù)制方案
在 MySQL 主從復(fù)制部署中,mysqldump 適合中小規(guī)模數(shù)據(jù)庫,但面對超大規(guī)模數(shù)據(jù)(>50GB)時,備份恢復(fù)效率低下。Percona Xtrabackup 作為開源熱備份工具,具備備份速度快、占用資源少、不影響業(yè)務(wù)運行的優(yōu)勢,是大規(guī)模數(shù)據(jù)庫主從復(fù)制的優(yōu)選方案。本文將詳細講解基于 Xtrabackup 的主從復(fù)制完整部署流程。
一、前置準備
- 主從服務(wù)器已安裝 MySQL(版本一致)
- 主從服務(wù)器網(wǎng)絡(luò)互通(開放 MySQL 端口 3306、SCP 傳輸端口 22)
- 主庫已創(chuàng)建復(fù)制用戶(
repl)并授權(quán):
CREATE USER 'repl'@'192.168.184.%' IDENTIFIED BY 'Uid_dQc63'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.184.%'; FLUSH PRIVILEGES;
- 主從服務(wù)器安裝 Xtrabackup(推薦 8.0+ 版本)
二、部署步驟(主庫:192.168.184.151;從庫:192.168.184.152)
步驟 1:主庫執(zhí)行全量備份
Xtrabackup 直接復(fù)制數(shù)據(jù)文件并記錄 Binlog 位點,支持流模式輸出備份文件(適合大文件傳輸):
# 主庫執(zhí)行備份命令(需輸入 root 密碼) xtrabackup --defaults-file=/data/mysql/conf/my.cnf -uroot -p --backup --stream=xbstream --target-dir=./ > /data/backup/xtrabackup_bak/xtrabackup.xbstream
- 備份文件保存路徑:
/data/backup/xtrabackup_bak/xtrabackup.xbstream - 核心參數(shù):
--stream=xbstream流式輸出,減少磁盤占用
步驟 2:備份文件傳輸至從庫
使用 SCP 傳輸備份文件,從庫需提前創(chuàng)建接收目錄:
# 從庫創(chuàng)建目錄(若不存在) mkdir -p /data/backup/recover # 主庫執(zhí)行傳輸命令 scp /data/backup/xtrabackup_bak/xtrabackup.xbstream 192.168.184.152:/data/backup/recover

步驟 3:從庫清空原有數(shù)據(jù)(重要)
全量備份恢復(fù)前需清空從庫數(shù)據(jù)目錄和 Binlog 目錄,避免數(shù)據(jù)沖突:
# 關(guān)閉從庫 MySQL /etc/init.d/mysql.server stop # 清空數(shù)據(jù)目錄(確認路徑正確?。? rm /data/mysql/data/* -rf # 清空 Binlog 目錄 rm /data/mysql/binlog/* -rf
生產(chǎn)環(huán)境注意:清空前需備份從庫原有數(shù)據(jù)

步驟 4:從庫恢復(fù)備份(三階段)
Xtrabackup 恢復(fù)需經(jīng)過「解壓 → 準備 → 復(fù)制」三個關(guān)鍵步驟:
- 解壓備份文件:
cd /data/backup/recover xbstream -x .xbstream
- 準備備份(一致性校驗):
xtrabackup --prepare --target-dir=./
- 作用:修復(fù)備份中的不一致數(shù)據(jù),確?;謴?fù)后的數(shù)據(jù)可用
- 復(fù)制數(shù)據(jù)到從庫數(shù)據(jù)目錄:
xtrabackup --defaults-file=/data/mysql/conf/my.cnf --copy-back --target-dir=./
步驟 5:啟動從庫并配置主從復(fù)制
修改數(shù)據(jù)目錄權(quán)限:
MySQL 數(shù)據(jù)目錄必須屬于
mysql用戶,否則無法啟動:
chown -R mysql:mysql /data/mysql
- 啟動從庫并驗證:
/etc/init.d/mysql.server start ps -ef | grep mysql # 查看進程是否正常

提取 Binlog 位點:
備份文件中包含
xtrabackup_binlog_info,記錄備份時的同步起點:
cat /data/backup/recover/xtrabackup_binlog_info # 輸出示例:mysql-bin.000029 196(Binlog 文件+位點)

- 配置主從關(guān)系并啟動復(fù)制:
-- 從庫執(zhí)行 SQL 命令(替換為實際位點) CHANGE MASTER TO MASTER_HOST='192.168.184.151', MASTER_USER='repl', MASTER_PASSWORD='Uid_dQc63', MASTER_LOG_FILE='mysql-bin.000029', # 從 xtrabackup_binlog_info 提取 MASTER_LOG_POS=196; # 從 xtrabackup_binlog_info 提取 -- 啟動復(fù)制 start slave;

步驟 6:驗證主從同步狀態(tài)
- 查看復(fù)制狀態(tài):
SHOW SLAVE STATUS\G
關(guān)鍵指標(需均滿足):
Slave_IO_Running: Yes(IO 線程正常)Slave_SQL_Running: Yes(SQL 線程正常)Seconds_Behind_Master: 0(無延遲)

- 數(shù)據(jù)同步測試:
-- 主庫插入測試數(shù)據(jù) INSERT INTO maria.repl_test SELECT 2; -- 從庫查詢驗證(應(yīng)返回 id=1 和 id=2) SELECT * FROM maria.repl_test;

三、核心對比:兩種主從部署方式
| 部署方式 | 優(yōu)點 | 缺點 | 適用場景 |
|---|---|---|---|
| 基于位點(mysqldump) | 操作簡單、無需額外工具 | 備份恢復(fù)慢、占空間大 | 中小規(guī)模(GB) |
| Xtrabackup | 熱備份、速度快、省資源 | 需安裝工具、步驟稍多 | 大規(guī)模數(shù)據(jù)庫(>50GB) |
四、關(guān)鍵注意事項
- server_id 唯一性:主從架構(gòu)中所有 MySQL 實例的 server_id 必須不同(主庫建議設(shè)為 1,從庫設(shè)為 2+)。
- Binlog 位點準確性:從 xtrabackup_binlog_info 提取位點,錯誤位點會導(dǎo)致同步失敗。
- 數(shù)據(jù)目錄權(quán)限:恢復(fù)后必須執(zhí)行 chown -R mysql:mysql,否則 MySQL 啟動報錯。
- GTID 模式:本文基于傳統(tǒng)位點復(fù)制,需關(guān)閉 GTID(gtid_mode=OFF);若使用 GTID,需調(diào)整配置并修改同步命令。
- 定期驗證:部署后需定期執(zhí)行 SHOW SLAVE STATUS\G 和數(shù)據(jù)測試,避免復(fù)制中斷。
總結(jié)
Xtrabackup 憑借熱備份、高效能的優(yōu)勢,完美解決了大規(guī)模 MySQL 數(shù)據(jù)庫的主從復(fù)制部署痛點。遵循「備份 → 傳輸 → 恢復(fù) → 配置 → 驗證」的流程,結(jié)合關(guān)鍵注意事項,可快速搭建穩(wěn)定的主從架構(gòu)。建議根據(jù)數(shù)據(jù)量選擇合適的部署方式,中小規(guī)模用 mysqldump,大規(guī)模優(yōu)先 Xtrabackup。
到此這篇關(guān)于MySQL中Xtrabackup高效部署實現(xiàn)主從復(fù)制方案的文章就介紹到這了,更多相關(guān)MySQL Xtrabackup主從復(fù)制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql和hive中幾種關(guān)聯(lián)(join/union)區(qū)別及說明
本文主要介紹了MySQL和Hive中各種連接和合并操作的用法,包括INNER JOIN、LEFT JOIN、RIGHT JOIN、LEFT SEMI JOIN以及UNION和UNION ALL,同時,也提到了Hive在處理連接時的一些特殊規(guī)則和限制2025-11-11
允許任意IP訪問mysql數(shù)據(jù)庫的方法詳解
MYSQL默認只能本地連接,即127.0.0.1和localhost,其他主機IP無法訪問數(shù)據(jù)庫,那么如何允許任意IP訪問mysql數(shù)據(jù)庫,所以本文小編將給大家介紹允許任意IP訪問mysql數(shù)據(jù)庫的方法,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下2024-01-01
使用MySQL的Explain執(zhí)行計劃的方法(SQL性能調(diào)優(yōu))
這篇文章主要介紹了使用MySQL的Explain執(zhí)行計劃的方法(SQL性能調(diào)優(yōu)),使用EXPLAIN關(guān)鍵字可以模擬優(yōu)化器執(zhí)行SQL語句,具體詳解,需要的小伙伴可以參考一下2022-08-08
MySQL中datetime和timestamp的區(qū)別及使用詳解
這篇文章主要介紹了MySQL中datetime和timestamp的區(qū)別及使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

