mysql系列之6--------使用第三方工具-percona來備份mysql和恢復

使用第三方工具來備份mysql-----percona


一、前期準備工作:

   1、安裝依賴包:yum  -y  install  perl-Digest-MD5   perl-DBD-MySQL

        rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm

   2、安裝主包:    percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

      percona是一款在線熱備工具

   3、包含兩個組件:

           /usr/bin/xtrabackup     :支持innodb和xtraDB(增量備份)

          /usr/bin/innobackupex   :支持innodb和myisam(只支持全備,不支持增量)

  4、innobackupex 包含的一些選項

      --user                  用戶名     

      --password          密碼  

      --databases         庫名

      --no-timestamp          不使用系統日期做備份目錄的子目錄名

      --apply-log                 恢復日誌

      --copy-back               恢復數據

二、完全備份和完全恢復

   1、完全備份

         innobackupex --user root --password 123456 --database="mysql db66 performance sys"

         --no-timestamp   /allbak   //指定備份三個數據庫,生成的備份文件目錄不用系統時間做目錄名

   2、恢復數據時,數據庫目錄爲空,三個系統庫必須備份進去

    首先恢復日誌:innobackupex --user root --password 123456 --apply-log  /allbak

    刪除數據庫目錄:   rm    -rf      /var/lib/mysql

    創建數據庫目錄:   mkdir /var/lib/mysql

    恢復數據:innobackupex --user root --password  123456  --copy-back  /allbak/

    賦予數據目錄權限:chown -R mysql:mysql /var/lib/mysql

      重啓服務,驗證:systemctl restart mysqld


三、增量備份和增量恢復

 1、在增量備份之前先做一次完全備份。

    innobackupex --user root --password 123456

   --databases="performance_schema sys mysql db666"

    --no-timestamp  /onebak

 2、第一次增量備份    

    innobackupex --user root --password 123456     //指定用戶名密碼

    --databases="performance_schema sys mysql db666" //指定需要備份的數據庫

    --incremental /new1                //指定增量備份的路徑

    --incremental-basedir=/onebak   //指定以哪個備份來做爲增量備份的參考

    --no-timestamp

 3、第二次增量備份:

   innobackupex --user root --password 123456 

    --databases="performance_schema sys mysql db666"

    --incremental /new2     //第二次增量備份的路徑

    --incremental-basedir=/new1   //以上次增量備份做爲參考來做增量備份

    --no-timestamp

 4、增量恢復的文件目錄說明

  xtrabackup_checkpoints    xtrabackup_logfile         //這兩個文件記錄修改的lsn號

 5、恢復步驟

  A、刪除數據目錄下的文件:rm -rf  /var/lib/mysql/*

  B、恢復日誌---完全備份的日誌

     innobackupex --user root --password 123456

    --databases="performance_schema sys mysql db666"

    --apply-log --redo-only   //恢復日誌,併合並日志

    /onebak --no-timestamp

 C、恢復第一次增量的備份(只需要恢復日誌,日誌合併即可)

     innobackupex --user root --password 123456

    --databases="performance_schema sys mysql db666"

    --apply-log --redo-only /onebak  //源日誌路徑

    --incremental-dir=/new1 --no-timestamp   //需合併的日誌文件的路徑

 D、恢復第二次增量的備份

  innobackupex --user root --password 123456

   --databases="performance_schema sys mysql db666"

   --apply-log --redo-only /onebak   //源日誌文件的路徑

  --incremental-dir=/new2 --no-timestamp   //第二次增量備份合併的日誌

 E、恢復數據,只需還原全備份裏面的,因爲增量備份的內容已經合併到全備裏面

    innobackupex --user root --password 123456  --copy-back  /onebak

 F、給數據目錄給權限,重啓服務驗證

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

    systemctl     restart      mysqld


四、恢復完全備份數據中的單張表

 1、export  //導出表信息     import //導入表空間    

       刪除表空間:alter  table 表    discard  tablespace;

 2、備份單個數據庫:

       innobackupex --user root --password 123456 

       --databases="mydb" --no-timestamp /mydb  //只備份一個數據庫

 3、刪除表,創建表(表字段必須要和以前的一樣,模擬表丟失

    drop table t1;       create table t1(id int);

4、導出表信息:用到的參數是--export

  innobackupex --user root --password 123456 --databases="db66" --apply-log --export /db66

5、刪除表空間:在mysql命令行裏操作

     alter table db66.t1 discard tablespace;

6、把備份目錄下導出的表信息拷貝到數據庫目錄下,並給權限

   cp /db66/db66/t1.{cfg,exp,ibd} /var/lib/mysql/db66/ 

   chown mysql /var/lib/mysql/db66/t1.*  

7、導入表空間

   alter table db66.t1 import tablespace;

8、驗證:select * from db66.t1;




















             





































    































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