首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mongodb中添加失败实例时如何停止collectionCloning

问在mongodb中添加失败实例时如何停止collectionCloning
EN

Stack Overflow用户
提问于 2019-03-16 04:51:35
回答 1查看 101关注 0票数 0

如何使用oplog重放停止克隆的收集,即使恢复的实例上的所有数据都已恢复。

复制场景我设置了一个3节点复制。负载是持续的负载,数据每天都在不断增加。而且我们每2个房间就有一个oplog备份。尽管oplog备份设置为每2小时一次,但我们仍有一些事务从oplog中滚出。这意味着当我们重放这些操作日志时,我们可能会遗漏一些记录。

场景。在复制场景中,我们有一个辅助节点没有响应,当我们将它重新加入到复制集中时,最小oplog时间戳超过了失败实例中的oplog,失败的实例试图赶上,但它进入了恢复模式。从正在恢复的实例上的日志消息。

代码语言:javascript
复制
2019-02-13T15:49:42.346-0500 I REPL     [replication-0] We are too stale to use primaryserver3:27012 as a sync source. Blacklisting this sync source because our last fetched timestamp: Timestamp(1550090168, 1) is before their earliest timestamp: Timestamp(1550090897, 28907) for 1min until: 2019-02-13T15:50:42.346-0500
2019-02-13T15:49:42.347-0500 I REPL     [replication-0] sync source candidate: primaryserver3:27012
2019-02-13T15:49:42.347-0500 I ASIO     [RS] Connecting to primaryserver3:27012
2019-02-13T15:49:42.348-0500 I REPL     [replication-0] We are too stale to use primaryserver3:27012 as a sync source. Blacklisting this sync source because our last fetched timestamp: Timestamp(1550090168, 1) is before their earliest timestamp: Timestamp(1550090897, 22809) for 1min until: 2019-02-13T15:50:42.348-0500
2019-02-13T15:49:42.348-0500 I REPL     [replication-0] could not find member to sync from

为了使这个实例与主实例相同,我们将这个“正在恢复的”实例作为一个“新的主实例”,并应用到当前插入之前所做的所有oplog备份。在应用操作日志之后,两个服务器上的记录计数匹配。现在,当我将正在恢复的实例(即"new PRIMARY")加入到复制集时,我会看到显示"initial sync“的日志,然后看到下面的日志

代码语言:javascript
复制
2019-03-01T12:11:58.327-0500 I REPL     [repl writer worker 4] CollectionCloner ns:datagen_it_test.test finished cloning with status: OK
2019-03-01T12:12:40.518-0500 I REPL     [repl writer worker 8] CollectionCloner ns:datagen_it_test.link finished cloning with status: OK

在那里集合再次被克隆。我的问题是,为什么它要再次克隆来获取数据。我们在“恢复”的实例记录中恢复了所有匹配的数据。如何阻止克隆的发生。

EN

回答 1

Stack Overflow用户

发布于 2019-03-16 05:23:20

根据MongoDB文档

当副本集成员的复制过程远远落后于主副本时,副本集成员将覆盖该成员尚未复制的oplog条目,此时副本集成员将变得“过时”。成员赶不上进度,变得“陈旧”。发生这种情况时,必须通过删除成员的数据并执行初始同步来完全重新同步成员。

本教程介绍重新同步过时成员和使用来自另一个成员的种子数据创建新成员,这两种方法都可用于恢复副本集成员。同步成员时,请选择系统有足够带宽移动大量数据的时间。将同步安排在使用率较低的时段或维护窗口期间。

MongoDB为执行初始同步提供了两个选项:

用一个空的数据目录重启MongoDB,让MongoDB正常的初始同步功能恢复数据。这是更简单的选项,但替换数据可能需要更长的时间。

请参阅自动同步成员。

使用副本集中另一个成员的最近数据目录的副本重新启动计算机。此过程可以更快地替换数据,但需要更多的手动步骤。

请参阅通过从其他成员复制数据文件进行同步。

中提供了逐步操作过程

Resync a Member of a Replica Set

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55190519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档