Mysqlbackup 8增量备份还原图解
声明
本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。
注:1 当前验证环境CentOS 8 X86 64、mysql 8.0.23、mysqlbackup 8.0.23
2 部分操作详见代码处注释
4 当然备份时也可以采用image的形式--backup-image
前期准备
增量备份,又称为差异备份是基于某个全备而作的备份。它相对于全备份而言备份量较小,但备份和还原时必须依附这个全备。
首先创建个表以验证增量(差异)备份,思路见下:
- 在全备前建立一张表,并插入一条数据;然后做全备;
- 插入第二条数据,然后基于之前全备做增量(差异)备份
- 插入第三条记录后还原数据库以验证差异备份的效果。
#在trial数据库内新建立表
use trial;
create table test_04251019
(id int,
name varchar(10),
addr varchar(12),
memo varchar(40)
)
INSERT INTO test_04251019 VALUES(1,'test_incr','Guangzhou','Fullbakup');
commit;
全备
#命令行执行全备命令
#这里的 -- backup-dir即备份的目录,因有with-timestamp则会自动生成时间戳对应的文件夹)
mysqlbackup --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=mysqlbak --password='root@1234T5' --backup-dir=/root/workspace/mysqlbackup/bakSpace_0425 --with-timestamp backup
增量备
-- 再次插入增量的数据,一条id为2的数据。
INSERT INTO test_04251019 VALUES(2,'test_incr','Guangzhou','in increament');
commit;
# 执行增量备份的命令
# 其中--incremental-base对应上一步全备的路径
# 增量 (差异)备份的路径--incremental-backup-dir可以直接指定,无需实现创建。
mysqlbackup --defaults-file=/etc/my.cnf --socket=/var/lib/mysql/mysql.sock --user=mysqlbak --password='root@1234T5' --with-timestamp --incremental --incremental-backup-dir=/root/workspace/mysqlbackup/bakSpace_0425/incre/ --incremental-base=dir:/root/workspace/mysqlbackup/bakSpace_0425/2021-04-25_14-08-15/ backup
增量备后
-- 增量备份后(此步为验证增量备份还原的效果):
INSERT INTO test_04251019 VALUES(3,'test_incr','Guangzhou','after increament');
commit;
-- 增量备份后当前数据库的数据状态:
SELECT * FROM test_04251019
还原
还原前
-- 关闭mysql数据库服务
mysqladmin -uroot -p'root1234' shutdown
还原中
# Step 1 首先对全备应用apply_log
mysqlbackup --backup-dir=/root/workspace/mysqlbackup/bakSpace_0425/2021-04-25_14-08-15/ apply-log
# Step2 对在全备的基础对增量进行恢复
mysqlbackup --backup-dir=/root/workspace/mysqlbackup/bakSpace_0425/2021-04-25_14-08-15/ --incremental-backup-dir=/root/workspace/mysqlbackup/bakSpace_0425/incre/2021-04-25_14-22-21 apply-incremental-backup
# Step 3 覆盖现有数据库数据文件还原
mysqlbackup --defaults-file=/etc/my.cnf --force --backup-dir=/root/workspace/mysqlbackup/bakSpace_0425/2021-04-25_14-08-15/ --datadir=/data/mysql copy-back-and-apply-log
注:这里的错误是因为copy-back-and-apply-log参数有误,不影响结果,问题分析见文末处。
还原后
Step 1 重启mysql数据库服务
#重启mysql数据库服务
service mysqld start
Step 2 还原前后对比,还原后:
-- 查看数据库还原后当前表数据
SELECT * FROM test_04251019
由此可见数据库已经还原到增量(差异)备份时的状态。
问题
命令参数错误
Issue 1:该问题是因为还原中环节mysqlbackup命令参数使用不当导致。
解决方法: 将参数copy-back-and-apply-log修改成copy-back。