• mongo转换副本集


    本文介绍如何把独立的mongo实例转换成包含3个成员的副本集。开发和测试使用独立实例,生产使用副本集。如何安装独立的mongo实例本文不再赘述。

    如果在部署副本集时还没有安装mongo实例,可以查看部署副本集;

    步骤

    1. 停止独立的mongo实例服务。
    2. 重启实例。使用--replSet选项配置副本集的名字。例如,下面命令启动独立的实例作为副本集rs0的一个成员。它使用了独立的数据库路径/srv/mongodb/db0,该路径必须事先存在,否则启动报错。
    mongod --port 27017 --dbpath /srv/mongodb/db0 --replSet rs0
    • 1

    如果程序连接了不止一个副本集,那么每个副本集要有唯一的名字。有些驱动根据副本集名字对副本集连接分组。 
    3. 连接到mongo实例。 
    4. 使用rs.initiate()初始化新的副本集。

    rs.initiate()
    • 1

    现在就可以对副本集操作了。 
    可以使用rs.conf()查看副本集配置,使用rs.status()检查副本集状态。

    扩展副本集

    通过以下步骤添加副本集成员: 
    1. 在两个不同的系统,启动两个独立的mongo实例。 
    2. 在最初的mongo实例连接上(之前独立的实例),执行如下命令把新实例添加到副本集:

    rs.add("<hostname><:port>")
    • 1

    使用mongo实例可分辨的主机名和端口替换<hostname><port>,添加到副本集。

    分片考虑

    如果新的副本集时分片集群的一部分,按照如下步骤修改分片主机信息: 
    1. 连接到分片集群mongos实例中的一个,执行如下命令:

    db.getSiblingDB("config").shards.save( {_id: "<name>", host: "<replica-set>/<member,><member,><...>" } )
    • 1

    使用分片名字替换<name>,使用副本集名字替换<replica-set>,使用副本集成员替换<member,><member,><>。 
    2. 重启所有mongos实例。如果可能,重启副本集所有组件。

  • 相关阅读:
    Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    "=="和equals方法究竟有什么区别?
    Tomcat发生java.lang.OutOfMemoryError: PermGen space的解决方案
    HashMap原理
    springMVC
    SqlServer和Oracle修改表结构语句
    quartz定时任务时间表达式说明
    Linq to Entity 时间差作为筛选条件产生的问题
    密码学基础
    C#如何使用异步编程【BeginInvoke/EndInvoke】
  • 原文地址:https://www.cnblogs.com/liqing1009/p/9295816.html
Copyright © 2020-2023  润新知