首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果没有初始同步,则无法配置MongoDB复制

问如果没有初始同步,则无法配置MongoDB复制
EN

Database Administration用户
提问于 2017-02-14 19:54:36
回答 2查看 2.6K关注 0票数 2

我在我的生产服务器上有一个大型的MongoDB数据库,我想将它设置为一个副本集。我理解,如果在两个服务器上启用replica选项,它将自动从零开始同步数据。但是我不想从一开始就同步;相反,我希望像MySQL复制一样配置它。

我想遵循以下程序:

  • 从主站取弃物
  • 将其恢复到次要位置
  • 在配置文件中,在两个服务器上启用副本集
  • 重新启动MongoDB。
  • 转到主服务器并添加辅助节点。

这是可能的吗?还是有其他替代的解决方案?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2017-02-14 20:54:46

为什么两组重吊?让MongoDB来做吧。

在本例中,假设SECONDARY的IP是具有主机名myslave的10.30.50.70

步骤01 :在主

上启用副本集

在主服务器上对/etc/mongodb.conf进行以下更改

  • 在/etc/mongodb.conf 中启用授权
    • 安全YAML标记下的authorization: enabled (MongoDB 2.6+)
    • auth=true (如果您使用的是MongoDB 2.4)

  • 启用复制(假设您将复制集命名为myreplica)
    • 将replSetName: myreplica置于复制YAML标记下(MongoDB 2.6+)
    • Put replSet = myreplica (MongoDB 2.4)

步骤02 :在PRIMARY

上重新启动MongoDB

代码语言:javascript
复制
service mongod restart

步骤03 :在PRIMARY

上启动副本集

代码语言:javascript
复制
rs.initiate();

注意:此时您有一个单节点副本集

。

步骤04 :在辅助

上执行步骤01和02

注意:此时,SECONDARY已启用复制集,但未复制

。

步骤05 :现在,将SECONDARY添加到PRIMARY

转到主站并运行

代码语言:javascript
复制
rs.add("10.30.50.70:27017")

或

代码语言:javascript
复制
rs.add("myslave:27017")

步骤06 :检查副本集

的状态

重复运行这个

代码语言:javascript
复制
rs.status()

如果这个命令被冻结了,别担心。它重建了所有的索引。

您可以在SECONDARY上打开另一个ssh会话,在mongodb.log文件上运行tail -f并查看索引重建进度。

为什么要这样做?

MongoDB实际上将在一个操作中启动复制、复制数据和重建索引。如图所示,在构建初始副本集时,此过程绝不是自动的。这样做不太容易出错。

票数 1
EN

Database Administration用户

发布于 2017-02-15 10:14:47

谢谢罗兰多。

幸运的是,我在Google上发了同样的帖子,MongoDB的人帮我解决了我的问题。我们不能直接转储、还原和配置复制。请按照以下步骤为大型数据库启用复制。

1.将MongoDB目录复制到辅助服务器。

2.启用主配置文件中的复制并重新启动主monogDB。

3.在主目录中运行rs.initiate()。

4.在辅助目录中停止MongoDB,将数据目录替换为主数据目录。

5.在配置文件中启用复制并启动mongod服务。

6.转到primary和rs.add(次要:端口)。

  1. 您可以看到辅助服务器正在重建索引和更新的数据。
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/164336

复制
相关文章

相似问题

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