搭建副本集:一主一副一仲裁

  • 一个主节点
  • 一个从节点。 从节点可以再选举中成为主节点。
  • 一个监督者成员。监督者只能在选举中投票。

mongodb副本集环境搭建:

1、基本配置项:
    新建配置文件:mongodb.conf
    #数据库路径
    dbpath=/root/install/mongodb3.6.5/data/db
    #日志输出文件路径
    logpath=/root/install/mongodb3.6.5/logs/mongo.log
    #错误日志采用追加模式
    logappend=true
    #启用日志文件,默认启用
    journal=true
    #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
    quiet=true
    #端口号 默认为27017
    port=27017
    #副本集名称
    replSet=chainSet 
    #后台运行,默认false
    fork=true
    #开启用户认证,默认false
    auth=true
    #指定存储身份验证信息的**文件的路径。默认缺省
    keyFile=/root/install/mongodb3.6.5/keyfile
    #绑定地址,进程绑定和监听来自这个地址上的应用连接。对远程连接暂时不做ip限制。
    bind_ip=0.0.0.0
2、启动&&初始化
    mongod --config mongodb.conf //启动mongodb
    mongo ip:port/dbname -u  user  -p  pwd //远程连接
    #初始化副本集信息  199.187.153.121为主,199.187.153.122仲裁节点,199.187.153.123副节点
    rs.initiate({"_id":"chainSet",
    members:[{"_id":1,"host":"199.187.153.121:27017",priority:9},
    {"_id":2,"host":"199.187.153.122:27017", arbiterOnly:true },
    {"_id":3,"host":"199.187.153.123:27017",priority:3}]})

    "_id": 副本集的名称
    "members": 副本集的服务器列表
    "_id": 服务器的唯一ID
    "host": 服务器主机
    "priority": 是优先级,默认为1,优先级0为被动节点,不能成为活跃节点。优先级不位0则按照有大到小选出活跃节点。
    "arbiterOnly": 仲裁节点,只参与投票,不接收数据,也不能成为活跃节点。

    #查询集群状态
    rs.status()
    #查看数据库
    show dbs
    #查看表
    use testdb //使用testdb数据库
    show tables 或 show collections
    #创建表
    db.createCollection("testCon")
    #查询表
    db.testCon.find()

    后续动态修改集群:
    rs.add("99.187.153.124:27017")//增加节点,即 SECONDARY
    rs.addArb("99.187.153.124:27017");/把增加的结点设置为仲裁节点
    rs.remove("199.187.153.124:27017")//删除节点

    注意事项:
      1)刚开始启动副本集时把以下两行注释掉,副本集初始化以及用户创建完毕,在打开注释。
        #开启用户认证,默认false
    auth=true
    #指定存储身份验证信息的**文件的路径。默认缺省
    keyFile=/root/install/mongodb3.6.5/keyfile
     2)keyfile文件生成
          openssl rand -base64 666> /usr/local/mongodb/mongo-keyfile

3、创建用户:
    管理员用户:
    use admin  //切换数据库
    db.createUser({user:"admin",pwd:"admin",roles:["root"]})//创建管理员用户
    db.auth("admin", "admin") //认证
    数据库用户:
    use test //.切换数据库
    db.createUser({user: "test", pwd: "test", roles: [{ role: "dbOwner", db: "test" }]})//创建用户
    db.auth("test", "test") //认证

4、遇到的坑:
    1)、初始化副本集信息时不能在仲裁节点执行,否则报错
    2)、keyfile文件的权限必须是600,chmod 600  keyfile 
 

资料:

 1、https://www.cnblogs.com/xbq8080/p/7231548.html




相关文章: