我的编程空间,编程开发者的网络收藏夹
学习永远不晚

shell脚本如何定时备份MySQL数据库数据并保留指定时间

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

shell脚本如何定时备份MySQL数据库数据并保留指定时间

这篇文章主要介绍shell脚本如何定时备份MySQL数据库数据并保留指定时间,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

公司用到的MySQL数据库,经常有同事通过一顿骚操作把一些关键的配置数据误删,每次恢复都要花上不少时间,于是写了个shell脚本,结合corntab每天凌晨备份数据库,并保留7天。

同样的备份脚本也可用于生产环境MySQL数据库定时备份。

环境:CentOS 7.5 / MySQL 5.7

#!/bin/sh# 数据库账号信息DB_USER="root"DB_PWD="root"DB_HOST="127.0.0.1"DB_PORT="3306"# MYSQL所在目录MYSQL_DIR="/home/mysql"# 备份文件存放目录BAK_DIR="/home/db_backup"# 时间格式化,如 20200902DATE=`date +%Y%m%d`# 备份脚本保存的天数DEL_DAY=7# 要备份的数据库,空格分隔DATABASES=("apolloconfigdb" "apolloportaldb" "apolloconfigdb-uat" "frame-assistor" "frame-authorization" )# 创建日期目录mkdir $BAK_DIR/$DATEecho "-------------------$(date +%F_%T) start ---------------" >>${BAK_DIR}/db_backup.logfor database in "${DATABASES[@]}"do  # 执行备份命令  $MYSQL_DIR/bin/mysqldump --opt -u$DB_USER -p$DB_PWD -h$DB_HOST -P$DB_PORT ${database} > $BAK_DIR/$DATE/${database}.sqldoneecho "--- backup file created: $BAK_DIR/db_backup_$DATE.tar.gz" >>${BAK_DIR}/db_backup.log# 将备份好的sql脚本压缩到db_backup_yyyyMMdd.tar.gztar -czf $BAK_DIR/db_backup_$DATE.tar.gz $BAK_DIR/$DATE# 压缩后,删除压缩前的备份文件和目录rm -f $BAK_DIR/$DATE/*rmdir $BAK_DIR/$DATE# 遍历备份目录下的压缩文件LIST=$(ls ${BAK_DIR}/db_backup_*)# 获取截止时间,早于该时间的文件将删除SECONDS=$(date -d "$(date +%F) -${DEL_DAY} days" +%s)for index in ${LIST}do  # 对文件名进行格式化,取命名末尾的时间,格式如 20200902  timeString=$(echo ${index} | egrep -o "?[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]")  if [ -n "$timeString" ]  then    indexDate=${timeString//./-}    indexSecond=$( date -d ${indexDate} +%s )    # 与当天的时间做对比,把早于7天的备份文件删除    if [ $(( $SECONDS- $indexSecond )) -gt 0 ]    then      rm -f $index      echo "---- deleted old backup file : $index " >>${BAK_DIR}/db_backup.log    fi  fidoneecho "-------------------$(date +%F_%T) end ---------------" >>${BAK_DIR}/db_backup.log

保存成 backupDB.sh 脚本后,执行脚本验证一下。查看BAK_DIR备份目录下的db_backup.log可以看到备份的执行情况。

-------------------2020-09-02_21:33:01 start ---------------
--- backup file created: /home/db_backup/db_backup_20200902.tar.gz
-------------------2020-09-02_21:33:18 end ---------------

验证没问题后,通过crontab -e配置成定时任务执行,要注意的是,mysqldump备份执行时是会锁表的,建议在凌晨没什么人操作数据库的时候执行备份操作。

# 每天凌晨3点执行0 3 * * * sh /home/backupDB.sh > /dev/null 2>&1 &

注意:

如果不希望备份时锁表,可以在mysqldump命令中添加参数--skip-lock-tables;

上述脚本中指定了要备份的数据库,如果想备份所有数据库,则无需指定数据库,在mysqldump命令中添加参数--all-databases即可。

以上是“shell脚本如何定时备份MySQL数据库数据并保留指定时间”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

shell脚本如何定时备份MySQL数据库数据并保留指定时间

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

shell脚本如何定时备份MySQL数据库数据并保留指定时间

这篇文章主要介绍shell脚本如何定时备份MySQL数据库数据并保留指定时间,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!公司用到的MySQL数据库,经常有同事通过一顿骚操作把一些关键的配置数据误删,每次恢复都要花上
2023-06-09

Mysql数据库定时备份脚本分享

BackUpMysql.sh脚本#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin export PATH#数据库ip DBHOST='
2022-05-31

shell脚本实现mysql数据库双机定时备份的方法

目录1 缘起与目的2 确认环境2.1 导出数据库sql脚本2.2 跨机器拷贝2.3 docker容器确认环境3 构建脚本3.1 脚本内容3.2 手动执行脚本确认正常4 定时任务1 缘起与目的最近有个需求,要求实现对某个数据库进行双机备份,
2022-07-20

给Linux定时备份数据库的实现脚本

目录场景:服务器数据库需要实现每天定时备份1.首先确定备份脚本放置位置2.编写sh脚本3.给bash增加权限4.测试看看脚本是否是正确可执行的5.打开定时任务6.编辑内容7.查看定时任务 crontab -l8.踩坑服务器数据实现还原1.
2022-06-04

Linux shell实现每天定时备份mysql数据库

每天定时备份mysql数据库任务,删除指定天数前的数据,保留指定天的数据; 需求:1,每天4点备份mysql数据;2,为节省空间,删除超过3个月的所有备份数据;3,删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据;#
2022-06-04

MySQL如何实现定时全库备份数据库

这篇文章给大家分享的是有关MySQL如何实现定时全库备份数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、MySQL数据备份1.1、 mysqldump命令备份数据在MySQL中提供了命令行导出数据库数据以
2023-06-20

Mysql数据库如何手动及定时备份

这篇文章给大家分享的是有关Mysql数据库如何手动及定时备份的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。手动备份1)cmd控制台:mysqldump -uroot -proot 数据库名 [表名1,表名2...
2023-06-25

sql数据库定时备份如何弄

要定时备份一个SQL数据库,可以使用数据库管理工具或者编写脚本来执行备份操作。以下是一些常用的方法:使用数据库管理工具:大多数数据库管理工具都提供了定时备份数据库的功能。例如,可以使用MySQL Workbench来创建一个定时任务来备份M
sql数据库定时备份如何弄
2024-04-09

Docker容器怎么定时备份数据库并发送到指定邮箱

今天就跟大家聊聊有关Docker容器怎么定时备份数据库并发送到指定邮箱,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、背景:一开始的初衷是,想写一个脚本来监控服务器的高占用率进程并
2023-06-22

怎么在linux中定时备份MySQL数据库并删除备份文件

怎么在linux中定时备份MySQL数据库并删除备份文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一丶选择一个比较大位置来保存备份文件(创建文件就行)使用mkdir来创
2023-06-09

mysql如何实现定时自动备份数据库功能

这篇文章主要介绍mysql如何实现定时自动备份数据库功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!第一种,数据跑在服务器上,如果只想定时把数据库备份放在服务器(此处服务器系统为centos7)上,可如下设置:首先
2023-06-20

Linux下怎么用shell实现每天定时备份mysql数据库

这篇文章主要讲解了“Linux下怎么用shell实现每天定时备份mysql数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux下怎么用shell实现每天定时备份mysql数据库”吧
2023-06-09

Linux实现定时备份MySQL数据库并删除30天前的备份文件

1. mysql5.6以上版本 2. 修改 /etc/my.cnf 文件# vim /etc/my.cnf [client] host=localhost user=你的数据库用户 password='你的数据库密码'3. 编写数据库脚本
2022-06-04

编程热搜

目录