zoukankan      html  css  js  c++  java
  • mongodb副本集搭建、测试

    例:一主两从,测试库promised-mongo

    1、准备三个mongodb实例,便于测试本地创建三个目录用户存储数据:

    127.0.0.1:27017 => /data/mongo

    127.0.0.1:27027 => /data/mongo_rs1

    127.0.0.1:27037 => /data/mongo_rs2

    每个数据库启动配置文件为对应目录下的mongo.conf文件,启动配置说明:

     2、启动mongo实例:

    mongod -f /data/mongo/mongo.conf
    mongod -f /data/mongo_rs1/mongo.conf
    mongod -f /data/mongo_rs2/mongo.conf

    3、关联数据库:进入数据库后,声明配置并进行初始化,rs.status()查看当前状态

    > mongo 127.0.0.1:27017
    > conf=
        {
        "_id" : "rs",
        "members" : [
            { "_id" : 0, "host" : "127.0.0.1:27017" },
            { "_id" : 1, "host" : "127.0.0.1:27027" },
            { "_id" : 2, "host" : "127.0.0.1:27037" }
            ]
        }
    > rs.initiate(conf)
    > rs.status()

    这样一个mongo集群搭建起来,后续也可以继续添加、移除成员,详细操作搜索 mongo rs操作

    > rs.remove("127.0.0.1:27017t"); // 删除一个节点
     
    > rs.add("127.0.0.1:27017"); // 新增从节点

    现在主节点是随机指定的,如果需要指定某个节点为固定的主节点,则配置节点的优先级高于其他副本节点:

    # 指定主数据库:提高指定指定副本优先级
    # mongo
    cfg = rs.conf()
    cfg.members[0].priority = 5
    cfg.members[1].priority = 1
    cfg.members[2].priority = 1
    rs.reconfig(cfg)

    4、到这里,数据库层面的基本配置已经完成了,下面开始如何在代码中去连接这样一个副本集:

    import pmongo from 'promised-mongo';

    interface pmongoConfg { server_options: { socketOptions: {} }; db_options: { read_preference_tags: null, read_preference: 'primary' }; rs_options: { socketOptions: {}, rs_name: String }; // rs_name: 副本集名称 mongos_options: {}; dbName: String; // 指定库名 servers: [{ host: String, port: Number }]; // 数据库地址集合 auth: { user: String, password: String }; // 用户名密码,没有写null } pmongo(pmongoConfig)

    以promised-mongo为例,基本配置为有备注的几项,参照修改即可,其他mongo连接库参数大同小异,文档搜索replset查阅参数说明。

    5、宕机测试(也可以写一段简单代码去测试主节点挂掉后是否能正常获取数据)

    这里以27027为主节点,其他两个为从节点,正常启动状态为:

    lsof -i:27027 // 查询到主节点对应进程PID
    
    kill -9 PID  // 关闭主节点进程模拟宕机

    登录其中没有关闭的节点查看,可以发现27027状态异常,27037自动升级为主节点

     在原主节点恢复之后,集群会自动切换使用初始的主从关系;

    写完了。

    开黑吗我亚索贼6
  • 相关阅读:
    HDU
    UVa——540Team Queue(STL练习map、queue数组的综合使用)
    NOJ——1659求值(log10取对数+floor取整数部分+可有可无的快速幂)
    NOJ——1658平方和(自然数平方和公式和取模法则)
    HDU——2723Electronic Document Security(STL map嵌套set做法)
    HDU——1982Kaitou Kid
    HDU——1073Online Judge(string类以及其对应函数)
    HDU——1062Text Reverse(水题string::find系列+reverse)
    HDU——1009FatMouse' Trade(贪心+结构体+排序)
    HDU——1799循环多少次(杨辉三角/动态规划/C(m,n)组合数)
  • 原文地址:https://www.cnblogs.com/insight0912/p/12469601.html
Copyright © 2011-2022 走看看