<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      xtrabackup備份還原MySQL數據庫

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

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

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

      innobackupex 備份

      xtrabackup和MySQL的版本如下

      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=*** 中間一定要有空格,

      如截圖,完整備份完成

      xtrabackup備份還原MySQL數據庫

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

      xtrabackup備份還原MySQL數據庫

        差異備份

        差異備份之所以能夠做到差異,就是依賴于完整備份的,在完整備份的基礎上進行完整備份之后的差異的備份。
        而如何確定完整的備份之后備份到哪里,就依賴于完整備份之后的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備份還原MySQL數據庫

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

        xtrabackup備份還原MySQL數據庫

      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

        xtrabackup備份還原MySQL數據庫

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

        恢復階段

        1,完成差異備份的全部應用到完整備份之后,將恢復后的差異備份copy到原數據目錄
          默認情況下,如果數據路徑下存在文件,則copy失敗,需要清空數據文件路徑下的文件。
          innobackupex --copy-back /data/backup/2017-06-22_13-40-29
          如截圖,完成copy-back

        xtrabackup備份還原MySQL數據庫

        

        2,啟動MySQL服務

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

        xtrabackup備份還原MySQL數據庫

      看一下錯誤日志(啟動錯誤信息),mysql5.7yum安裝默認的errorlog位于/var/log/mysqld.log中,且默認不會滾動,意味著所有的錯誤信息都記錄在這個文件中。 xtrabackup備份還原MySQL數據庫

        數據文件還原之后,需要讀數據文件路徑授予可讀寫的權限
        這里直接授權數據文件路徑777,chmod -R 777 /var/lib/mysql
        然后啟動mysql服務,可以正常啟動。

        xtrabackup備份還原MySQL數據庫

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

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

        2,怎么用全備+差異備份然后結合二進制日志做基于時間點的方式還原?

        3,如何驗證備份文件的有效性?

      以上就是xtrabackup備份還原MySQL數據庫的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清