MySQL備份與恢復——基於Xtrabackup物理備份恢復

龍山游龍發表於2021-07-12

一、說明

Percona XtraBackup工具提供了一種在執行MySQL資料熱備的方法。Percona XtraBackup是一個免費的、線上的、開源的、完整的資料庫備份解決方案,適用於MySQL和MySQL®的所有版本的Percona伺服器。

Percona XtraBackup在事務系統上執行線上非阻塞、緊密壓縮、高度安全的完全備份,在備份時不會影響應用正常使用。

Percona Xtrabackup是一款開源的備份工具,支援Innodb、Mysiam、Xtradb等儲存引擎資料的線上熱備。其特點是備份速度快,對innodb型業務資料幾乎無影響,對Myisam型資料會暫時性的鎖表,且恢復速度更快。通常,Percona Xtrabackup軟體部署有三種常見的方式,分別是rpm包、二進位制包以及原始碼編譯的方式安裝。建議:使用二進位制包方式安裝,方便快捷。

1.1Percona Xtrabackup優勢

  1. 快速可靠的資料庫備份(如熱備份、增量備份、bacula備份等)

  2. 份期間不間斷的事務處理

  3. 節省磁碟空間和網路頻寬與更好的壓縮

  4. 自動備份驗證

  5. 更高的正常執行時間,因為更快的恢復時間

  6. 於時間點恢復

1.2Percona Xtrabackup軟體下載

1.3Percona Xtrabackup軟體部署

在Linux系統建立/Xtrabackup目錄,上傳介質包percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz

shell> mkdir –p /Xtrabackup
sftp> cd /Xtrabackup
sftp> put percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz

解壓介質包,並設定環境變數

shell> cd /XtraBackup/
shell> tar zxvf percona-xtrabackup-2.3.10-Linux-x86_64.tar.gz
shell> pwd
/XtraBackup/percona-xtrabackup-2.3.10-Linux-x86_64/bin
shell> vi /etc/profile
export PATH=/mysql/app/bin:/XtraBackup/percona-xtrabackup-2.3.10-Linux-x86_64/bin:$PATH
shell> source /etc/profile
shell> su -

至此,Percona Xtrabackup部署完成。

二、常用的引數列表

常用引數
含義
-u 賬戶
-p 密碼
-P
-S 套接字
-H 主機ip
--defaults-file 讀取引數檔案位置
--databases 指定資料庫
--no-timestamp 不生成時間戳
--slave-info 獲取主庫端binlog位置
--incremental 建立增量備份

--incremental-basedir

指定full backup目錄

--incremental-dir 增量備份目錄
--redo-only 增量恢復使用
--apply-log 應用日誌
--copy-back 拷貝到相應目錄
--move-back 移動到相應目錄

三、備份恢復案例

3.1 全域性備份恢復

3.1.1 全域性備份

innobackupex --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock -uroot -pmysql [--slave-info]  /xtrabak

3.1.2 日誌應用

innobackupex --apply-log /Xtrabackup/backup/2018-07-28_15-11-12

3.1.3全域性恢復

innobackupex --defaults-file=/etc/my.cnf --copy-back /Xtrabackup/backup/2018-07-28_15-11-12

注:使用copy-back引數 datadir目錄必須為空

3.2單表/多表備份恢復

3.2.1單表/多表備份

innobackupex --defaults-file=/usr/my.cnf --socket=/tmp/mysql.sock  -uroot -proot (-–slave-info) --no-timestamp --databases="yzw.a [yzw.b]" /xtrabak

注:格式為 庫名.表名,可同時將不同庫下表進行匯出

3.2.2日誌應用

innobackupex --apply-log /Xtrabackup/backup/2018-07-28_15-11-12

3.2.3單表恢復

1.恢復準備,應用日誌從開始點到備份結束點

innobackupex --apply-log --export /xtrabackup/backup

2.生產端獲取建表語句並在目標端建立

3.目標端解除安裝ibd檔案

alter table test.a discard tablespace;

4.目標端拷貝備份檔案至庫目錄

cp a.cfg a.exp a.ibd /var/lib/mysql/data/test/

5.目標端修改拷貝檔案許可權

chown -R mysql:mysql /var/lib/mysql/data/test/

6.目標端載入表空間.ibd 檔案

alter table test.a import tablespace;

3.3增量備份恢復

3.3.1增量備份

第一次全量備份

innobackupex --defaults-file=/etc/my.cnf --socket=/tmp/mysql.sock -uroot -pmysql --no-timestamp  /xtrabak/full

第一次增量備份    注:增量備份必須在全庫備庫基礎上

innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql --socket=/tmp/mysql.sock --no-timestamp --incremental /xtrabak/incre1 --incremental-basedir=/xtrabak/full

第二次增量備份 

innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql --socket=/tmp/mysql.sock --no-timestamp --incremental /xtrabak/incre2 --incremental-basedir=/xtrabak/incre1

注:此時incremental-basedir 指向第一次增量備份目錄

3.3.2日誌應用

第一次應用備份檔案

innobackupex --apply-log --redo-only /xtrabak/full

第二次應用備份檔案

innobackupex --apply-log --redo-only /xtrabak/full --incremental-dir=/xtrabak/incre1

第三次應用備份檔案

innobackupex --apply-log /xtrabak/full --incremental-dir=/xtrabak/incre2

注:--redo-only引數 除最後一份增量檔案的應用時不需要新增該引數外,其餘都要加上該引數!!!

3.3.3全域性恢復

innobackupex --defaults-file=/etc/my.cnf --move-back /Xtrabackup/backup/2018-07-28_15-11-12

注:--move-back引數將備份出來檔案直接mv到datadir目錄,建議使用--copy-back

3.4壓縮特性

3.4.1壓縮備份

innobackupex --defaults-file=/etc/my.cnf  --user=root --password=mysql --no-timestamp --compress --compress-threads=8  /xtrabak

3.4.2解壓備份檔案

解壓decompress 

innobackupex --decompress /xtrabak

注:需要提前安裝qpress命令,安裝方式如下

shell> wget 
shell> tar xvf qpress-11-linux-x64.tar
shell> cp qpress /usr/bin

3.4.3日誌應用

innobackupex --apply-log /xtrabak

3.4.4全域性恢復

innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabak

3.5流特性

3.5.1流備份

innobackupex --defaults-file=/etc/my.cnf --user=root --password=mysql --stream=tar --no-timestamp  /xtrabak  1>/xtrabak/full.tar

注:直接生成tar包

3.5.2解壓備份檔案

tar -xvf full.tar

3.5.3日誌應用

innobackupex --apply-log /xtrabak

3.5.4全域性恢復

innobackupex --defaults-file=/etc/my.cnf --copy-back /xtrabak


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30310891/viewspace-2780801/,如需轉載,請註明出處,否則將追究法律責任。

相關文章