shell笔记:定时自动备份mysql数据库并上传到oss

上周,我们在写一些清理数据的脚本时,由于不同开发人员的脚本执行顺序没有详细对接,导致有一张表的某个字段丢失了一天的数据,虽然后来费了好大精力想办法弥补回来,但类似的情况最好还是杜绝,至少需要一个自动备份数据库的工具。

需求分析

导致数据丢失的原因有很多,员工操作失误,服务器硬盘挂了(机房烧了),服务器被人黑了然后篡改数据库了,甚至是员工删库跑路了,都是有可能的。

那我们需要把数据库备份到一个大概率不会发送这些情况的地方,比如阿里云的 oss 上。

这个傻瓜式的备份工具至少应该具备以下功能:

  1. 定时备份数据库;
  2. 压缩打包后上传到 oss ,删除本地压缩包;
  3. 删除 OSS 上超出指定时效的备份(避免产生不必要费用);

oss工具ossutil

为了操作 oss 我们需要用到 oss 官方提供的工具 ossutil ;并给它执行权限,创建软连接。

wget http://gosspublic.alicdn.com/ossutil/1.6.19/ossutil64
cp ossutil64 /opt/tools/
chmod 755 /opt/tools/ossutil64
sudo ln -s /opt/tools/ossutil64 /usr/local/bin/ossutil64

知识点

  • mysqldump命令中如何排除不需要的表,或者指定备份哪些表
  • oss工具ossutil64的基本用法
  • shell中如何生成随机字符串
  • shell中如何获取几天前的时间
  • shell中如何定义数组并进行循环

开箱即用的shell脚本


将以上内容写入到 sh 文件 /opt/tools/shell/mysql_backup_test.sh 中。

定时执行

使用 crontab 配置每天凌晨3点15分执行备份:

15 3 * * * /opt/tools/shell/mysql_backup_test.sh >> /opt/tools/shell/mysql_backup_test.log 2>&1

使用备份包恢复数据库

方法1:解压 tar.gz 压缩包得到 sql 文件,然后在 mysql 中去恢复。

这部分内容需付费后浏览

方法2:直接导入 tar.gz 压缩包到 mysql
这部分内容需付费后浏览

参考文章

标题:shell笔记:定时自动备份mysql数据库并上传到oss

原文链接:https://beltxman.com/3251.html

若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。

发表评论

您的电子邮箱地址不会被公开。

Scroll to top
正在处理,请稍候 . . .