xtrabackup備份還原MySQL資料庫

來源:互聯網
上載者:User

標籤:mysqld   ase   error   ***   inno   服務   bsp   上進   基礎上   

 

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/lib/mysql/mysql.sock /data/backup/2017-06-22_13-40-29
 ,  2,分別將增量備份應用到完整備份
    innobackupex --defaults-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

    

   如果有多個差異備份,分別應用差異備份到完整備份。

 

  恢複階段

  完成差異備份的全部應用到完整備份之後,將恢複後的差異備份copy到原資料目錄
  預設情況下,如果資料路徑下存在檔案,則copy失敗,需要清空資料檔案路徑下的檔案。
  innobackupex --copy-back /data/backup/2017-06-22_13-40-29
  如,完成copy-back

  

  

  啟動MySQL服務

  

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

  

看一下錯誤記錄檔(啟動錯誤資訊),mysql5.7之後預設error位於/var/log/mysqld.log中,且預設不會滾動,意味著所有的錯誤資訊都記錄在這個檔案中。 

  

  資料檔案還原之後,需要讀資料檔案路徑授予可讀寫的許可權
  這裡直接授權資料檔案路徑777,chmod -R 777 /var/lib/mysql
  然後啟動mysql服務,可以正常啟動。

  

 

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

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

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

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

 

xtrabackup備份還原MySQL資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.