
fradelg/mysql-cron-backup该Docker镜像通过cron任务管理器定期运行mysqldump工具备份MySQL/MariaDB数据库。备份文件默认存储在容器内的/backup目录,可通过Docker卷挂载将备份文件存储到主机指定路径,实现数据持久化。
bashdocker container run -d \ --env MYSQL_USER=root \ --env MYSQL_PASS=my_password \ --link mysql \ --volume /path/to/my/backup/folder:/backup \ fradelg/mysql-cron-backup
以下示例展示如何与MariaDB容器配合使用,仅内部暴露3306端口,实现数据库备份功能:
yamlversion: "2" services: mariadb: image: mariadb container_name: my_mariadb expose: - 3306 volumes: - data:/var/lib/mysql # 若数据库无初始化 schema,恢复最新备份(如有) - ${VOLUME_PATH}/backup/latest.${DATABASE_NAME}.sql.gz:/docker-entrypoint-initdb.d/database.sql.gz environment: - MYSQL_ROOT_PASSWORD=${MARIADB_ROOT_PASSWORD} - MYSQL_DATABASE=${DATABASE_NAME} restart: unless-stopped mysql-cron-backup: image: fradelg/mysql-cron-backup depends_on: - mariadb volumes: - ${VOLUME_PATH}/backup:/backup environment: - MYSQL_HOST=my_mariadb - MYSQL_USER=root - MYSQL_PASS=${MARIADB_ROOT_PASSWORD} - MAX_BACKUPS=15 - INIT_BACKUP=0 # 每天UTC时间03:00执行备份 - CRON_TIME=0 3 * * * # 最高压缩级别 - GZIP_LEVEL=9 restart: unless-stopped volumes: data:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
MYSQL_HOST | MySQL数据库主机/IP | - |
MYSQL_PORT | MySQL数据库端口 | - |
MYSQL_USER | MySQL数据库用户名 | - |
MYSQL_PASS | MySQL数据库密码 | - |
MYSQL_DB | 需备份的数据库名 | --all-databases(备份所有数据库) |
MYSQLDUMP_OPTS | 传递给mysqldump的命令行参数 | - |
CRON_TIME | cron任务执行间隔(UTC时区) | 0 3 * * sun(每周日03:00) |
MAX_BACKUPS | 保留备份文件的最大数量 | 无限制 |
INIT_BACKUP | 容器启动时是否立即创建备份 | 未设置(不执行) |
INIT_RESTORE_LATEST | 容器启动时是否恢复最新备份 | 未设置(不执行) |
TIMEOUT | 数据库就绪等待时间(首次备份) | 10s |
GZIP_LEVEL | gzip压缩级别(1-9) | 6 |
TZ | 容器时区 | UTC |
在运行的容器内列出所有备份文件:
bashdocker container exec <容器名称或ID> ls /backup
恢复指定备份文件(替换<备份文件名>为实际备份文件名):
bashdocker container exec <容器名称或ID> /restore.sh /backup/<备份文件名>
例如,恢复201708060500.my_db.sql.gz备份:
bashdocker container exec backup /restore.sh /backup/201708060500.my_db.sql.gz


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务