赛捷软件论坛's Archiver

anne.yao 发表于 2026-9-20 16:52

[KB225924550092186功能解说] 如何将MongoDB设置到另一台副本(备份)服务器?

[b]* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。


如何将MongoDB设置到另一台副本(备份)服务器?[/b]


创建日期:2022-05-02 
最后修改日期:2022-05-02


[b]描述[/b]


MongoDB副本集的自动管理功能从以下Syracuse版本开始提供:


• PU9:从Syracuse 9.14起(发布于2019年3月25日)
• V11:从Syracuse 11.13起(发布于2018年12月14日)
• V12:从正式发布版开始,即V12 P15 / 2018 R9(发布于2018年12月14日,标记为2018 R9)


[b]解决方法[/b]


请查阅在线帮助。


几个关键注意事项:


• 建议MongoDB集群至少使用3个节点
• 建议将Syracuse和MongoDB部署在同一台机器上
• 建议为ElasticSearch使用不同的服务器集群,因为它非常消耗内存
• MongoDB集群提供内置的自动故障转移,无需在外部另行设置
• 副本集
   o在不同的物理机器上安装MongoDB
   o为集群开放相关端口
   o服务应使用 .conf文件
   o编辑mongodb.conf文件:添加一个名为[b]replication[/b]的段落和一个参数replSetName
    replication:
    replSetName: “ReplicaName”
• 配置副本集:
   o在命令提示符下,启动mongo工具。输入以下命令:
    rs.initiate() // initialize replicaset
    rs.add(my.second.node.com:port) // add second nodes to replicaset
    rs.add(my.third.node.com:port) // add third node to replicaset
• 检查副本集配置和状态:
    rs.conf() // returns replicaset configuration
    rs.status() // returns replicaset status
   将现有独立数据库转换为副本集时,步骤相同,只是命令必须在现有的初始服务器上运行。
• 只要所有Web服务器共享同一个MongoDB集群,Syracuse即可作为集群正常运行。
    o[b]方案1[/b]:每台Syracuse服务器都与MongoDB部署在同一台服务器上,且MongoDB也以集群方式部署。安装每台Syracuse服务器时,选择“现有MongoDB”——这将使用同一台机器上的MongoDB实例。
    o[b]方案2[/b]:先部署Syracuse服务器,然后编辑nodelocal.js文件,定义包含集群中各MongoDB服务器的连接URL。
    o在所有情况下,每台Syracuse服务器的nodelocal.js中都必须定义以下选项:
    config: {
    collaboration: { connectionString: “host1:port1,host2:port2,…” },
    mongodb: {
    options: DB: { w: 1 },
    server: {},
    replSet: { rs_name: “replica_name” },
    mongos: {}
    }
    }
• Syracuse负载均衡器
   o[b]方案1[/b]:内部负载均衡器——自动管理机器之间的负载均衡。在服务器故障时,不提供任何DNS切换。
   o[b]方案2[/b]:外部负载均衡器——使用内部负载均衡器管理单台服务器内的多个Node子进程(在本机内),并使用外部负载均衡器管理机器之间的负载均衡。DNS切换、机器自动启动/停止及相关参数都需要在nodelocal.js中设置。
    config.hosting.localBalancer: true ;
• ElasticSearch集群
   o修改配置,将所有ElasticSearch节点的cluster.name参数设置为所需的值。
   oSyracuse将被配置为引用其中一个ElasticSearch节点。如果该节点发生故障,不会自动切换。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.