天天看點

mysql 增量備份導出_mysql資料的導入導出與完全備份恢複與增量備份恢複

資料的備份與恢複

備份手段

實體備份

直接拷貝庫或表的檔案(風險:檔案系統不一樣導緻讀取錯誤)

cp -r /var/lib/mysql

/dbbak/mysql.bak

tar -zxcf

/dbbak/mysql.tar.gz /var/lib/mysql;

SET

TIMESTAMP=1522433659;

insert

into t1(name) values(null)

;

# at 413

mysql> delete from t1 where shell is null; //此處為破壞資料庫記錄操作

[[email protected] logdir]# mysqlbinlog --start-position=302

--stop-position=413 /logdir/plj.000004 |mysql -uroot -p123456

mysql> select * from t1; //可以看出資料已經恢複

1.2

使用第三方軟體提供的指令innobackupex對資料做增量備份

安裝軟體包percona

376 rpm -ivh

percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

377 yum

-y install perl-DBD-MySQL.x86_64

378 yum

-y install perl-Digest-MD5.x86_64

379 rpm

-ivh percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

380 rpm

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

381 rpm

-ivh percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm

使用innobackupex指令做備份要求?

[[email protected] mysql]# rpm

-ql percona-xtrabackup-24

/usr/bin/xtrabackup

//隻能備份innodb和xtradb

/usr/bin/innobackupex

//內建xtrabackup支援,還支援myisam (線上熱備份工具,備份過程不鎖庫不鎖表)

innobackupex指令的文法格式

innobackupex --user root

--password 123456

innobackupex

需要/var/lib/mysql 為空

rm -rf /var/lib/mysql

完全備份

innobackupex --user root

--password 123456 --databases="mysql performance_schema sys buydb

備份目錄名

394 rm -rf /buydb/

395 innobackupex --user

root --password 123456 --databases="mysql performance_schema sys

buydb" --no-timestamp /buydb; //--no-timestamp不需要用日期為名的子目錄存儲

396 cd /buydb/

397

ls

增量備份

innobackupex --user root

--password 123456 --databases="mysql performance_chema sys userdb"

--incremental --incremental-basedir=上次備份資料存儲的目錄名

[[email protected] buydb]# du

-sh /new1dir

5.0M /new1dir

//增量備份的資料大小(多出ibdata1.delta ibdata1.meta檔案為增量)

[[email protected] buydb]# du

-sh /buydb/

95M /buydb/

//首次完全備份的大小

增量恢複

--apply-log 恢複日志

--apply-only 合并日志

--copy-back 拷貝資料

innobackupex --user root

--password 123456 --databases="myql performance_schema sys gamedb"

--apply-log--redo-only 存儲完全備份資料的目錄 --incremental-dir=目錄名

[[email protected] buydb]# ls

/new1dir/

xtrabackup_checkpoints

存儲日志序列号

xtrabackup_info

存儲資料庫資訊

xtrabackup_logfile

存儲sql指令

拷貝檔案

[[email protected] mysql]#

innobackupex --user root --password 123456 --databses="mysql

performance_schema sys buydb" --copy-back /buydb

備份目錄下配置檔案說明

[[email protected] buydb]# cat

/buydb/xtrabackup_checkpoints

backup_type =

full-backuped

from_lsn = 0

to_lsn = 4174233

[[email protected] buydb]# cat

/new1dir/xtrabackup_checkpoints

backup_type =

incremental

from_lsn = 4174233

to_lsn = 4179025

[[email protected] buydb]# cat

/new2dir/xtrabackup_checkpoints

backup_type =

incremental

from_lsn = 4179025

to_lsn = 4179025

rm -rf /var/lib/mysql

模拟資料丢失

mkdir /var/lib/mysql

增量恢複資料操作步驟

第一步:恢複完全備份的日志

innobackupex --user root

--password 123456 --databases="mysql performance_schema sys buydb"

--apply-log --redo-only /buydb

第二步 恢複增量備份的日志

[[email protected] mysql]#

innobackupex --user root --password 123456 --databases="mysql

performance_schema sys buydb" --apply-log --redo-only /buydb

--incremental-dir=/new1dir

[[email protected] mysql]#

innobackupex --user root --password 123456 --databases="mysql

performance_schema sys buydb" --apply-log --redo-only /buydb

--incremental-dir=/new2dir

第三步 根據日志資訊,拷貝相應的恢複資料

[[email protected] mysql]#

innobackupex --user root --password 123456 --databses="mysql

performance_schema sys buydb" --copy-back /buydb

第四步

跟改資料庫檔案屬性(預設為root權限,mysql系統使用者沒有通路權限)

[[email protected] mysql]# ls -l

/var/lib/mysql

[[email protected] mysql]# chown

-R mysql:mysql /var/lib/mysql

注意此處的步驟不能跳躍,因為時增量備份,如果序列号不連續将造成備份失敗!