安裝第三方軟件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命令文件
備份過程
在增量備份時,如何知道在所有記錄中,哪些記錄是新產生的
在增量備份時:如何知道有新數據寫入,有寫入的話也要把新數據備份上