使用xtrabackup備份mysql

1.執行全備

 innobackupex是對xtrabackup進行封裝過的perl腳本,詳細參數可查看使用手冊


 innobackupex --database="database_name" --user=用戶名 --password=密碼  

 --no-lock  --defaults-file=/etc/mysql/my.cnf  /bak


 執行完以上語句會在/bak目錄下產生一個以備份時間爲文件名的目錄,如下:


 drwxr-xr-x  3 root    root         4096  8月 21 10:16 2013-08-21_10-15-53/
 drwxr-xr-x  3 root    root         4096  8月 21 10:41 2013-08-21_10-40-37/


 在使用innobackupex進行備份時,還可以使用--no-timestamp選項來阻止命令自動創建一個以時間  命名的目錄;innobackupex命令將會創建一個BACKUP-DIR目錄來存儲備份數據。




2.恢復數據

   一般情況下,在備份完成後,數據尚且不能用於恢復操作,因爲備份的數據中可能會包含尚未提交的事務或已經提交但尚未同步至數據文件中的事務。因此,此時數據文件仍處於不一致狀態--apply-log
   主要作用正是通過回滾未提交的事務及同步已經提交的事務至數據文件也使得數據文件處於一致性狀態。

# innobackupex --apply-log   /bak/2013-08-21_10-15-53/

   恢復數據時,如果數據庫數據目錄不爲空,恢復會終止,防止意外覆蓋。因此先把datadir目錄更名。數據庫數據目錄可以通過my.cnf查看。
# innobackupex --copy-back   /bak/2013-08-21_10-15-53/


3.增量備份

a. 產生第一個增量備份

 innobackupex --incremental /data/backups --incremental-basedir=BASEDIR

 此時的BASEDIR是一個全備份的目錄,執行後會生成一個新的增量備份目錄如

/data/backups/2013-04-01_23-01-18 我們把這個目錄稱爲INCREMENTAL-DIR-1

 b.產生第二個增量備份

innobackupex --incremental /data/backups --incremental-basedir=INCREMENTAL-DIR-1

  執行後會生成一個新的增量備份目錄 我們把這個目錄稱爲INCREMENTAL-DIR-2

/data/backups/2013-04-02_23-01-18

  c.產生第三個增量備份

innobackupex --incremental /data/backups --incremental-basedir=INCREMENTAL-DIR-2

 依次類推


4.增量備份恢復

“準備”(prepare)增量備份與整理完全備份有着一些不同,尤其要注意的是:
(1)需要在每個備份(包括完全和各個增量備份)上,將已經提交的事務進行“重放”。“重放”之後,所有的備份數據將合併到完全備份上。

(2)基於所有的備份將未提交的事務進行“回滾”。

 innobackupex --apply-log --redo-only BASE-DIR

 innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1

 innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2



  innobackupex --apply-log BASE-DIR

 innobackupex --copy-back BASE-DIR


5.mysql數據恢復的過程

 a.首先關閉數據庫

    service mysql stop

  b.準備並回滾數據庫

     innobackupex --apply-log BASE-DIR

     innobackupex --copy-back BASE-DIR

  c.修改數據庫權限

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

   注:數據目錄/var/lib/mysql 替換成數據恢復的目錄

  d.啓動mysql

    service mysql start


6.報錯信息

     

 ERROR 1018 (HY000): Can't read dir of '.' (errno: 13)

由於權限問題, 修改數據目錄權限解決

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







參考博文:

http://blog.chinaunix.net/uid-233544-id-3166703.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章