xtrabackup与shell实战增量备份案例

##

xtrabackup与shell实战增量备份案例

1、概述

一个客户的需求是对MySQL数据库进行备份,使用工具是xtrabackup,备份要求是每天0点5执行全备,然后每小时的第五分钟执行增量备份,备份保留7天。

作为DBA,使用备份工具对数据库进行备份应该是日常操作之一。

于是我给客户写了一个全备和增量备份以及备份文件清理的脚本,并且使用crontab,这样就可以满足需求。

脚本编写完成之后,我对0点,1点,2点,3点,这几个时间段进行了测试,没有发现问题,数据库备份成功,且检查了日志,均无问题。

2、发现问题

但是在第二天,我再次检查备份时发现如下问题,且备份时间在8点就备份失败。

2023-08-08T08:05:22.058039+08:00 0 [ERROR] [MY-011825] [Xtrabackup] cannot open /mysql/backup/mysqlbackup20230808/mysqlincbackup-1/LSN_INFO//xtrabackup_checkpoints
2023-08-08T08:05:22.058060+08:00 0 [ERROR] [MY-011825] [Xtrabackup] failed to read metadata from /mysql/backup/mysqlbackup20230808/mysqlincbackup-1/LSN_INFO//xtrabackup_checkpoints

3、解决思路

因为是每小时进行备份,目录的数字都是增加的,这就发现mysqlincbackup-1这个目录就非常的诡异.

之前看过因为时区问题导致xtrabackup备份失败的文章,这里因为也是基于时间的备份,所以想是不是因为这个问题导致,所以里面检查了系统时区和数据库的时区,结果发现如下:

OS 时区是:PDT

数据库时区是:PST

当我看到这个时,找到问题的原因了。但是出于警惕,并没有轻易的去更改时区,先是百度了两个时区的信息,然后在操作系统使用date以及MySQL中使用select now();检查了时间信息。

发现居然是一致的。

于是我对数据库环境进行了模拟,然后测试脚本,这里先放脚本:

ti=`(date +%H)`
ti1=$((ti - 0))
ti2=$((ti1 - 1))

定义三个变量获取时间信息,咋一看是没啥问题。但是当我使用date -s设置时间为8点5分。然后运行增量备份脚本时就发现了问题:

[root@mydb01 backup]# ./date.sh
./date.sh: line 4: 08: value too great for base (error token is "08")
08

-1

已经找到错误了,山穷水尽疑无路。由于进制转换的问题导致08识别成了8进制。至于如何解决呢?欢迎关注。

4、思考

同时感叹,作为MySQL DBA,一定要具备基本的shell能力。卷起来!!!


原文始发于微信公众号(库海无涯):xtrabackup与shell实战增量备份案例

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/241291.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!