当前位置: 首页 > news >正文

linux 环境下mysql 数据库自动备份和清库 通过crontab 创建定时任务实现mysql数据库备份

文章目录

  • 1. 需求
  • 2.shell 脚本编写
  • 3. 通过crontab 创建定时任务

1. 需求

linux 环境下 通过crontab 创建定时任务实现mysql数据库每日凌晨2点备份

2.shell 脚本编写

#!/bin/bash
#备份保存路径与保留天数
backup_dir=/usr/local/mysql_bak/mysqlbackup
days=3
dd=$(date +%Y%m%d%H%M%S)#获取所有非系统数据库
# 安全读取密码(无回显)
read -s -p "Enter MySQL password: " MYSQL_PWD
echo  # 换行# 执行查询并检查错误
if ! DATABASES=$(mysql -uroot -p"$MYSQL_PWD" -sNe "SHOW DATABASES" 2>/dev/null); thenecho "Error: Failed to connect to MySQL or execute query." >&2exit 1
fi# 使用示例
echo "Databases:"
echo "$DATABASES"#DATABASES=$(mysql  --defaults-file=/etc/my.cnf -s -e "SHOW DATABASES")
for db in $DATABASES; doif [[ $db != "information_schema" ]] && [[ $db != "performance_schema" ]] &&[[ $db != "mysql" ]]&&[[  $db != "sys" ]]; then#执行备份并压缩mysqldump --skip-lock-tables $db |gzip >$backup_dir/${db}_$dd.sql.gz#清理旧备份ls -lt $backup_dir/${db}_* | awk 'NR>'$days | xargs rm -ffi
done==========================优化后1======================
#!/bin/bash
#备份保存路径与保留天数
backup_dir=/usr/local/mysql_bak/mysqlbackup
#日期路径
day_dir=$(date +%Y-%m-%d)
days=3
dd=$(date +%Y%m%d%H%M%S)#获取所有非系统数据库
# 安全读取密码(无回显)
read -s -p "Enter MySQL password: " MYSQL_PWD
echo  # 换行# 执行查询并检查错误
if ! DATABASES=$(mysql -uroot -p"$MYSQL_PWD" -sNe "SHOW DATABASES" 2>/dev/null); thenecho "Error: Failed to connect to MySQL or execute query." >&2exit 1
fi# 使用示例
echo "Databases:"
echo "$DATABASES"
cd $backup_dir
#DATABASES=$(mysql  --defaults-file=/etc/my.cnf -s -e "SHOW DATABASES")
for db in $DATABASES; doif [[ $db != "information_schema" ]] && [[ $db != "performance_schema" ]] &&[[ $db != "mysql" ]]&&[[  $db != "sys" ]] ; thenif [[ ! -e $day_dir  ]]; thenmkdir $day_dirfi#执行备份并压缩mysqldump --skip-lock-tables $db |gzip >$backup_dir/$day_dir/${db}_$dd.sql.gz#清理旧备份ls -lt $backup_dir/${db}_* | awk 'NR>'$days | xargs rm -ffi
done==============================优化后2============================
#!/bin/bash
#备份保存路径与保留天数
backup_dir=/usr/local/mysql_bak/mysqlbackup
#日期路径
day_dir=$(date +%Y-%m-%d)
days=7
dd=$(date +%Y%m%d%H%M%S)MYSQL_PWD=root123
echo  # 换行# 执行查询并检查错误
if ! DATABASES=$(mysql -uroot -p"$MYSQL_PWD" -sNe "SHOW DATABASES" 2>/dev/null); thenecho "Error: Failed to connect to MySQL or execute query." >&2exit 1
fi# 使用示例
echo "Databases:"
echo "$DATABASES"
cd $backup_dir
#DATABASES=$(mysql  --defaults-file=/etc/my.cnf -s -e "SHOW DATABASES")
for db in $DATABASES; doif [[ $db != "information_schema" ]] && [[ $db != "performance_schema" ]] &&[[ $db != "mysql" ]]&&[[  $db != "sys" ]] ; thenif [[ ! -e $day_dir  ]]; thenmkdir $day_dirfi#执行备份并压缩mysqldump --skip-lock-tables $db |gzip >$backup_dir/$day_dir/${db}_$dd.sql.gz#清理旧备份ls -lt $backup_dir/${db}_* | awk 'NR>'$days | xargs rm -ffi
done

3. 通过crontab 创建定时任务

  1. crontab -l 查询定时任务列表
  2. crontab -e 编辑定时任务
配置crontab每日执行(如凌晨2点)脚本如下:
0 2 * * * /usr/local/mysql_bak/mysql_backup_all.sh >>/var/log/mysql_backup.log 2>&1

在这里插入图片描述

  1. 通过vim 保存退出。
  2. 再执行crontab -l 查询是否生效。
    在这里插入图片描述
http://www.dtcms.com/a/465731.html

相关文章:

  • 每天一个设计模式——开闭原则
  • C++协程版本网络框架:快速构建一个高效极致简洁的HTTP服务器
  • 福州台江区网站建设网页怎么做链接
  • 单片机图形化编程:课程目录介绍 总纲
  • Redis-集合(Set)类型
  • 软件定义的理想硬件平台:Qotom Q30900SE/UE系列在AIO服务器与边缘网关中的实践
  • MS7126 24位立体音频DAC
  • 引领网站手机网站建设的整体流程
  • 计算机网络【第四章-网络层】
  • 响应式网站建设特征wordpress网站不显示系列
  • Fiddler抓包工具使用教程,代理设置与调试方法实战解析(含配置技巧)
  • linux系统中如何在root用户中将某个文件夹目录的权限赋值给其它用户(主要说的是 方法 1)
  • 手机网站引导页wordpress 动漫主题
  • 科技服务公司网站模版如何做视频类网站
  • 最小覆盖子串
  • 算法4.0
  • 云网智安一体:中国电信数字安全创新的技术破局与生态构建
  • 制作音乐网站实验报告佛山做外贸网站渠道
  • 企业级数据库实操手册:从架构部署到安全运维的落地指南
  • 网络安全认证培训机构的痛点
  • 网站搜索引擎推广方案做网页设计的网站
  • 国内坚持做正品的网站女人学ui有前途吗
  • centos如何做的时间同步
  • CentOS 7 环境下 RabbitMQ 的部署与 Web 管理界面基本使用指南
  • 【AT指令解析】TencentOS Tiny AT指令解析源码分析1-简介
  • centos/cuos如何开启软件源
  • Java常见业务场景之批处理优化:从稳定性、性能、数据一致性、健壮性、可观测性五大维度,系统提供批处理优化方案
  • 网站建设拟采用的技术路线深圳互联网公司招聘
  • 人工智能学习:逻辑回归
  • 23种设计模式——命令模式(Command Pattern)