我自己动手写了一个MySQL自动化备份脚本,基于docker

MySQL自动化备份Docker方案

该方案仅需通过 Docker Compose 就能轻松完成部署。你可以自由配置数据库连接信息,无论是远程数据库,还是本地数据库,都能实现无缝对接。在备份频率设置上,支持按固定秒数间隔执行备份任务,比如设置 INTERVAL_SECONDS=3600,即可实现每小时自动备份;若设为 INTERVAL_SECONDS=86400,则能达成每日备份。

备份文件管理方面,它同样表现出色。你可以将备份文件存储在宿主机指定目录,像 /vol2/1000/mysqlbackup,保障数据持久化存储。同时,提供按天数或文件数量两种保留策略,选择按天数保留,设置 RETENTION_DAYS=7,就能自动清理 7 天前的旧备份;若选择按文件数保留,配置 RETENTION_COUNT=10,则只留存最新的 10 个备份文件,有效节省存储空间。

此方案不仅适合个人开发者保障数据安全,对于企业级数据库备份场景也同样适用。它操作便捷、配置灵活,能为你的数据安全保驾护航。 快来试试这个 MySQL 自动化备份 Docker 方案,开启轻松备份新体验!

方案特点

  • 间隔时间备份:按固定秒数间隔执行备份任务
  • 灵活保留策略:可按天数或文件数量自动清理旧备份
  • 远程数据库支持:直接连接远程MySQL数据库进行备份
  • 持久化存储:备份文件存储在宿主机指定目录,确保数据安全

Docker Compose 配置

以下是简化后的Docker Compose配置:

yaml 复制代码
version: '3'
services:
  mysql-backup:
    image: fjsay/mysql-backup:latest
    container_name: mysql-backup
    environment:
      - DB_HOST=xxxxx                          # 数据库主机地址
      - DB_PORT=3306                            # 数据库端口(默认3306)
      - DB_USER=xxxxx                          # 数据库用户名
      - DB_PASSWORD=xxxxx                      # 数据库密码
      - DB_NAME=xxxxxx                         # 要备份的数据库名称(留空备份所有库)
      - BACKUP_MODE=interval                   # 固定为间隔模式
      - INTERVAL_SECONDS=43200                 # 备份间隔时间(秒)
      - BACKUP_DIR=/backups                    # 容器内备份目录(保持默认)
      - RETENTION_POLICY=days                  # 保留策略:days(按天)或 count(按文件数)
      - RETENTION_DAYS=365                     # 按天保留时的天数(默认7天)
      - RETENTION_COUNT=10                     # 按文件数保留时的数量(默认10个)
    volumes:
      - /vol2/1000/mysqlbackup:/backups       # 宿主机备份目录挂载
    restart: always                           # 容器异常退出时自动重启

配置参数说明

数据库连接参数

参数名 说明 示例值
DB_HOST 数据库主机地址(支持域名或 IP) mysql.example.com
DB_PORT 数据库端口 3306
DB_USER 数据库用户名 backup_user
DB_PASSWORD 数据库密码 strong_password
DB_NAME 要备份的数据库名称(留空则备份所有数据库) my_database

备份间隔参数

通过INTERVAL_SECONDS参数设置备份执行间隔(秒):

  • INTERVAL_SECONDS=3600:每小时执行一次
  • INTERVAL_SECONDS=900:每15分钟执行一次
  • INTERVAL_SECONDS=86400:每天执行一次(24小时)

备份保留策略

1. 按天数保留(RETENTION_POLICY=days

自动删除超过指定天数的旧备份:

  • RETENTION_DAYS=7:保留最近7天的备份
  • RETENTION_DAYS=30:保留最近30天的备份
  • RETENTION_DAYS=365:保留最近1年的备份
2. 按文件数保留(RETENTION_POLICY=count

只保留指定数量的最新备份文件:

  • RETENTION_COUNT=10:保留最近10个备份
  • RETENTION_COUNT=50:保留最近50个备份
  • RETENTION_COUNT=100:保留最近100个备份

使用步骤

  1. 创建配置文件 :将上述Docker Compose配置保存为docker-compose.yml

  2. 修改参数:根据实际需求修改数据库连接信息和备份策略

  3. 启动服务

    bash 复制代码
    docker-compose up -d
  4. 验证备份

    bash 复制代码
    # 查看容器日志
    docker logs -f mysql-backup
    
    # 检查备份文件
    ls -la /vol2/1000/mysqlbackup
相关推荐
Database_Cool_1 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
2601_960567962 小时前
电商套图自动化效率的工程量化分析——从逐张生成到批量套图的架构演进
运维·架构·自动化
姜太小白2 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
HiDev_3 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
liuxiaowei33 小时前
【绝版教程】新版MySQL DBA高级实战进阶班 MySQL8.0 姜承尧-腾讯数据库总监
数据库·mysql·dba
一次旅行4 小时前
Python+大模型端到端自动化日报系统
开发语言·python·自动化
我送炭你添花5 小时前
工业现场疑难软故障实录:09 老旧产线,稳定裕量已经被吃光了
机器人·自动化·智能工厂
AOwhisky5 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
sg_knight6 小时前
MySQL 存储过程详解:从入门到实战
android·数据库·mysql·database·dba·关系型数据库·db
Urbano6 小时前
夹克与商务单西口袋工序自动化技改研究报告
运维·自动化