Innobackupex MySQL 全備、增備及恢復

1、安裝xtrabackup
shell> wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.8-1.el6.x86_64.rpm
rpm -ivh percona-xtrabackup-24-2.4.8-1.el6.x86_64.rpm
注:若是須要依賴軟件,請自行安裝
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-develhtml

2、innobackupex 全備
參數:
--incremental-basedir=/db/db_backup/ 第一次增備指定全備路徑,第二次增備指定第一次增備的路徑
--incremental 參數說明這是一次增備,並指定增備路徑
--no-lock 不容許使用flush tables with read lock表鎖。若是你的全部表是INNODB而且你不關心二進制日誌備份的位置。若是有任何DDL語句被執行或任何非INNODB表上的update操做,這個選項就不能使用
--no-timestamp 若是不加的話會在備份目錄下生成一個備份時間的目錄,備份數據存在該目錄下
--use-memory=4G 該參數只能和參數--apply-log配合使用,被用於xtrabackup作creash恢復時準備鎖使用的內存量
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
全備:
shell> innobackupex --user=user --password=passwd --defaults-file=/etc/my.cnf --no-lock /db/db_backup/full_backup/3306mysql

#若是你須要作成自動腳本,請在腳本里加上判斷備份的文件大小,若是有問題你還能夠經過發給你的郵件來知道是否備份有問題c++

3、全備恢復
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
shell > /etc/init.d/mysql.server stop # 首先關閉數據庫sql

shell > cd /db/backup_db # 切換到備份目錄shell

shell > mv /usr/local/mysql/data data.old # 將原來的數據目錄備份一下數據庫

shell > innobackupex --apply-log alldatabase # 在備份上應用日誌,通常沒有看到報錯且最後顯示 OK 就沒有問題 ( --use-memory 使用該參數加快速度 )
12:07:33 completed OK!vim

shell > innobackupex --copy-back alldatabase # 將備份還原到 my.cnf 指定的 datadir 中,不指定 --defaults-file,默認 /etc/my.cnfapp

Error: datadir must be specified. # 報錯信息顯示,在默認配置文件 /etc/my.cnf 中,沒有找到 datadir 配置項ide

shell > vim /etc/my.cnf # 加入 datadir 配置項
datadir = /usr/local/mysql/data日誌

shell > innobackupex --copy-back alldatabase # 再次執行 copy 動做,沒有報錯且顯示 OK
10:17:52 completed OK!

shell > ll -d /usr/local/mysql/data
drwxr-x--- 6 root root 4096 07月 10 18:17 /usr/local/mysql/data

shell > chown -R mysql.mysql /usr/local/mysql/data # 修改數據目錄權限

shell > /etc/init.d/mysql.server start
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
注意:
1.innobackupex進行備份是將數據庫全部的庫都進行了備份,若是須要單獨還原某個備份庫,請恢復到別的數據庫上,單獨備份出來
2.若是數據庫沒有多大,建議使用mysqldump進行備份

4、innobackupex增量備份
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
第一次增備:
shell> innobackupex --defaults-file=/etc/my.cnf --no-timestamp --incremental /db/backup/increment_backup/3306/incre01/ --no-lock --incremental-basedir=/db/db_backup/full_backup/3306/2018-07-13_09-15-01

第二次增量備份:
innobackupex --user=user --password=password --no-timestamp --no-lock --incremental-basedir=/db/backup/increment_backup/3306/incre01/ --incremental /db/backup/increment_backup/3306/incre02

#第二次增備是在第一次增備的基礎上,因此 --incremental-basedir 指定的是第一次增備目錄,最後指定的第二次增備目錄

備份目錄下的文件能夠看出是增備仍是全備
shell>cat xtrabackup_checkpoints
backup_type = incremental #這個提示這是一次增量備份
from_lsn = 23780427057
to_lsn = 23782487265
last_lsn = 23782487265
compact = 0
recover_binlog_info = 0
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
注意:
1.作幾回增量備份是針對數據庫每次數量量比較大的數據庫,若是每次增加量不大,建議直接從全備上直接進行增量備份(注意作好目錄區別)
2.若是寫腳本作自動備份,請作好判斷,另外須要增長對磁盤空間的判斷,若是磁盤空間不足,請刪除N天前的備份

5、增量備份恢復
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
shell > /etc/init.d/mysql.server stop # 關閉數據庫

shell > cd /data/backup_db

shell > mv /usr/local/mysql/data data.old02 # 備份原有數據庫

shell > innobackupex --apply-log --redo-only /db/db_backup/full_backup/3306/2018-07-13_09-15-01 # 指定全備目錄,--redo-only 對已提交的事務進行前滾,僅最後一次增備恢復不須要添加該參數

shell > innobackupex --apply-log --redo-only /db/db_backup/full_backup/3306/2018-07-13_09-15-01 --incremental-dir=/db/backup/increment_backup/3306/incre01/ # --incremental-dir 指定第一次增備目錄 ( 絕對路徑 )

shell > innobackupex --apply-log /db/db_backup/full_backup/3306/2018-07-13_09-15-01 --incremental-dir=/db/backup/increment_backup/3306/incre02/ # 指定第二次增備目錄,最後一次增備還原不須要添加 --redo-only 參數

shell > innobackupex --copy-back /db/db_backup/full_backup/3306/2018-07-13_09-15-01 # 最後一步,複製整合後的全備文件,位置爲 my.cnf 中 datadir 指定路徑

shell > chown -R mysql.mysql /usr/local/mysql/data

shell > /etc/init.d/mysql.server start # 啓動數據庫,查看數據是否恢復
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
完成以後,請查看下數據是否恢復

+++++++++++++++++++++
本文轉自:
http://www.javashuo.com/article/p-kfshpyzp-cq.html
http://www.dataguru.cn/thread-450844-1-1.html

相關文章
相關標籤/搜索