我自己动手写了一个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配置:

version: '3'
services:mysql-backup:image: fjsay/mysql-backup:latestcontainer_name: mysql-backupenvironment:- 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. 启动服务

    docker-compose up -d
    
  4. 验证备份

    # 查看容器日志
    docker logs -f mysql-backup# 检查备份文件
    ls -la /vol2/1000/mysqlbackup
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/85030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode23-合并K个升序链表

leetcode 23 思路 遍历所有链表收集节点:将每个链表的节点断开其 next 指针后存入数组对数组进行排序:使用 JavaScript 的内置 sort 方法对节点数组按值排序重新连接排序后的节点:遍历排序后的数组,依次连接每个节点形成新链表…

(十六)GRU 与 LSTM 的门控奥秘:长期依赖捕捉中的遗忘 - 更新机制对比

1 长期依赖捕捉能力的核心差异 1.1 信息传递路径:细胞状态 vs 单一隐藏状态 LSTM的“信息高速公路”机制 LSTM通过独立的细胞状态(Cell State) 传递长期信息,该状态可视为“直接通路”,允许信息跨越多个时间步而不被中…

HTTP 请求报文 方法

在 HTTP 请求报文 中,方法(Method) 是用来说明客户端希望对服务器资源执行的操作。它出现在 HTTP 报文的第一行,称为 请求行,格式如下: METHOD Request-URI HTTP-Version例如: GET /index.h…

【深度解析】Java高级并发模式与实践:从ThreadLocal到无锁编程,全面避坑指南!

🔍 一、ThreadLocal:线程隔离的利器与内存泄露陷阱 底层原理揭秘: 每个线程内部维护ThreadLocalMap,Key为弱引用的ThreadLocal对象,Value为存储的值。这种设计导致了经典内存泄露场景: // 典型应用&#…

使用存储型 XSS 窃取 cookie 并发送到你控制的服务器

🧪 第一步:准备监听服务接收 cookie 在你的本机(非容器)或 DVWA 所在主机运行以下 Python 监听代码,用于接收窃取的 cookie: 启动 HTTP 接收服务 # 在本机终端运行,监听 8081 端口&#xff0…

WebDebugX和多工具组合的移动端调试流程构建:一个混合App项目的实践案例

前段时间参与了一个跨平台的医疗服务 App 项目,整体架构采用 Flutter 封装原生模块,部分功能模块嵌套 WebView 加载 H5 页面。开发过程中我们频繁遇到 Web 页面在移动端表现异常的问题,比如样式错乱、请求失败、性能延迟等,而这些…

图形编辑器基于Paper.js教程29:基于图层的所有矢量图元的填充规则实现

背景 在lightburn中,对于填充图层,有这样一个隐藏的逻辑,那就是,在加工时,填充规则是以填充图层的所有元素进行计算的,什么意思那? 如果你在填充图层中画了两个图形,一个圆&#xf…

Python 函数实战指南:提升编程效率的实用技巧

在 Python 编程的世界里,函数是构建高效代码的基石。掌握实用的函数技巧不仅能让代码更加简洁优雅,还能显著提升开发效率。我们一起将结合实际案例,深入剖析 Python 函数的使用技巧,帮助开发者在日常开发中事半功倍。 一、基础函数…

OPenCV CUDA模块图形变换----构建透视变换映射表函数buildWarpPerspectiveMaps()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数用于构建一个透视变换(Perspective Transform)的映射表(xmap / ymap),可用于后…

tcping工具使用指南

tcping是一个用于测试TCP端口连通性的工具,它类似于传统的ping命令,但工作在传输层(TCP)而不是网络层(ICMP)。 基本功能 tcping的主要功能包括: 测试目标主机特定TCP端口是否开放 测量TCP连接建立时间 统计丢包率和响应时间 安装方法 …

CSP 2024 入门级第一轮(88.5)

4. 以下哪个序列对应数字 00 至 88 的 44 位二进制格雷码(Gray code)?( ) A. 0000, 0001, 0011, 0010, 0110, 0111, 0101, 1000 B. 0000, 0001, 0011, 0010, 0110, 0111, 0100, 0101 C. 0000, 0001, 0011, 0010, …

三菱FX-5U系列入门到精通

第2章 中间继电器 继电器工作模式:线圈得电,常开触点闭合,常闭触点断开。总结:中间继电器线圈电压分为:24VDC 110VAC 220VAC 380VAC PLC控制柜中常用的是24VDC比较多,而动力电柜中或者控制风机水泵的电柜中220VAC比较多。大部分选择24VDC,然后用触点控制220或者380,说白…

简历模板1——王明 | 高级数据挖掘工程师 | 5年经验

王明 | 高级数据挖掘工程师 | 5年经验 📱 (86) 189-xxxx-xxxx | 📧 wangmingemail.com | 📍 深圳市 💻 GitHub | 👔 LinkedIn 💼 工作经历 ​科技前沿集团 | 高级数据挖掘工程师 📅 2021.06 …

【JVM】- 内存模式

Java内存模型:JMM(Java Memory Model),定义了一套在多线程环境下,读写共享数据(成员变量、数组)时,对数据的可见性,有序性和原子性的规则和保障。 原子性 问题分析 【问…

AQS独占模式——资源获取和释放源码分析

AQS资源获取(独占模式) Node节点类 static final class Node {//标记当前节点的线程在共享模式下等待。static final Node SHARED new Node();//标记当前节点的线程在独占模式下等待。static final Node EXCLUSIVE null;//waitStatus的值&#xff0c…

压测过程中TPS上不去可能是什么原因

进行性能分析 接口没有报错或者错误率低于1%,继续增加并发还是一样,这个时候需要考虑几点 1.是否触发限流,比如waf、Nginx等情况,有没有一些限流的情况,如果触发了限流,请求是没有达到后端的,所…

Golang 解大整数乘法

文章目录 Golang 解大整数乘法问题描述:LeetCode 43. 字符串相乘思路Golang 代码 Golang 解大整数乘法 在初学 C 语言的时候,我们一定接触过“字符串相加”或“字符串相乘”之类的问题,对于初学者而言,这类问题的难度一般来说是比…

web3-区块链的技术安全/经济安全以及去杠杆螺旋(经济稳定)

web3-区块链的技术安全/经济安全以及去杠杆螺旋(经济稳定) 三个基本设计问题 技术安全 在技术结构中对其进行原子级的、瞬时利用(无风险) 无风险,因为攻击者的结果还是二进制的: 只会是攻击成功 获利或…

Java多线程通信:wait/notify与sleep的深度剖析(时序图详解)

在Java多线程编程中,线程间的通信与协作是实现复杂并发逻辑的关键。wait()、notify()以及sleep()方法作为线程控制的重要工具,有着各自独特的使用场景与规则。本文将深入探讨wait()和notify()的协作机制,以及sleep()的阻塞特性,同…

关于使用EasyExcel、 Vue3实现导入导出功能

后端部分: 其中查询数据的服务省略 1、引用 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.3</version></dependency> 2、controller package com.rs.cphs.sys.controller;i…