我有工作命令来备份和恢复我的mongodb docker容器的docker卷,我的docker容器的名称是tsl.api.example.db.container
好的,我们走了:
我验证我在名为example
的MongoDb集合中有3条记录。
我添加test.txt
文件tsl.api.example.db.container
的卷/数据/数据库,以帮助证明我正在归档并正确恢复:
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。
路径/data/db
is correct MongoDb路径,是我容器的容量。
我验证了localhost上/ backup / volumes中的backup.tar是否存在:
我现在关闭了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
使用的相同图像,运行正常,我查询mongodb并且example
集合没有记录。< / p>
我使用命令
将卷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&amp; ;&amp; tar -xvf /backup/backup.tar“
backup.tar存档已成功解压缩并复制到tsl.api.example.db.container.2
的卷/ data / db,我可以看到我的text.txt,以帮助证明我已正确存档并解压缩到新容器的卷中。< / p>
然而,我的示例集合仍然有0条记录,我预计在我存档/ data / db
所以我尝试停止并启动我的新MongoDB容器,看看是否会刷新我的集合:docker stop tsl.api.example.db.container.2
docker start tsl.api.example.db.container.2
当然,容器不会重新启动,这是最后一个日志条目:
有关在尝试恢复MongoDB Docker容器卷时可能排除哪些文件的任何建议?当我backup.tar时,我应该排除aka not archive mongod.lock吗?还有其他建议吗?