用于将MySQL数据库备份到任何位置的工具,支持定时备份、恢复操作及旧备份清理。
收藏数: 127
下载次数: 33259474
类型:

databack/mysql-backup将MySQL数据库备份到任何位置!
详情请参见官方主页和文档
mysql-backup是一种简单的MySQL数据库备份、恢复及管理工具。
其主要特性包括:
贡献者列表请参见CONTRIBUTORS.md。
当前为最新版本,基于2023年底完成的Golang代码库完全重构,对应1.0.0版本发布。
支持可通过databack Slack频道获取;注册此处。我们接受此处的问题报告及Slack上的一般支持问题。
如需商业支持,请通过上述Slack联系我们。
mysql-backupmysql-backup提供独立二进制文件和容器镜像两种形式。
运行备份时,需以容器或二进制形式启动mysql-backup并指定正确参数。
例如:
bashdocker run -d --restart=always -e DB_DUMP_FREQUENCY=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,配置文件内容如下:
yamlserver: my-db-address dump: frequency: 60 begin: 2330 target: /local/file/path
上述配置将从my-db-address容器访问的数据库中,每60分钟执行一次备份,首次备份从当天23:30开始。
指定用户密码的示例:
bashdocker run -d --restart=always -e DB_USER=user123 -e DB_PASS=pass123 -e DB_DUMP_FREQUENCY=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。
执行恢复操作时,流程相反,需使用restore命令并指定恢复目标。仍需连接数据库,但需替换为恢复相关参数。
恢复现有数据库时,需设置以下环境变量(建议使用--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时,恢复过程将输出详细日志。AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY和AWS_DEFAULT_REGION。恢复示例:
bashdocker 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
bashdocker 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
bashdocker 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
bashdocker 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
多库备份文件可选择恢复部分数据库,或重命名恢复单个数据库(需备份和恢复时均设置SINGLE_DATABASE=true)。
示例:
bashdocker run -e DB_SERVER=gotodb.example.com -e DB_USER=user123 -e DB_PASS=pass123 -v /local/path:/backup databack/mysql-backup dump
bashdocker 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
bashdocker 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
bashdocker 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 -e DB_NAMES=newdatabase1 -v /local/path:/backup databack/mysql-backup restore
恢复详细说明参见restore,所有配置选项参见configuration。
MIT许可证。版权所有Avi Deitcher [***]
以下是 databack/mysql-backup 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务