【Mysql备份与恢复二】Mysql三种备份方法验证<<<<<<<<<对Mysql的三种主流的备份方式进行了验证。由于业务需求,本次将会对Xtrabackup物理备份的功能进行细致的测试。
目录
测试场景一:增量备份的数据恢复顺序测试
测试目的:
在xtrabackup中进行增量备份的时候,增量备份的数据恢复是有顺序限制的。先对后面的增量备份数据进行恢复,会将完全备份的数据合并为脏数据,从而导致无法恢复前面的增量备份。此场景为增量备份的恢复顺序测试。
测试方案:
1、数据库中存入海量数据
2、进行完全备份与增量备份
3、先恢复增量备份2的数据
4、再恢复增量备份1的数据
5、查看两次增量备份的数据是否都能恢复
测试过程:
1、在179服务器的数据库中通过命令向test3、test4、test5、test6数据库中分别导入samp表、account表;
CREATE TABLE sample(
id INT(11) NOT NULL AUTO_INCREMENT,
VALUE INT(5) NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
INSERT INTO sample(VALUE)
VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
CREATE TABLE account(
id INT(11) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
INSERT INTO account( NAME ) SELECT
CONCAT( 'name', @nownum := @nownum + 1 )
FROM
sample AS a,
sample AS b,
sample AS c,
sample AS d,
( SELECT @nownum := 0 ) AS e
2、每个account表中有1000条数据;
3、第一次备份数据
- 第1次完全备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root\$123 /backup/
第1次完全备份成功,备份文件如下:
- 1.1次增量备份
删除test3的数据库
DROP DATABASE test3;
进行增量数据备份
mkdir -p /backup/up1
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root\$123 --incremental --incremental-basedir=/backup/2020-10-12_08-51-51 /backup/up1
增量备份数据成功
- 1.2次增量备份
删除test4的account表
进行增量数据备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root\$123 --incremental --incremental-basedir=/backup/2020-10-12_08-51-51 /backup/up1
增量备份数据成功
4、第二次备份数据
-
第2次完全备份
新增数据库test7,在数据库test7中添加account、sample数据表;
完全备份数据成功
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root\$123 /backup/
- 第2.1次增量备份
新增数据库test8,在数据库test8中添加account、sample数据表;
进行增量数据备份
mkdir -p /backup/up2
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root\$123 --incremental --incremental-basedir=/backup/2020-10-12_09-35-11 /backup/up2
增量数据备份成功
- 第2.2次增量备份
新增数据库test9,在数据库test9中添加account、sample数据表;
进行增量数据备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=root\$123 --incremental --incremental-basedir=/backup/2020-10-12_09-35-11 /backup/up2
增量备份数据成功
5、恢复第1.2次增量备份的数据
- 回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态:
innobackupex --apply-log --redo-only /backup/2020-10-12_08-51-51/
- 将第1.2次增量备份整合到第1次全量备份中
innobackupex --apply-log --redo-only /backup/2020-10-12_08-51-51/ --incremental-dir=/backup/up1/2020-10-12_09-21-44
- 关闭mysql
- 删除/mysql/data目录下的文件
- 拷贝文件到数据目录
innobackupex --copy-back --datadir=/mysql/data /backup/2020-10-12_08-51-51/