mongodb - mongodump 和 mongorestore 之后,mongodb 丢弃的集合不断返回
问题描述
我刚刚创建了一个数据集,但是一个集合“项目”仍然潜伏着,我正在使用命令db.items.drop()
(在执行到我的 docker 容器后)摆脱它,这似乎成功地删除了它。但是当我运行以下 2 个脚本时(删除集合后):
保存脚本:
#!/usr/bin/env bash
MONGO_DB_NAME="test-1"
DATA_NAME="test-data"
docker exec ${MONGO_DB_NAME} mongodump --quiet --out /tmp/${DATA_NAME}
mkdir -p ./backup
docker cp ${MONGO_DB_NAME}:/tmp/${DATA_NAME} ./backup/${DATA_NAME}
docker exec ${MONGO_DB_NAME} rm -rf /tmp/${DATA_NAME}
恢复脚本:
#!/usr/bin/env bash
MONGO_DB_NAME="test-1"
DB_NAME="docker-node-mongo"
DATA_NAME="test-data"
docker exec -it $(docker ps -aqf "name=${MONGO_DB_NAME}") mongo ${DB_NAME} --eval "db.dropDatabase();"
docker cp ./backup/$DATA_NAME $(docker ps -aqf "name=${MONGO_DB_NAME}"):/tmp
docker exec -it $(docker ps -aqf "name=${MONGO_DB_NAME}") mongorestore --drop /tmp/${DATA_NAME}
项目集合马上回来。有人知道为什么吗?我希望它永远消失。
编辑:当我从集合中删除单个项目并运行上述脚本时,它们不会回来。但是当我放弃整个收藏时,收藏会不断回来(里面什么都没有)。
解决方案
mongodump 命令不会删除--out
路径中已存在的文件。正在备份的集合文件将被覆盖,但不再存在的集合文件不会被触及,留下“项目”文件,以便在下次运行 mongorestore 时恢复。
为确保不会发生这种情况,请移开或删除现有的备份目录,并在运行 mongodump 之前创建一个新的空目录。
推荐阅读
- machine-learning - CNN 在我的 Keras 数据集上效率不高
- python - 使用 matplotlib 在一个子图中绘制来自 pandas DataFrame 的两个直方图
- mysql - mysql 数据库导出不适用于 /dev/null 2>&1
- python - 在 MATLAB 和 Scipy.optimize 中实现的 fmin_l_bfgs_b 的差异
- mongodb - Grails-Mongo 检查包含在域的列表条件查询中
- java - Google+ Domains API 将多张照片附加到 Activity
- python - Python:如何处理带有日期的 .CSV?
- mysql - 为 WordPress 恢复 SQL 数据库
- c++ - C ++将4个字节添加到指针地址
- git - Git fetch 无法解决 git checkout 上的 pathspec 错误 -- *