我正在运行一个 mongodb(2.0.4) 副本集,它有一个主服务器和两个从服务器,其中一个是用于备份的隐藏从服务器。我正在使用http://docs.mongodb.org/manual/core/replica-set-architecture-three-members/
当我跑步时mongodump --oplog -h rsuat/10.0.3.163 --out /tmp/lala
我得到:
Fri Dec 13 09:05:53 starting new replica set monitor for replica set rsuat with seed of 10.0.3.163
Fri Dec 13 09:05:53 successfully connected to seed 10.0.3.163 for replica set rsuat
Fri Dec 13 09:05:53 changing hosts to { 0: "10.0.2.234:27017", 1: "10.0.4.96:27017" } from rsuat/
Fri Dec 13 09:05:53 trying to add new host 10.0.2.234:27017 to replica set rsuat
Fri Dec 13 09:05:53 successfully connected to new host 10.0.2.234:27017 in replica set rsuat
Fri Dec 13 09:05:53 trying to add new host 10.0.4.96:27017 to replica set rsuat
Fri Dec 13 09:05:53 successfully connected to new host 10.0.4.96:27017 in replica set rsuat
Fri Dec 13 09:05:53 replica set monitor for replica set rsuat started, address is rsuat/10.0.2.234:27017,10.0.4.96:27017
Fri Dec 13 09:05:53 [ReplicaSetMonitorWatcher] starting
connected to: rsuat/10.0.3.163
all dbs
DATABASE: connect_log,mongodb: to /tmp/lala/connect_log,mongodb:
connect_log,mongodb:.log to /tmp/lala/connect_log,mongodb:/log.bson
131600/142621 92%
142621 objects
connect_log,mongodb:.system.indexes to /tmp/lala/connect_log,mongodb:/system.indexes.bson
1 objects
Segmentation fault (core dumped)
无需 oplog 标志即可运行。有人知道哪里出了问题吗?
编辑:即使我不使用 oplog 标志,似乎也会发生分段错误,因此错误是在进行完整转储时发生的。
EDIT2:这是来自 syslog 的一行,由 segault 引起,如果有帮助的话:
ip-10-0-3-163 kernel: [23126212.267385] mongodump[26858]: segfault at 0 ip 00007f234ca776c4 sp 00007fff2b9d5f00 error 4 in libc-2.15.so[7f234ca09000+1b5000]
答案1
应该注意的是,使用--oplog
并不构成“完整转储”,该标志会转储出在oplog
转储开始和转储结束之间对 进行的任何操作。也就是说,它将为您提供 的一部分,oplog
以便您的转储在恢复时(使用--oplogReplay
)将表示转储结束时的数据。
但是,它不会转储 oplog 本身,因此如果您在转储期间没有插入/更新,则不需要它。事实上,我认为存在一些空集合错误,因此mongodump
如果在转储开始和结束之间 oplog 中没有操作,那么这可能是您的问题。
另一种可能的解决方法是 - 您是否尝试过针对 2.0.4 实例使用较新版本的工具(2.4.x 等)。目前,2.0.4 版本已经相当老旧了,之后还有几个 2.0.x 版本,更不用说还有 2 个主要版本,另一个版本即将发布。您不必拥有 2.4 版本的服务器即可使用它的工具,这可能会让您避开一些较旧的mongodump
错误。