資料的備份與恢複
備份手段
實體備份
直接拷貝庫或表的檔案(風險:檔案系統不一樣導緻讀取錯誤)
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
注意此處的步驟不能跳躍,因為時增量備份,如果序列号不連續将造成備份失敗!