mpa*_*tan 3 mongodb mongorestore docker rancher mongodb-3.6
在当前设置中,有两个 Mongo Docker 容器,在主机 A 和 B 上运行,Mongo 版本为 3.4,并在副本集中运行。我想将它们升级到 3.6 并增加一个成员,以便容器可以在主机 A、B 和 C 上运行。容器有 8GB 内存限制并且没有分配交换(当前),并且在Rancher 中进行管理。所以我的计划是启动三个新容器,为它们初始化一个副本集,从 3.4 容器中进行转储,然后将其恢复为新的副本集 master。
转储很顺利,它的大小约为 16GB。当我尝试将其恢复到新的 3.6 master 时,恢复开始正常,但是在恢复了大约 5GB 的数据后,mongo 进程似乎被 OS/Rancher 杀死,而容器本身没有重新启动,MongoDB 进程只是崩溃并重新加载自己。如果我再次运行 mongorestore 到同一个数据库,它会说所有已经插入的条目的唯一键错误,然后从它停止的地方继续,只在 5GB 左右后再次执行相同的操作。所以看起来 mongorestore 将它恢复的所有条目加载到内存中。
所以我必须为此找到一些解决方案,并且:
正如另一个答案指出的那样,增加交换大小对我有用。此外,该--numParallelCollections选项控制集合的数量mongodump/mongorestore应该并行转储/恢复。默认值为 4,可能会消耗大量内存。
| 归档时间: |
|
| 查看次数: |
5898 次 |
| 最近记录: |