Docker备份和恢复MongoDB无法恢复任何数据
我有工作命令备份和恢复我的mongodb泊坞窗容器的docker容器,我的docker容器的名称是tsl.api.example.db.container
好的,我们开始吧:我确认在一个名为example
的MongoDb集合中有3条logging。
我添加一个test.txt
文件tsl.api.example.db.container
的卷/数据/数据库,以帮助certificate我正在归档和正确恢复:
docker exec -it tsl.api.example.db.container bash cd /data/db touch text.txt
我的备份命令是
docker run –rm –volumes – from tsl.api.example.db.container -v / backup / volumes:/ backup tsl.devops.basic.image tar cvf /backup/backup.tar -C / data / db。
path/data/db
是正确的 MongoDbpath,是我的容器的音量。
我validationbackup.tar存在于localhost上的/ backup / volumes中:
我现在closures了tsl.api.example.db容器:
docker rm -fv tsl.api.example.db container
然后删除它的悬挂量:
docker volume prune
前两个步骤的屏幕截图:
然后我开始一个名为tsl.api.example.db.container.2
的新容器,它使用tsl.api.example.db.container.2
使用的相同的图像,它运行正常,我查询mongodb和example
集合没有logging。
我用命令将volume backup.tar恢复到新的容器
docker run –rm –volumes-from tsl.api.example.db.container.2 -v / backup / volumes:/ backup tsl.devops.basic.image bash -c“cd / data / db && tar -xvf /backup/backup.tar”
backup.tar归档文件被成功解压缩并复制到tsl.api.example.db.container.2
的volume / data / db中,我可以看到我的text.txt文件,以帮助certificate我已经正确地归档并解压到新的容器卷。
然而,我的示例集合仍然有0个logging,我期待在我的第一个容器中存在的3个logging,当我archived / data / db
所以我尝试停止并启动我的新的MongoDB容器,看看是否会刷新我的集合:
docker stop tsl.api.example.db.container.2 docker start tsl.api.example.db.container.2
当然,容器不会启动,这里是最后的日志条目:
有关在尝试还原MongoDB Docker容器卷时可能排除哪些文件的build议? 我应该排除又名不备份mongod.lock当我backup.tar? 还有其他build议吗?