首頁  >  文章  >  資料庫  >  xtrabackup備份還原MySQL資料庫

xtrabackup備份還原MySQL資料庫

巴扎黑
巴扎黑原創
2017-06-23 11:07:591215瀏覽

 

mysqldump 備份鑑於其自身的某些特性(鎖表,本質上備份出來insert腳本或文本,不支援差異備份),不太適合對實時性要求比較高的情況
Xtrabackup可以解決mysqldump存在的上述的一些問題,生產環境應用的也會更多。
本文簡單測試一下Xtrabackup對MySQL資料庫的備份還原作業。

本著先把功能先擼起來再深入細節的原則,粗略地實現了一個備份還原,並未深入細節。

網路上有不少xtrabackup的文章,因為環境不一樣,有些需要配置xtrabackup的配置文件,
但是我在xtrabackup 2.4.7版本下測試就需要需求任何配置文件。可能是每個版本都的細節上都不一樣,因此參考資料的時候要注意版本和環境。

 

 

innobackupex 備份

xtrabackup和MySQL的版本如下

################################# ### ######完整備份######
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock /data/backup
###

說明:
1.--defaults-file=/etc/my.cnf檔案必須在最前面
2.--user=root --password=root,--use=***與--password=*** 中間一定要有空格,

如截圖,完整備份完成

#如截圖,完整備份會建立一個日期(年月日時分秒,yyyy-MM-dd_hh-mm-ss)命名的文件
完整備份出來的內存,實際上是對所備份的數據庫的數據文件的copy加上備份時候產生的一些信息,
例如xtrabackup_checkpoints就是目前完整備份的一些個訊息,這個訊息對差異備份非常重要。

  差異備份

  差異備份之所以能夠做到差異,就是依賴於完整備份的,在完整備份的基礎上進行完整備份之後的差異的備份。
  而如何確定完整的備份之後備份到哪裡,就依賴於完整備份之後的xtrabackup_checkpoints這個檔案的。
     innobackupex  --defaults-file=/etc/my.cnf --user=root --password=root --socket=/var/lib/mysql/mysql.sock --incremental /data/backup --incremental -basedir=/data/backup/2017-06-22_13-40-29
  如截圖,差異備份完成

#  

   如果在進行差異備份的時候,指定的完整備份的文件錯誤或是未指定完整備份文件,會發現xtrabackup提示找不到xtrabackup_checkpoints這個文件。

  

 

innobackupex 還​​原

  

#  準備階段

  1
#  預備階段## ,恢復完整備份,也即完整備份應用(--apply-log)日誌
    innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only --socket=/var 。 file=/etc/my.cnf --apply-log --redo-only --socket=/var/lib/mysql/mysql.sock
--incremental /data/backup/2017-06-22_13-40 -29 --incremental-basedir=/data/backup/2017-06-22_13-41-48

    

   若有多個差異備份,分別套用差異備份到完整備份。

 

  復原階段

  1,完成差異備份的全部套用到完整備份之後,將復原後的差異備份copy到原資料目錄

    預設情況下,如果資料路徑下存在文件,則copy失敗,需要清空資料檔案路徑下的檔案。
    innobackupex --copy-back /data/backup/2017-06-22_13-40-29
    如截圖,完成copy-back

   如截圖,完成copy-back# ##  

##  2,啟動MySQL服務

  啟動mysql服務,發現啟動失敗

  

看一下錯誤日誌(啟動錯誤訊息),mysql5.7yum安裝預設的errorlog位於/var/log/mysqld.log中,且預設不會滾動,表示所有的錯誤訊息都記錄在這個檔案中。

  資料檔案還原之後,需要讀取資料檔案路徑授予可讀寫的權限

  這裡直接授權資料檔案路徑777,chmod -R 777 /var/lib/mysql  然後啟動mysql服務,可以正常啟動。

  

 

xtrabackupex才剛開始,留下一大堆問題,有時間再一個一個驗證。

  1,怎麼實作單一函式庫(表)的備份與還原,畢竟實際環境中,因為每個函式庫備份的頻率與方式(備份方案)是不一樣的?

  2,怎麼用全備+差異備份然後結合二進位日誌做基於時間點的方式還原?

  3,如何驗證備份檔案的有效性?

 

以上是xtrabackup備份還原MySQL資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn