mysql 數據遷移

安裝第三方軟件XtraBackup對數據做增量備份

安裝第三方軟件XtraBackup對數據做增量備份 (這種軟件 備份只能恢復數據,不能恢復庫和表結構)當表刪了,數據回不來。


XtraBackup介紹:

在線熱備份工具,備份過程中不鎖庫表,

只備份表記錄,不備份表結構

表的存儲引擎必須是InnoDB/XtraDB

必須先有一次完全備份,這樣再執行備份時才知道那些數據是新產生。


安裝XtraBackup: perl(DBD::mysql)  perl(Time::HiRes) 先安裝兩個依賴包

rpm -q perl-Time-HiRes

rpm -ivh percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm


提供2個備份命令:

xtrabackup:C程序,支持InnoDB/XtraDB


innobackupex:以Perl腳本封裝xtrabackup,還支持MyISAM


xtrabackup_56   命令語法格式:

(完全備份  完全恢復 增量備份  增量恢復)




————————————

xtrabackup_56    <選項>


--backup     備份數據

--prepare    恢復數據


--target-dir=目錄名             指定備份文件存儲的目錄


--datadir=/var/lib/mysql    指定數據庫目錄的位置


--incremental-basedir=目錄名  增量備份時,指定上一次備份文件存儲的目錄


--incremental-dir=目錄名    增量恢復數據時,指定使用恢復文件所在的目錄



————————————————————————————————————————————————————————

實驗操作:(首先對庫做一個完全備份,當增加數據時,做一個增量備份序號1,再增加數據,再做一個增量備份2,再增加數據,再做一個增量備3,再增加數據, 完全備份+增量備份)

            (恢復:先恢復完全備份,再恢復增量備份,按順序從最開始的一個一個恢復,這裏恢復的是xtrabackup_checkpoints 中所對應的序列號,最後所有恢復完再把備份文件拷貝會對應數據庫目錄下,重啓服務)

          【 注意這個只能恢復一次 一次性】

1.先備份:完全備份+增量備份


db1.a    5 -> 999   完全備份

xtrabackup_56    --backup   --datadir=/var/lib/mysql    --target-dir=/allbak



10 -> 301  第1次增量備份

xtrabackup_56    --backup    --datadir=/var/lib/mysql  --target-dir=/new1    --incremental-basedir=/allbak



8 -> 801  第2次增量備份

xtrabackup_56    --backup    --datadir=/var/lib/mysql    --target-dir=/new2   --incremental-basedir=/new1

         

3 -> 777 第3次增量備份

xtrabackup_56    --backup    --datadir=/var/lib/mysql    --target-dir=/new3   --incremental-basedir=/new2





2.xtrabackup恢復數據的步驟:

   1)準備恢復數據

xtrabackup_56   --prepare  --datadir=/var/lib/mysql    --target-dir=/allbak


xtrabackup_56   --prepare  --datadir=/var/lib/mysql    --target-dir=/allbak    --incremental-dir=/new1



xtrabackup_56   --prepare  --datadir=/var/lib/mysql    --target-dir=/allbak    --incremental-dir=/new2


xtrabackup_56   --prepare  --datadir=/var/lib/mysql    --target-dir=/allbak    --incremental-dir=/new3


   2) 把備份文件拷貝回對應的數據庫目錄下

[root@stu ~]# cp /allbak/bbsdb/a.ibd /var/lib/mysql/bbsdb/

cp:是否覆蓋"/var/lib/mysql/bbsdb/a.ibd"? y

[root@stu ~]#


  3) 重啓數據庫服務

service  mysql  restart


   4) 查看恢復是否成功

select * from bbsdb.a;



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



__________________________________________________________________________

[root@host ~]# cd /var/lib/mysql

[root@host mysql]# ls

auto.cnf          ib_logfile0  performance_schema       

host.tedu.cn.err  ib_logfile1  python                   

host.tedu.cn.pid  mysql        RPM_UPGRADE_HISTORY     

ibdata1           mysql.sock   RPM_UPGRADE_MARKER-LAST

__________________________________________________________________________        

事務日誌    /var/lib/mysql/

                               ib_logfile0   

                               ib_logfile1      ---sql命令


                                 idbata1 記錄數據信息


                                           

                          xtrabackup_checkpoints lsn序列號對應文件

                                   xtrabackup_logfile  序列號所對應的sql命令文件


備份過程

     在增量備份時,如何知道在所有記錄中,哪些記錄是新產生的

    



在增量備份時:如何知道有新數據寫入,有寫入的話也要把新數據備份上


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