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

【数据库备份】docker中数据库备份脚本——MySql备份脚本

docker中数据库备份脚本——MySql备份脚本

#!/bin/bash

# MySQL数据库信息
DB_USER="root"
DB_PASSWORD="你的密码"

# 备份保存主目录
BACKUP_ROOT="/data/data_backup/mysql"

# 最多保留的备份日期文件夹数
MAX_DATE_FOLDERS=15

# 数组包含要备份的数据库名称
DB_NAMES=("数据库名称1" "数据库名称2" "数据库名称3" "数据库名称4")

# 获取当前日期
CURRENT_DATE=$(date +%Y%m%d)

# 循环备份每个数据库
for DB_NAME in "${DB_NAMES[@]}"; do
    # 创建日期文件夹(如果不存在)
    BACKUP_DIR="$BACKUP_ROOT/$CURRENT_DATE"
    mkdir -p "$BACKUP_DIR"

    # 备份文件名
    BACKUP_FILE="$BACKUP_DIR/backup_${DB_NAME}_${CURRENT_DATE}.sql"

    # MySQL备份命令
    docker exec -i mysql mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_FILE

    # 删除过期的日期文件夹
    CURRENT_DATE_FOLDERS=$(ls -1 -d $BACKUP_ROOT/*/ 2>/dev/null)
    NUM_DATE_FOLDERS=$(echo "$CURRENT_DATE_FOLDERS" | wc -l)
    if [ $NUM_DATE_FOLDERS -gt $MAX_DATE_FOLDERS ]; then
        OLDEST_DATE_FOLDER=$(echo "$CURRENT_DATE_FOLDERS" | head -n 1)
        rm -r "$OLDEST_DATE_FOLDER"
        echo "Deleted expired date folder: $OLDEST_DATE_FOLDER"
    fi

    echo "Backup completed for $DB_NAME: $BACKUP_FILE"
done

定时任务
命令:crontab -e

0 0 * * * /data/data_backup/mysql/backup.sh

每天0点开始备份

相关文章:

  • 【工具分享】vscode+deepseek的接入与使用
  • Spring MVC响应数据
  • Redis Spring Cache
  • 一和零 (leetcode 474
  • wujie vite vue3
  • 尝试将相机采集图像流程封装成相机采图类
  • 数据可信安全流通实战,隐语开源社区Meetup武汉站开放报名
  • 如何制作一个手机用的电动3D扫描转盘
  • 未来办公与生活的新范式——智慧园区
  • 【K8S】ImagePullBackOff状态问题排查。
  • iwebsec-updatexml报错注入
  • Linux的I2C总线的原理和结构详解
  • ZMC600E,多核异构如何成就机器人精准控制?
  • CMS漏洞-DeDeCMS篇
  • Python数据可视化实战:从基础图表到高级分析
  • 基于springboot的房产销售系统(016)
  • Spring常用参数校验注解
  • 【MySQL】存储过程
  • 前端安全之DOMPurify基础使用
  • 如何理解分布式光纤传感器?
  • 视频丨雄姿英发!中国仪仗队步入莫斯科红场
  • 保证断电、碰撞等事故中车门系统能够开启!隐藏式门把手将迎来强制性国家标准
  • 鸿蒙电脑正式亮相,五年布局积累超2700项核心专利
  • 中国以“大幅开放市场”回应贸易保护主义
  • 央行:增加支农支小再贷款额度3000亿元
  • 古龙逝世四十周年|中国武侠文学学会与多所高校联合发起学术纪念活动