目錄
1.關于Percona XtraBackup
2.?Percona XtraBackup有哪些特點?
3.安裝Percona XtraBackup
3.1.環境信息
3.2.安裝步驟?
?4.?xtrabackup內部流程圖
5.Percona XtraBackup基礎語法
5.1.全量備份
5.2.增量備份
5.2.1.基于全量備份的增量備份
5.2.2.基于前一個增量備份的增量備份
5.2.3.備份準備
5.3.數據恢復
6.總結?
1.關于Percona XtraBackup
Percona XtraBackup是世界上唯一的開源、免費的MySQL熱備份 為InnoDB和XtraDB執行非阻塞備份的軟件 數據庫。使用Percona XtraBackup,您可以獲得以下好處:
快速可靠地完成備份
備份期間不中斷的事務處理
節省磁盤空間和網絡帶寬
自動備份驗證
更快的恢復時間導致更高的延遲
2.?Percona XtraBackup有哪些特點?
以下是Percona XtraBackup功能的簡短列表。
創建熱InnoDB備份而無需暫停數據庫
對MySQL進行增量備份
將壓縮的MySQL備份流式傳輸到另一臺服務器
在線在MySQL服務器之間移動表
輕松創建新的MySQL復制副本
備份MySQL而不增加服務器負載
備份鎖是Percona Server 5.6+中可用的
FLUSH TABLES WITH READ LOCK
的輕量級替代方案。Percona XtraBackup使用它們自動復制非InnoDB數據,以避免阻塞修改InnoDB表的DML查詢。Percona XtraBackup根據每秒IO操作數執行限制。
Percona XtraBackup跳過輔助索引頁,并在準備緊湊備份時重新創建它們。
Percona XtraBackup甚至可以從完整備份中導出單個表,無論InnoDB版本如何。
使用Percona XtraBackup導出的表可以導入Percona Server 5.1、5.5或5.6+或MySQL 5.6+。
3.安裝Percona XtraBackup
3.1.環境信息
主機IP | 操作系統 | Mysql版本 | XtraBackup版本 |
---|---|---|---|
172.17.0.2 | CentOS Stream release 9 | 8.0.37 | 8.0.35 |
3.2.安裝步驟?
Percona XtraBackup的安裝方法有三中YUM倉庫安裝,RPM包安裝,源碼編譯安裝,下面介紹到的是YUM倉庫安裝
-
以
root
用戶身份或使用sudo運行以下命令來安裝Percona yum倉庫:sudo yum install \ https://repo.percona.com/yum/percona-release-latest.\ noarch.rpm
-
啟用存儲庫:
sudo percona-release enable-only tools release
如果Percona XtraBackup預期與 上游MySQL服務器,只需要開啟`tools倉庫:
sudo percona-release enable-only tools
-
通過運行以下命令安裝Percona XtraBackup:
sudo yum install percona-xtrabackup-80
警告:
在CentOS 6上安裝Percona XtraBackup之前,請確保安裝了
libev
軟件包。對于此操作系統,可以從EPEL存儲庫中獲得libev
包。 -
要對使用
LZ4
或ZSTD
壓縮算法進行的備份進行重新編譯,請安裝相應的軟件包:sudo yum install zstd
?4.?xtrabackup內部流程圖
5.Percona XtraBackup基礎語法
Percona XtraBackup 提供了一系列豐富的命令行選項來執行MySQL和Percona Server的熱備份操作。以下是一些基本和常用的語法示例,涵蓋了全量備份、增量備份、備份準備和恢復等操作:
5.1.全量備份
xtrabackup --backup --user=root --password=<your_password> \ 2 --host=<hostname_or_ip> --port=<port_number> \ 3 --target-dir=<backup_directory>
--backup
?表示執行備份操作。--user
?和?--password
?分別指定MySQL的用戶名和密碼。--host
?和?--port
?指定MySQL服務器的地址和端口。--target-dir
?指定備份文件存放的目錄。
5.2.增量備份
5.2.1.基于全量備份的增量備份
xtrabackup --backup --incremental-basedir=<full_backup_directory> \ 2 --target-dir=<incremental_backup_directory> \ 3 --user=root --password=<your_password> \ 4 --host=<hostname_or_ip> --port=<port_number>
--incremental-basedir
?指定增量備份基于的全量備份目錄。
5.2.2.基于前一個增量備份的增量備份
xtrabackup --backup --incremental-basedir=<previous_incremental_backup_directory> \ 2 --target-dir=<new_incremental_backup_directory> \ 3 --user=root --password=<your_password> \ 4 --host=<hostname_or_ip> --port=<port_number>
5.2.3.備份準備
對于全量備份,執行以下命令準備數據以便恢復:
xtrabackup --prepare --apply-log-only --target-dir=<backup_directory>
對于增量備份鏈,需要先對全量備份進行準備,然后依次對每個增量備份執行準備操作,最終對整個鏈進行最終的準備:
xtrabackup --prepare --apply-log-only --target-dir=<prepared_full_backup_directory> \ 2 --incremental-dir=<incremental_backup_directory>
5.3.數據恢復
將準備好的備份數據恢復到MySQL數據目錄:
# 先停止MySQL服務
sudo systemctl stop mysql# 將備份數據復制到MySQL數據目錄(示例使用全量備份)
rsync -avP <prepared_backup_directory>/ /var/lib/mysql/# 調整文件權限和屬主
chown -R mysql:mysql /var/lib/mysql/# 啟動MySQL服務
sudo systemctl start mysql
6.總結?
本篇文章介紹了Percona XtraBackup工具的安裝、使用以及原理,后面會發布Percona XtraBackup的實戰篇