带有自动备份和恢复功能的MongoDB 镜像(MongoDB with automatic backup and restore)
3.6K
本文档介绍如何使用 datamini/mongo-vault 运行 MongoDB 数据库进行自动备份和恢复。备份文件支持保存在Cloud Storage中,目前支持阿里云OSS。
优势:
该镜像基于 mongo:5.0.22。
运行一个可以自动备份的MongoDB实例
docker run -d \
-e ENABLE_MONGO_VAULT_BACKUP=true \
-e MONGO_VAULT_OSS_AK=LTAENx0nrenExlYsTspz2 \
-e MONGO_VAULT_OSS_SK=nFewnENWONDssofnwen1oX \
-e MONGO_VAULT_OSS_ENDPOINT=oss-cn-shenzhen-internal.aliyuncs.com \
datamini/mongo-vault
查看备份列表
进入MongoDB所在的容器执行命令mongo_vault_list_backup进行查看。
docker exec -it mongo_vault_instance mongo_vault_list_backup
使用最新的备份恢复出来一个新的MongoDB实例
docker run -d \
-e ENABLE_MONGO_VAULT_RESTORE=true \
-e MONGO_VAULT_OSS_AK=LTAENx0nrenExlYsTspz2 \
-e MONGO_VAULT_OSS_SK=nFewnENWONDssofnwen1oX \
-e MONGO_VAULT_OSS_ENDPOINT=oss-cn-shenzhen-internal.aliyuncs.com \
datamini/mongo-vault
将 db1 的最新备份恢复到一个正在运行的MongoDB中,并改名为 newdb1
docker exec -it mongo_vault_instance mongo_vault_restore --databases=db1:newdb1
这里,--databases 同环境变量 MONGO_VAULT_RESTORE_DATABASES,且优先级更高。
启动容器的Env参数列表如下:
| 参数名称 | 描述 | 默认 | 是否必需 |
|---|---|---|---|
MONGO_INITDB_ROOT_USERNAME | MongoDB的root用户的用户名。继承 mongo 镜像 | "" | 否 |
MONGO_INITDB_ROOT_PASSWORD | MongoDB的root用户的密码。 继承 mongo 镜像 | "" | 否 |
ENABLE_MONGO_VAULT_BACKUP | 是否启用自动备份功能。 true或false。 | false | 否 |
MONGO_VAULT_BACKUP_DATABASES | 需要备份的数据库列表,以,分隔。 | 备份所有数据库 | 否 |
MONGO_VAULT_BACKUP_SCHEDULE | 备份任务的Cron表达式。 | 0 3 * * * (每天3点) | 否 |
ENABLE_MONGO_VAULT_RESTORE | 是否以恢复模式启动数据库实例,运行数据库之后立刻开始恢复数据。 true或false。 | false | 否 |
MONGO_VAULT_RESTORE_DATABASES | 需要恢复的数据库列表,以,分隔;数据库的原名和新名用:分隔;如(db1:newdb1,db2:newdb2)。若未提供新名,则直接用原名恢复。默认恢复所有数据库。为避免数据被覆盖,MongoVault会跳过已经存在的DB,因此强烈建议在恢复时指定新的数据库名。 | 恢复所有数据库 | 否 |
MONGO_VAULT_OSS_AK | 阿里云OSS的AccessKeyId。 | "" | 如果需要备份或恢复,则必填 |
MONGO_VAULT_OSS_SK | 阿里云OSS的AccessKeySecret。 | "" | 如果需要备份或恢复,则必填 |
MONGO_VAULT_OSS_ENDPOINT | 阿里云OSS的Endpoint。 | "" | 如果需要备份或恢复,则必填 |
MONGO_VAULT_OSS_BUCKET | 阿里云OSS的Bucket名称。 | mongo_backups | 否 |
MONGO_VAULT_OSS_URI_PREFIX | OSS中备份文件的存储前缀。备份文件在OSS中的目录结构为:MONGO_VAULT_OSS_URI_PREFIX/2024-02/20240201033000/。 | backups_my_db01 | 否 |
TZ | 时区。 | Asia/Shanghai | 否 |
注意事项
MONGO_VAULT_BACKUP_DATABASES 和 MONGO_VAULT_BACKUP_SCHEDULE恢复出一个新的实例,还是将数据恢复到现有实例中的新的DB进入容器后,也可以手动执行下面三个命令:
mongo_vault_backup:手动备份mongo_vault_list_backup:查看备份列表mongo_vault_restore:手动恢复使用最新的备份恢复出来一个新的MongoDB实例,并开启自动备份
docker run -d \
--name mongodb_restored \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=1234 \
-e ENABLE_MONGO_VAULT_BACKUP=true \
-e MONGO_VAULT_BACKUP_DATABASES="db1,db2" \
-e MONGO_VAULT_BACKUP_SCHEDULE="0 3 * * *" \
-e ENABLE_MONGO_VAULT_RESTORE=true \
-e MONGO_VAULT_RESTORE_DATABASES="db1,db2" \
-e MONGO_VAULT_OSS_AK=LTAENx0nrenExlYsTspz2 \
-e MONGO_VAULT_OSS_SK=nFewnENWONDssofnwen1oX \
-e MONGO_VAULT_OSS_ENDPOINT=oss-cn-shenzhen-internal.aliyuncs.com \
-e MONGO_VAULT_OSS_BUCKET=mongo_backups \
-e MONGO_VAULT_OSS_URI_PREFIX=my_user_db_prod \
datamini/mongo-vault
或者使用如下的 docker-compose.yml 文件运行:
services:
mongodb_restored:
image: datamini/mongo-vault
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: 1234
ENABLE_MONGO_VAULT_BACKUP: "true"
MONGO_VAULT_BACKUP_DATABASES: db1,db2
MONGO_VAULT_BACKUP_SCHEDULE: "0 3 * * *"
ENABLE_MONGO_VAULT_RESTORE: "true"
MONGO_VAULT_RESTORE_DATABASES: db1,db2
MONGO_VAULT_OSS_AK: LTAENx0nrenExlYsTspz2
MONGO_VAULT_OSS_SK: nFewnENWONDssofnwen1oX
MONGO_VAULT_OSS_ENDPOINT: oss-cn-shenzhen-internal.aliyuncs.com
MONGO_VAULT_OSS_BUCKET: mongo_backups
MONGO_VAULT_OSS_URI_PREFIX: my_user_db_prod
Content type
Image
Digest
sha256:20b49a093…
Size
335 MB
Last updated
over 2 years ago
docker pull datamini/mongo-vault