mysql-backup

mysql-backup

MySQL数据库备份恢复的开源工具

mysql-backup是一个开源的MySQL数据库备份恢复工具。它提供定期自动备份、多种存储选项、自定义备份计划和旧备份清理等功能。支持Docker容器和独立二进制文件两种运行方式。该工具适用于日常备份和数据恢复等多种场景,可满足MySQL数据库管理的基本需求。

MySQL备份数据库恢复容器化配置选项开源项目Github

mysql-备份

将mysql数据库备份到...任何地方!

概述

mysql-backup是一种简单的方法来执行MySQL数据库备份和恢复,以及管理您的备份。

它具有以下功能:

  • 转储和恢复
  • 转储到本地文件系统或SMB服务器
  • 选择数据库用户和密码
  • 连接到同一系统上运行的任何容器
  • 选择执行转储的频率
  • 选择开始第一次转储的时间,无论是一天中的某个时间还是相对于容器启动时间
  • 删除早于特定时间段或数量的备份

请查看CONTRIBUTORS.md获取贡献者列表。

版本

这是最新版本,基于2023年底完成的1.0.0版本的代码库完全重建,使用golang开发。

支持

可在databack Slack频道获得支持;在此处注册。我们在这里接受问题,并在Slack上回答常规支持问题。

如果您对商业支持感兴趣,请通过上面的Slack与我们联系。

运行mysql-backup

mysql-backup既可作为单独的独立二进制文件使用,也可作为容器镜像使用。

备份

要运行备份,请使用正确的参数启动mysql-backup - 作为容器或二进制文件。

例如:

docker run -d --restart=always -e DB_DUMP_FREQ=60 -e DB_DUMP_BEGIN=2330 -e DB_DUMP_TARGET=/local/file/path -e DB_SERVER=my-db-address -v /local/file/path:/db databack/mysql-backup dump # 或 mysql-backup dump --frequency=60 --begin=2330 --target=/local/file/path --server=my-db-address # 或通过unix域套接字以当前用户身份连接到本地mysqld mysql-backup dump --frequency=60 --begin=2330 --target=/local/file/path --server=/run/mysqld/mysqld.sock

mysql-backup --config-file=/path/to/config/file.yaml,其中/path/to/config/file.yaml是具有以下内容的文件:

server: my-db-address dump: frequency: 60 begin: 2330 target: /local/file/path

上述命令将每60分钟执行一次转储,从下一个本地时间2330开始,从容器my-db-address中可访问的数据库进行转储。

docker run -d --restart=always -e DB_USER=user123 -e DB_PASS=pass123 -e DB_DUMP_FREQ=60 -e DB_DUMP_BEGIN=2330 -e DB_DUMP_TARGET=/db -e DB_SERVER=my-db-address -v /local/file/path:/db databack/mysql-backup dump # 或 mysql-backup dump --user=user123 --pass=pass123 --frequency=60 --begin=2330 --target=/local/file/path --server=my-db-address --port=3306

有关执行备份的更详细说明,请参阅backup

有关所有配置选项的详细列表,请参阅configuration

恢复

要执行恢复,只需反向运行该过程。您仍然连接到数据库,但不是使用转储命令,而是传递恢复命令。您不传递转储目标,而是传递恢复目标。

转储恢复

如果您希望对现有数据库进行恢复,可以使用mysql-backup执行恢复。

您只需要以下环境变量:

您应该考虑使用--env-file=来将您的密钥保存在shell历史记录之外

  • DB_SERVER: 连接到数据库的主机名或unix域套接字路径(以斜杠开头)。必需。
  • DB_PORT: 用于连接数据库的端口。可选,默认为3306
  • DB_USER: 数据库的用户名
  • DB_PASS: 数据库的密码
  • DB_NAMES: 要恢复的数据库名称,用空格分隔。如果SINGLE_DATABASE=true,则必需。
  • SINGLE_DATABASE: 如果设置为true,则DB_NAMES是必需的,且必须只包含一个数据库名称。Mysql命令将使用--database=$DB_NAMES标志运行。这避免了需要USE <database>;语句,这在从使用SINGLE_DATABASE设置为true保存的文件恢复时很有用。
  • DB_RESTORE_TARGET: 实际恢复文件的路径,应该是压缩的转储文件。目标可以是应该挂载的绝对路径,smb或S3 URL,类似于目标。
  • DB_DUMP_DEBUG: 如果为true,在恢复时向容器日志输出大量输出。
  • 要使用S3驱动程序,需要定义AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION

示例:

  1. 从本地文件恢复: docker run -e DB_SERVER=gotodb.example.com -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=/backup/db_backup_201509271627.gz -v /local/path:/backup databack/mysql-backup restore
  2. 使用ssl从本地文件恢复: docker run -e DB_SERVER=gotodb.example.com -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=/backup/db_backup_201509271627.gz -e RESTORE_OPTS="--ssl-cert /certs/client-cert.pem --ssl-key /certs/client-key.pem" -v /local/path:/backup -v /local/certs:/certs databack/mysql-backup restore
  3. 从SMB文件恢复: docker run -e DB_SERVER=gotodb.example.com -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=smb://smbserver/share1/backup/db_backup_201509271627.gz databack/mysql-backup restore
  4. 从S3文件恢复: docker run -e DB_SERVER=gotodb.example.com -e AWS_ACCESS_KEY_ID=awskeyid -e AWS_SECRET_ACCESS_KEY=secret -e AWS_REGION=eu-central-1 -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=s3://bucket/path/db_backup_201509271627.gz databack/mysql-backup restore

恢复特定数据库

如果您的数据库中有多个模式,您可以选择只恢复其中的一些。

要做到这一点,您必须使用DB_DUMP_BY_SCHEMA=true转储数据库,然后使用DB_NAMES指定要恢复的模式。

执行此操作时,模式将以其原始名称恢复。要使用其他名称恢复,您必须在转储和恢复时都使用SINGLE_DATABASE=true,并且一次只能恢复一个模式。

示例:

  1. 转储多模式数据库并仅恢复其中一些:
    • docker run -e DB_SERVER=gotodb.example.com -e DB_USER=user123 -e DB_PASS=pass123 -e DB_DUMP_BY_SCHEMA=true -v /local/path:/backup databack/mysql-backup dump
    • docker run -e DB_SERVER=gotodb.example.com -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=/backup/db_backup_201509271627.gz -e DB_NAMES="database1 database3" -v /local/path:/backup databack/mysql-backup restore
  2. 以不同名称转储和恢复模式:
    • docker run -e DB_SERVER=gotodb.example.com -e DB_USER=user123 -e DB_PASS=pass123 -e SINGLE_DATABASE=true -e DB_NAMES=database1 -v /local/path:/backup databack/mysql-backup dump
    • docker run -e DB_SERVER=gotodb.example.com -e DB_USER=user123 -e DB_PASS=pass123 -e DB_RESTORE_TARGET=/backup/db_backup_201509271627.gz -e SINGLE_DATABASE=true DB_NAMES=newdatabase1 -v /local/path:/backup databack/mysql-backup restore

有关执行恢复的更详细说明,请参阅restore

有关所有配置选项的详细列表,请参阅configuration

许可证

根据MIT许可证发布。 版权所有 Avi Deitcher https://github.com/deitch

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多