数据的备份与恢复
备份手段
物理备份
直接拷贝库或表的文件(风险:文件系统不一样导致读取错误)
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; //此处为破坏数据库记录操作
[root@mysql51 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命令做备份要求?
[root@mysql51 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=上次备份数据存储的目录名
[root@mysql51 buydb]# du
-sh /new1dir
5.0M /new1dir
//增量备份的数据大小(多出ibdata1.delta ibdata1.meta文件为增量)
[root@mysql51 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=目录名
[root@mysql51 buydb]# ls
/new1dir/
xtrabackup_checkpoints
存储日志序列号
xtrabackup_info
存储数据库信息
xtrabackup_logfile
存储sql命令
拷贝文件
[root@mysql51 mysql]#
innobackupex --user root --password 123456 --databses="mysql
performance_schema sys buydb" --copy-back /buydb
备份目录下配置文件说明
[root@mysql51 buydb]# cat
/buydb/xtrabackup_checkpoints
backup_type =
full-backuped
from_lsn = 0
to_lsn = 4174233
[root@mysql51 buydb]# cat
/new1dir/xtrabackup_checkpoints
backup_type =
incremental
from_lsn = 4174233
to_lsn = 4179025
[root@mysql51 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
第二步 恢复增量备份的日志
[root@mysql51 mysql]#
innobackupex --user root --password 123456 --databases="mysql
performance_schema sys buydb" --apply-log --redo-only /buydb
--incremental-dir=/new1dir
[root@mysql51 mysql]#
innobackupex --user root --password 123456 --databases="mysql
performance_schema sys buydb" --apply-log --redo-only /buydb
--incremental-dir=/new2dir
第三步 根据日志信息,拷贝相应的恢复数据
[root@mysql51 mysql]#
innobackupex --user root --password 123456 --databses="mysql
performance_schema sys buydb" --copy-back /buydb
第四步
跟改数据库文件属性(默认为root权限,mysql系统用户没有访问权限)
[root@mysql51 mysql]# ls -l
/var/lib/mysql
[root@mysql51 mysql]# chown
-R mysql:mysql /var/lib/mysql
注意此处的步骤不能跳跃,因为时增量备份,如果序列号不连续将造成备份失败!