从过去1周起,我正在尝试为我的一个节点mongodb(3.4.2版本)设置副本集,但面临多个问题。我的主节点目前有大约650 GB的数据,每天它增长90 gb。我第一次添加带有空数据目录的新辅助节点,差不多一天后,它在oplog问题上出现了太多的延迟。下次我尝试手动复制数据。重新启动辅助后复制它开始给我一个我无法从主同步的错误(没有连接问题,我能够ping)。我再次尝试手动复制程序,但这次失败,出现以下错误。因为有线老虎问题是特定的收集文件。我再次复制了该文件并重试但是再次失败并出现同样的问题。有人可以帮我设置中学。随着数据的增长,每天都变得越来越困难,我无法长时间保持主要状态(在手动复制期间,我会停止主要的所有写入)。
2017-03-02T16:08:16.315 + 0000 E STORAGE [initandlisten] WiredTiger错误(-31802)[1488470896:315136] [17051:0x7ffdbd3d7dc0],文件:mcse.45trace / collection-16-7756455024301269277.wt, WT_SESSION.open_cursor:/app/data/mcse.45trace/collection-16-7756455024301269277.wt:handle-read:pread:无法读取偏移量为86474874880的4096字节:WT_ERROR:非特定的WiredTiger错误
2017-03-02T16:08:16.315 + 0000 I - [initandlisten]不变失败:ret导致状态UnknownError:-31802:WT_ERROR:src / mongo / db / storage / wiredtiger / wiredtiger_session_cache中的非特定WiredTiger错误.cpp 95
答案 0 :(得分:0)
如果您可以解决复制延迟的第一个问题,那么您可能会运行一切正常。看看Troubleshooting Replica Sets guide,它有一些有用的建议:
复制延迟的可能原因包括:
网络延迟
检查设备成员之间的网络路由,确保没有丢包或网络路由问题 使用包括
ping
在内的工具来测试集成员和traceroute
之间的延迟,以暴露数据包网络端点的路由。磁盘吞吐量
如果辅助文件系统和磁盘设备无法像主服务器一样快速地将数据刷新到磁盘,则辅助服务器将难以保持状态。磁盘相关问题在多租户系统(包括虚拟化实例)上非常普遍,如果系统通过IP网络访问磁盘设备,则可能是暂时的(如亚马逊EBS系统的情况)。
使用系统级工具评估磁盘状态,包括iostat
或vmstat
。<强>并发强>
在某些情况下,对主服务器的长时间运行操作可能会阻止对辅助服务器的复制。为获得最佳结果,请将write concern配置为要求确认复制到辅助节点。如果复制无法跟上写入负载,这可以防止写入操作返回 使用database profiler查看是否存在与滞后事件相对应的慢查询或长时间运行操作。
适当的写作关注
如果您正在执行需要大量写入主数据的大型数据提取或批量加载操作,尤其是使用
unacknowledged write concern
,则辅助数据库将无法快速读取oplog以跟上变化。
为防止这种情况发生,请在每隔100,1,000或其他间隔后请求write acknowledgement write concern,以便为辅助人员提供赶上主要人员的机会。
有关更多信息,请参阅:
•Write Concern
•Replica Set Write Concern
•Oplog Size
答案 1 :(得分:0)
WiredTiger错误(-31802)文件:xxx.wt
根据SERVER-31076错误报告,这可能与损坏的.wt
个文件(例如WiredTiger.wt
/ WiredTiger.turtle
)有关。
尝试跑步:
mongod --repair --dbpath /path/to/data/db
还要确保所有data/db
个文件都具有正确的读写权限。