使用XtraBackup给MySQL在线增量备份及恢复数据库(2)

[mysqld]
datadir=/var/lib/mysql
innodb_data_home_dir = /data/mysql/ibdata
innodb_log_group_home_dir = /data/mysql/iblogs
innodb_data_file_path=ibdata1:10M;ibdata2:10M:autoextend
innodb_log_files_in_group = 2
innodb_log_file_size = 1G

三、全部数据库备份与还原

1、备份

//全部数据库备份
innobackupex --user=root --password=123456 /data/backup/
//单数据库备份
innobackupex --user=root --password=123456 --database=backup_test /data/backup/
//多库
innobackupex--user=root --password=123456 --include='dba.*|dbb.*' /data/backup/
//多表
innobackupex --user=root --password=123456 --include='dba.tablea|dbb.tableb' /data/backup/
//数据库备份并压缩
log=zztx01_`date +%F_%H-%M-%S`.log
db=zztx01_`date +%F_%H-%M-%S`.tar.gz
innobackupex --user=root --stream=tar /data/backup  2>/data/backup/$log | gzip 1> /data/backup/$db
//不过注意解压需要手动进行,并加入 -i 的参数,否则无法解压出所有文件,疑惑了好长时间
//如果有错误可以加上  --defaults-file=/etc/my.cnf

2、还原

service mysqld stop
mv /data/mysql /data/mysql_bak && mkdir -p /data/mysql
//--apply-log选项的命令是准备在一个备份上启动mysql服务
innobackupex --defaults-file=/etc/my.cnf --user=root --apply-log /data/backup/2015-09-18_16-35-12
//--copy-back 选项的命令从备份目录拷贝数据,索引,日志到my.cnf文件里规定的初始位置
innobackupex --defaults-file=/etc/my.cnf --user=root --copy-back /data/backup/2015-09-18_16-35-12
chown -R mysql.mysql /data/mysq
service mysqld start

四、增量备份与还原
1、创建测试数据库和表
create database backup_test; //创建库
CREATE TABLE `backup` ( //创建表
`id` int(11) NOT NULL AUTO_INCREMENT ,
`name` varchar(20) NOT NULL DEFAULT '' ,
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`del` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=myisam DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
2、增量备份
#--incremental:增量备份的文件夹
#--incremental-dir:针对哪个做增量备份
//第一次备份
mysql> INSERT INTO backup (name) VALUES ('xx'),('xxxx'); //插入数据
innobackupex  --user=root --incremental-basedir=/data/backup/2015-09-18_16-35-12 --incremental /data/backup/
//再次备份
mysql> INSERT INTO backup (name) VALUES ('test'),('testd'); //在插入数据
innobackupex --user=root --incremental-basedir=/data/backup/2015-09-18_18-05-20 --incremental /data/backup/
3、查看增量备份记录文件
[root@localhost 2015-09-18_16-35-12]# cat xtrabackup_checkpoints //全备目录下的文件
backup_type = full-prepared
from_lsn = 0 //全备起始为0
to_lsn = 23853959
last_lsn = 23853959
compact = 0
[root@localhost 2015-09-18_18-05-20]# cat xtrabackup_checkpoints //第一次增量备份目录下的文件
backup_type = incremental
from_lsn = 23853959
to_lsn = 23854112
last_lsn = 23854112
compact = 0
[root@localhost 2015-09-18_18-11-43]# cat xtrabackup_checkpoints //第二次增量备份目录下的文件
backup_type = incremental
from_lsn = 23854112
to_lsn = 23854712
last_lsn = 23854712
compact = 0
增量备份做完后,把backup_test这个数据库删除掉,drop database backup_test;这样可以对比还原后
4、增量还原
分为两个步骤
a.prepare
innobackupex --apply-log /path/to/BACKUP-DIR
此时数据可以被程序访问使用;可使用—use-memory选项指定所用内存以加快进度,默认100M;
b.recover
innobackupex --copy-back /path/to/BACKUP-DIR
从my.cnf读取datadir/innodb_data_home_dir/innodb_data_file_path等变量
先复制MyISAM表,然后是innodb表,最后为logfile;--data-dir目录必须为空
开始合并
innobackupex --apply-log --redo-only /data/backup/2015-09-18_16-35-12
innobackupex --apply-log --redo-only --incremental /data/backup/2015-09-18_16-35-12 --incremental-dir=/data/backup/2015-09-18_18-05-20
innobackupex --apply-log --redo-only --incremental /data/backup/2015-09-18_16-35-12 --incremental-dir=/data/backup/2015-09-18_18-11-43
#/data/backup/2015-09-18_16-35-12 全备份目录
#/data/backup/2015-09-18_18-05-20 第一次增量备份产生的目录
#/data/backup/2015-09-18_18-11-43 第二次增量备份产生的目录
恢复数据
service mysqld stop
innobackupex --copy-back /data/backup/2015-09-18_16-35-12
service mysqld start

五、innobackup 常用参数说明

--defaults-file
同xtrabackup的--defaults-file参数

--apply-log
对xtrabackup的--prepare参数的封装

--copy-back
做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir ;

--remote-host=HOSTNAME
通过ssh将备份数据存储到进程服务器上;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/65472830441a8a614f08fe2243a5bebd.html