Project Icon

mysql-backup

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

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

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

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号