mysql備份神器——Xtrabackup全量備份&還原

概述

Xtrabackup是一種物理備份

工具,通過協議連接到mysql服務端,然後讀取並複製innodb底 層的"數據塊",完成所謂的"物理備份"。

支持對innodb進行熱備、增量備份、差量備份。

前面已經分享了怎麼去安裝xtrabackup工具,所以今天主要詳細介紹 XtraBackup 備份和恢復的具體過程。


1、源數據庫備份

./innobackupex --user=root --password=xxxxx --host=127.0.0.1 --databases=jpcpdb /home/xtrabackup/
mysql備份神器——Xtrabackup全量備份&還原

查看備份出來的文件:

mysql備份神器——Xtrabackup全量備份&還原

/home/xtrabackup/ 備份存放的位置,備份會在該目錄下生成一個按照時間命名的文件夾。用--no-timestamp參數可以指定到自己想要的備份文件夾,不受時間命名的文件夾限制。


2、傳到目標數據庫服務器並解壓

# tar -czvf xtrabackupxx.tar.gz xtrabackup/

# scp xtrabackupxx.tar.gz 10.150.xx.xx:/opt

3、恢復(目標數據庫服務器執行)

3.1 --apply-log保持數據一致性

利用 --apply-log的作用是通過回滾未提交的事務及同步已經提交的事務至數據文件使數據文件處於一致性狀態。

# innobackupex --defaults-file=/etc/my.cnf --use-memory=16G --apply-log /opt/xtrabackup/2018-07-24_10-43-34/
為了加快速度,一般建議設置--use-memory,這個步驟完成之後,目錄/opt/xtrabackup/2018-07-24_10-43-34/下的備份文件已經準備就緒。
mysql備份神器——Xtrabackup全量備份&還原

應用完之後再查看備份文件看是否有變化:

mysql備份神器——Xtrabackup全量備份&還原

這裡可以看到redo log已經出現。xtrabackup_開頭的幾個文件記錄了一些日誌偏移量的信息和日誌名和時間等信息

3.2 開始恢復

1、停止後備份從數據庫文件

#service mysql stop 

# cp -rpf /usr/local/mysql/data/ /backup
# rm -rf /usr/local/mysql/data/

說明:p保留屬主屬組權限

2、恢復jpcpdb數據庫

innobackupex --defaults-file=/etc/my.cnf --copy-back /opt/xtrabackup/2018-07-24_10-43-34/

執行上面的命令需要保證數據庫目錄是空的,否則會失敗,因為目錄裡有binlog日誌,要麼移走,要麼就用手動複製需要的文件。總之日誌不要和數據放在一起!

mysql備份神器——Xtrabackup全量備份&還原

3、恢復mysql數據庫文件(密碼之類)

[root@s-pp-02 /]# cp -r /backup/mysql/ /usr/local/mysql/data/
[root@s-pp-02 /]# cp -r /backup/performance_schema/ /usr/local/mysql/data/
[root@s-pp-02 /]# cp -r /backup/sys/ /usr/local/mysql/data/
mysql備份神器——Xtrabackup全量備份&還原

4、修改權限

# chown -R mysql:mysql /usr/local/mysql/
# chmod -R 755 /usr/local/mysql/

5、啟動數據庫

#service mysql start

重啟後對數據表數量、索引等做檢查。


總結:

大家有空可以也可以在自己電腦測試一下,備份恢復的話xtrabackup是很不錯的一個選擇,後面會分享更多工作中比較多涉及的一些工具,感興趣的朋友可以關注下!!

mysql備份神器——Xtrabackup全量備份&還原


分享到:


相關文章: