【Linux】shell实现数据库定时备份

唠嗑部分

先来问一个问题,作为开发,编写升级说明文档基本上已成了家常便饭,那么对于数据库数据升级你们是怎么做的呢?

还没有工作的小伙伴可能不知道哈,举个例子:假如项目中有一个表,用来存储不经常变的数据,但是由于业务的要求,下次迭代时,需要换掉这些数据,那应该怎么做呢?

首先我来说说大家可能想得到的方式,后台做成接口,增删改查…直接调用,完事

不可取昂,后端接口的设计要跟需求紧密相连,每一个接口要是经过严格测试才能上线的,并不是接口你想加就加,不常用的数据你加了接口,测试要写用例、白白增加团队工作量,项目经理肯定不允许

这种情况一般都是写sql脚本处理的,运维人员根据升级说明文档进行升级,这就需要数据的备份机制,如果升级失败,要恢复升级前的状态

MySQL的备份命令就不多说了昂,本次文章说一说Linux系统如何定时的备份数据库

先介绍一下Linux的定时job

安装

vixie-cron软件包是crontab的主程序

crontabs软件包是用来安装、卸装、或列举用来驱动crontab守护进程的表格的程序

# 检查是否安装
crontab -e
# 安装
yum -y install vixie-cron
yum -y install crontabs
# 启动
systemctl start crond.service
# 开机自启动
systemctl enable crond.service

操作命令

crontab -e  # 编辑用户的定时任务
crontab -l  # 列出用户的定时任务列表
crontab -r  # 清空用户的定时任务
言归正传

备份的shell脚本,bf.sh

#!/bin/bash
# 备份目录
DIR=/root/db_bf
# 获取时间
DATE=$(date +%Y-%m-%d)
DATETIME=$(date +%Y-%m-%d_%H%M%S)
# 主机地址
HOST=localhost
# 端口
PORT=3306
# 用户名
USERNAME=root
# 密码
PASSWORD=root
# 要备份的数据库
DATABASE=db_bf
# 检查并创建备份目录
[ ! -d "${DIR}/${DATABASE}/${DATE}" ] && mkdir -p "${DIR}/${DATABASE}/${DATE}"
# beifen
mysqldump -u${USERNAME} -p${PASSWORD} -h${HOST} -P${PORT} -q -R --databases ${DATABASE} | gzip > ${DIR}/${DATABASE}/${DATE}/${DATABASE}_${DATETIME}.sql.gz

# 打包归档
cd ${DIR}/${DATABASE}
tar -zcvf ${DATE}.tar.gz ${DATE}
rm -rf ${DATE}

find ${DIR}/${DATABASE} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "数据库${DATABASE}备份成功...."

将bf.sh上传至服务器,授权

[root@cxs-centos8 db_bf]# ls
bf.sh
[root@cxs-centos8 db_bf]# chmod +x bf.sh 
[root@cxs-centos8 db_bf]#

配置定时任务

crontab -e
# 将下面这行输入(每一分钟执行一次), Esc :wq
*/1 * * * * /root/db_bf/bf.sh

重启

systemctl restart crond

等待一分钟,查看结果

image-20230307151304618

顺便说一下Mysql命令行导入sql脚本

首先删除原有的db_bf库

[root@cxs-centos8 2023-03-07]# mysql -u root -p -e "drop database db_bf"
Enter password: 
[root@cxs-centos8 2023-03-07]#

直接恢复

[root@cxs-centos8 2023-03-07]# mysql -u root -p < db_bf_2023-03-07_151501.sql 
Enter password: 
[root@cxs-centos8 2023-03-07]#

登录查看结果

image-20230307151951361

结语

备份命令可在脚本中获取,如下可参考

mysqldump -uroot -proot -q -R --databases db_bf > bf.sql

1、制作不易,一键三连再走吧,您的支持永远是我最大的动力!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小白.

感谢老板,祝老板今年发大财!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值