暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

MySQL Xtrabackup 备份数据有效性恢复验证

689

大家好,我是 JiekeXu,江湖人称“强哥”,青学会 MOP 技术社区主席,荣获 Oracle ACE Pro 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、KCA、KCP、KCM、KCSM 等众多国产数据库认证证书,欢迎关注我的微信公众号“JiekeXu DBA之路”,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!

背景

在这个信息化时代,数据的重要性不言而喻,相对于企业而言,数据丢失则会带来严重的后果。为了保障数据的安全和可靠性,备份数据恢复验证变的致关重要,本测试验证旨在验证 MySQL Xtrabackup 备份数据的有效性。

目标

验证一个完整备份集能够正常恢复,无任何报错,且能够恢复到指定的时间点提供正常服务。

环境说明

OS配置:单机 X86 Linux 7.9 虚拟机,CPU 内存配置16c/64GB,6TB /data 本地磁盘。

DB配置:安装MySQL 社区版 8.0.15,innodb_buffer_pool_size=12GB

测试步骤

1、准备安装好 MySQL 社区版 8.0.15以及备份恢复软件 Xtrabackup、qpress(Innobackupex 解压缩工具)

wget https://docs-tencentdb-1256569818.cos.ap-guangzhou.myqcloud.com/qpress-11-linux-x64.tar

tar -xf qpress-11-linux-x64.tar -C /usr/local/bin

source /etc/profile

2、通过备份一体机或者 NFS 恢复或拷贝一个全备(每周六全备,其他增备)数据到备份恢复验证机器 /data/backup/mysqlbak 目录

3、通过xtrabackup如下命令解压所有的备份

xtrabackup --decompress --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-19-6

xtrabackup --decompress --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-20-0

xtrabackup --decompress --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-21-1

xtrabackup --decompress --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-22-2

xtrabackup --decompress --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-23-3

xtrabackup --decompress --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-24-4

如下所示,解压完成。

4、通过xtrabackup进行全量恢复

xtrabackup --prepare --apply-log-only --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-19-6

合并其他几天的增量备份数据。

xtrabackup --prepare --apply-log-only --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-19-6 --incremental-dir=/data/backup/mysqlbak/2024-10-20-0

xtrabackup --prepare --apply-log-only --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-19-6 --incremental-dir=/data/backup/mysqlbak/2024-10-21-1

xtrabackup --prepare --apply-log-only --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-19-6 --incremental-dir=/data/backup/mysqlbak/2024-10-22-2

xtrabackup --prepare --apply-log-only --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-19-6 --incremental-dir=/data/backup/mysqlbak/2024-10-23-3

--合并最后增量备份

xtrabackup --prepare --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-19-6 --incremental-dir=/data/backup/mysqlbak/2024-10-24-4


5、通过 xtrabackup 恢复 MySQL

xtrabackup --defaults-file=/data/mysql/conf/mysql.conf --copy-back --use-memory=8G --target-dir=/data/backup/mysqlbak/2024-10-19-6

6、登录 MySQL 数据库验证

mysql -uroot -h 192.168.xx.xx -P3306 -pxxxxx

验证恢复后的数据库,比较两端数据库个数和个别表的记录数一样,则恢复无问题。

如果备份了 binlog,则可以通过 binlog 恢复到某个时间点或最后一个 binlog 所在的时间点。 如下则是恢复binlog 的步骤。

查看备份文件中最后备份binlog位置

查看数据库在恢复前MySQL gitd及binlog位置

查看恢复前ccte.t_axxion表数量

执行命令,从备份结束位置,开始恢复binlog

mysqlbinlog binlog.004454 --start-position=231 | mysql -uroot -h 192.168.xx.xx -P3306 -p

恢复后 MySQL gitd 及 binlog 位置

查看恢复后cc.t_axxion表数量,已经发生了增长。

测试结果

通过以上测试恢复及登录验证,原库和恢复库数据库一致,恢复无报错,算是正常恢复了。随机查看数据库和对应的表数据,记录数一致,则可验证恢复没有问题。然后通过备份 binlog 还可以进行基于时间点的恢复,能够恢复到指定时间的数据。


测试结论

通过本次拿到的一周全备加每天的增备及 binlog 日志,可以将数据库恢复到一个特定的时间点,也验证了本次备份集的备份有效性,符合预期。以上是本次 MySQL 备份有效性恢复验证的过程,如有问题,可随时与我交流沟通,谢谢。

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

facebook_pro_light_1920 × 1080  副本.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论