
cycloid/mysql-dumpmysql-dump 是一个基于 talset/docker-mysql-backup-s3 项目构建的Docker镜像,主要用于MySQL数据库的定时备份与恢复。该镜像通过awscli或Scaleway CLI工具,将MySQL数据库备份文件(经gzip压缩)存储至AWS S3或Scaleway对象存储,并支持在Docker或Kubernetes环境中运行。
mysqldump并使用gzip压缩备份文件容器启动后,按以下流程执行备份操作:
BACKUP_TIME环境变量配置的cron表达式定时触发备份mysqldump命令导出指定MySQL数据库数据FILENAME配置生成进入运行中的容器,执行以下命令手动触发备份:
bash./backup
进入运行中的容器,执行以下命令从对象存储恢复指定备份文件(需指定备份文件在存储桶中的路径):
bash./restore path/inside-bucket/example.sql.gz
| 环境变量名称 | 描述 |
|---|---|
MYSQL_HOST | MySQL数据库主机地址,默认值为localhost,K8s环境示例:$(MYSQL_SERVICE_HOST) |
MYSQL_TCP_PORT | MySQL数据库端口,默认值为3306,K8s环境示例:$(MYSQL_SERVICE_PORT) |
MYSQL_USER | 连接MySQL的用户名 |
MYSQL_PWD | 连接MySQL的密码 |
MYSQL_DATABASE | 需备份的数据库名称 |
FILENAME | 备份文件名称格式,默认值为backup_%Y-%m-%d_%H-%M-%S,示例输出:backup_2015-08-03_17-58-22 |
BACKUP_DIR | 容器内备份文件临时存储目录,必要时可通过卷挂载该目录 |
BACKUP_TIME | 定时备份的cron表达式,默认值为0 5 * * *(每日凌晨5点) |
| AWS存储配置 | |
AWS_ACCESS_KEY_ID | AWS访问密钥ID(用于访问S3存储桶) |
AWS_SECRET_ACCESS_KEY | AWS密钥 |
AWS_S3_BUCKET | 存储MySQL备份的AWS S3存储桶名称 |
AWS_DEFAULT_REGION | S3存储桶所在的AWS区域 |
| Scaleway存储配置 | |
SCW_ACCESS_KEY | Scaleway访问密钥(用于访问对象存储) |
SCW_SECRET_KEY | Scaleway密钥 |
SCW_DEFAULT_ORGANIZATION_ID | Scaleway默认组织ID |
SCW_DEFAULT_REGION | Scaleway对象存储所在区域 |
bashdocker run -d \ --name mysql-dump \ -e MYSQL_HOST=mysql-service \ -e MYSQL_TCP_PORT=3306 \ -e MYSQL_USER=backupuser \ -e MYSQL_PWD=backuppassword \ -e MYSQL_DATABASE=targetdb \ -e BACKUP_TIME="0 3 * * *" \ # 每日凌晨3点执行备份 -e FILENAME="mysql_backup_%Y-%m-%d" \ -e AWS_ACCESS_KEY_ID=AKIAEXAMPLE \ -e AWS_SECRET_ACCESS_KEY=secretkeyexample \ -e AWS_S3_BUCKET=my-backup-bucket \ -e AWS_DEFAULT_REGION=us-west-2 \ cycloid/mysql-dump
yamlversion: '3' services: mysql-dump: image: cycloid/mysql-dump container_name: mysql-dump environment: - MYSQL_HOST=mysql # 假设与MySQL服务在同一网络,服务名为mysql - MYSQL_TCP_PORT=3306 - MYSQL_USER=root - MYSQL_PWD=rootpassword - MYSQL_DATABASE=appdb - BACKUP_TIME="*/30 * * * *" # 每30分钟执行一次备份 - BACKUP_DIR=/backup # 可挂载卷持久化临时备份文件 - FILENAME="appdb_backup_%Y%m%d_%H%M%S" - SCW_ACCESS_KEY=SCWEXAMPLEKEY - SCW_SECRET_KEY=scwsecretkeyexample - SCW_DEFAULT_ORGANIZATION_ID=org-xxxxxx - SCW_DEFAULT_REGION=fr-par volumes: - ./backup:/backup # 挂载本地目录作为临时备份目录 restart: unless-stopped
如需自定义构建镜像,执行以下命令:
bash# 构建镜像 sudo docker build -t cycloid/mysql-dump . # 推送镜像至仓库(需先登录镜像仓库) sudo docker push cycloid/mysql-dump
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务