根据标题,我有一个具有 1 个主、1 个辅助和 1 个仲裁器的副本集,我在主数据库中恢复了一个大数据库,它比辅助数据库快得多。现在辅助服务器滞后了很多(小时),并且从几个小时开始就处于恢复状态。我能做点什么吗?可以知道恢复进度吗?
问问题
3449 次
1 回答
1
我先回答你的第二个问题。“我能知道恢复进度吗?” 是的,您可以连接到副本集主副本并执行rs.status()
命令以查看 RS 中每个成员的状态。请参阅stateStr
将表示状态代码的友好名称的输出字段。这表明了复苏的进展。
但是,在您的标题中,您问是否可以知道它何时结束。这要困难得多。没有办法“确切地”知道辅助节点何时完成与另一个成员的同步。
关于“我可以做点什么吗?”;是的,但没有什么能准确回答您想知道复制何时结束的愿望。请参阅rs.status()
输出并专门检查该optime
字段并将其与次要成员和它正在同步的成员进行比较,在您的情况下是主要成员。这只会提供关于两台服务器相距多远的“一些”洞察力。但是,仅此一项并不十分准确,其他因素可能会影响赶上的实际时间。它不会告诉您它将在特定时间完成。
还; 如果在您的用例中您的服务器质量不高,我也会采纳 Markus Mahlberg 的建议。这和许多其他因素可能会导致复制延迟,包括磁盘 io 问题、网络延迟(包括跨数据中心因素)。这里没有明确的答案。
于 2015-04-27T13:40:14.233 回答