
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
mysqldump-to-s3是一个Docker容器,用于将MySQL数据备份直接流式传输到Amazon S3。它通过管道将mysqldump的输出传递给aws-cli,避免本地存储限制,特别设计用于ECS Fargate环境中的定时CRON任务,所有配置通过IAM角色和环境变量传递。备份文件以gzip压缩的SQL格式存储,容器为单进程执行,完成后自动终止。
mysqldump和aws-cli,避免存储限制shdocker pull jdrydn/mysqldump-to-s3:latest
shdocker run \ -e S3_BUCKET=project-backups \ -e MYSQL_HOST=project.3927e3a82872.us-east-1.rds.amazonaws.com \ -e MYSQL_USER=root \ -e MYSQL_PASSWORD=password \ -e MYSQL_DATABASE=PROJECT \ jdrydn/mysqldump-to-s3:latest
运行后输出示例:
ACTION: Creating individual dump of PROJECT from project.3927e3a82872.us-east-1.rds.amazonaws.com to s3://project-backups/20190810T050709Z.PROJECT.sql.gz SUCCESS!
通过环境变量配置mysqldump和aws s3:
| 变量 | 默认值 | 描述 |
|---|---|---|
S3_BUCKET | 无 | 必填,指定保存备份的目标S3桶 |
S3_PREFIX | 无 | 可选,指定S3文件的前缀路径 |
S3_FILENAME | %Y%m%dT%H%M%SZ | 可选,S3文件名前缀,使用date命令格式 |
MYSQL_HOST | localhost | MySQL主机地址 |
MYSQL_USER | mysql | MySQL用户名 |
MYSQL_PASSWORD | 无 | 可选,MySQL密码 |
MYSQL_DATABASE | 无 | 可选,指定要备份的MySQL数据库,不指定则备份所有数据库 |
MYSQLDUMP_OPTIONS | --single-transaction --compress --compact | mysqldump命令的选项 |
AWS CLI配置
如需配置aws-cli,请参考https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html%E3%80%82%E5%9C%A8ECS%E7%8E%AF%E5%A2%83%E4%B8%AD%EF%BC%8C%E5%8F%AF%E9%80%9A%E8%BF%87%E4%B8%BA%E4%BB%BB%E5%8A%A1%E5%AE%9A%E4%B9%89%E9%99%84%E5%8A%A0IAM%E8%A7%92%E8%89%B2%E6%8E%88%E4%BA%88S3%E5%86%99%E5%85%A5%E6%9D%83%E9%99%90%EF%BC%8C%E4%B9%9F%E5%8F%AF%E9%80%9A%E8%BF%87%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%60AWS_ACCESS_KEY_ID%60%E5%92%8C%60AWS_SECRET_ACCESS_KEY%60%E6%8F%90%E4%BE%9B%E5%87%AD%E8%AF%81%E3%80%82
备份所有数据库
如果未指定MYSQL_DATABASE,将备份主机上的所有数据库。文件名将格式化为$S3_PREFIX$S3_FILENAME.$DB_NAME.sql.gz。
sh# 使用环境变量文件 docker run --rm --env-file ./backup.env jdrydn/mysqldump-to-s3:latest # 直接指定环境变量 docker run --rm \ -e MYSQL_HOST=project.3927e3a82872.us-east-1.rds.amazonaws.com \ -e MYSQL_USER=root -e MYSQL_PASSWORD=password -e MYSQL_DATABASE=PROJECT \ -e S3_BUCKET=project-backups \ jdrydn/mysqldump-to-s3:latest
前往ECS控制台,https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html%EF%BC%9A
S3::putObject权限的任务角色(Task Role),以允许写入目标S3桶jdrydn/mysqldump-to-s3:latest(可在https://hub.docker.com/r/jdrydn/mysqldump-to-s3/tags%E6%9F%A5%E7%9C%8B%E6%89%80%E6%9C%89%E7%89%88%E6%9C%AC%EF%BC%89在集群的https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduling_tasks.html%E4%B8%AD%E5%88%9B%E5%BB%BA%E6%96%B0%E4%BB%BB%E5%8A%A1%EF%BC%9A
手动启动定时任务
shaws ecs run-task \ --cluster default \ --task-definition database-backup \ --network-configuration 'awsvpcConfiguration={subnets=[A,B,C],securityGroups=[D],assignPublicIp=ENABLED}' \ --launch-type FARGATE
A,B,C(子网ID)和D(安全组ID)替换为实际值aws s3 cp下载备份文件到本地gunzip解压缩文件sh# 对于大型备份,建议分步执行 aws s3 cp s3://project-backups/20190810T050709Z.PROJECT.sql.gz - | gunzip | mysql PROJECT # ☕️ 此时可以休息一下,等待恢复完成
sh# 构建开发镜像 docker build -t jdrydn/mysqldump-to-s3:dev . # 创建环境变量文件 cat << EOF >> backup.env MYSQL_HOST=localhost MYSQL_USER=user MYSQL_PASSWORD=password S3_BUCKET=test-backups EOF # 运行开发镜像 docker run --rm -it --network=host \ -v ~/.aws/credentials:/root/.aws/credentials:ro \ --env-file ./local.env \ jdrydn/mysqldump-to-s3:dev
本项目大致基于https://hub.docker.com/r/schickling/mysql-backup-s3%E4%BF%AE%E6%94%B9%EF%BC%8C%E4%B8%BB%E8%A6%81%E8%B0%83%E6%95%B4%E4%B8%BA%E4%BD%BF%E7%94%A8%E7%AE%A1%E9%81%93%E4%BC%A0%E8%BE%93%E4%BB%A5%E9%81%BF%E5%85%8DFargate%E7%9A%84%E5%AD%98%E5%82%A8%E9%99%90%E5%88%B6%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务