0

我正在使用 MongoDB 原则将 ElasticSearch 与我的 symfony2 应用程序集成。
在本教程中它说我需要将我的独立实例转换为复制集
基本上概念如下:应用程序询问 MongoDB 主服务器以获取数据,搜索功能需要询问辅助服务器进行搜索。我的复制集配置如下:

{
    "_id" : "rs0",
    "version" : 1,
    "members" : [
            {
                    "_id" : 0,
                    "host" : "localhost:27017"
            }
    ]

我认为这是主服务器,我的问题是我需要创建另一个服务器吗?如果是,我该如何创建第二个复制服务器?
坦克很多!

4

1 回答 1

2

根据您链接的教程,为了使 ElasticSearch River 工作,您需要将 MongoDB 配置为副本集。在副本集配置中,每个节点都有一个操作日志(oplog),它是已应用的所有操作(插入、更新、删除)的日志。可以使用可尾光标读取 oplog ,以启用 ElasticSearch River 或 MMS 备份等功能。

我的问题是我需要创建另一个服务器吗?

从技术上讲,副本集可以配置为单个节点(您已经这样做了)。推荐的最佳实践是拥有一个至少包含三个节点(一个主节点、一个辅助节点和一个仲裁器或一个主节点和两个辅助节点)的副本集,这将提供高可用性和数据冗余的额外好处。更多信息请参见 MongoDB 手册中的副本集介绍

搜索功能需要询问从服务器进行搜索。

默认情况下,MongoDB 驱动程序将所有写入和读取请求定向到为读取数据提供强一致性的主数据库。如果您从辅助设备读取,则数据最终是一致的。这意味着如果从主节点到辅助节点有任何复制滞后,您可能会从辅助节点读取较旧的数据。

通常不建议在辅助节点上执行查询。在您的场景中,如果两台机器都满负荷使用,并且您遇到故障或需要关闭机器,那么您将没有足够的资源来为应用程序提供服务并执行搜索。您应该计划让您的主节点有足够的资源来执行这两个功能。

至于将独立服务器迁移到副本集,您可以按照教程中描述的步骤操作:将独立服务器转换为副本集

于 2014-02-11T00:38:39.210 回答