当前位置:Gxlcms > 数据库问题 > 搭建高可用MongoDB集群 副本

搭建高可用MongoDB集群 副本

时间:2021-07-01 10:21:17 帮助过:2人阅读

” 和上面命令参数“ –replSet application” 要保持

 config ={_id:"application",members:[{_id:0,host:"192.168.216.128:10001"},{_id:1,host:"192.168.216.129:10002"},{_id:2,host:"192.168.216.130:10003"}]}

如图命令和输出

技术分享

 

初始化副本配置

命令: rs.initiate(config);

输出结果:

{
 "info" : "Config now saved locally.  Should come online in about a minute.",
 "ok" : 1
}

如果输出如下:表示192.168.216.129:10002端口访问不到请检查该系统下10002端口的mongodb是否启动

rs.initiate(config);
{
 "errmsg" : "couldn‘t initiate : need all members up to initiate, not ok : 192.168.216.129:10002",
 "ok" : 0
}

 

查看集群节点的状态

 命令: rs.status(); 输出结果如下图 技术分享

 

此时整个副本集已经搭建成功

7.开始测试

在主节点上连接到数据库

命令:mongodb-linux-x86_64-2.0.4/bin/mongo 192.168.216.128:10001

 

建立test 数据库。

命令: use test; 往testdb表插入数据。 命令: db.testdb.insert({"mongodb":"mongodbtest"})   在副本节点 192.168.216.129 192.168.216.130 上连接到mongodb查看数据是否复制过来。 如我在130上查看命令如下   mongodb-linux-x86_64-2.0.4/bin/mongo 192.168.216.130:10003   进入后输入如下命令进入test数据库 use test 执行 db.testdb.find()查看表 报如下错: error: { "$err" : "not master and slaveok=false", "code" : 13435 } 解决办法如下 输入   rs.slaveOk(); 然后再执行如上查看表操作 #输出如下 { "_id" : ObjectId("55bb3495ce19b28f7ea77e81"), "mongodb" : "mongodbtest" }   操作如下切图 技术分享  

8.测试副本集故障转移功能,也就是主节点挂掉后,副节点变为主节点

   先停落主节点 128

  我是直接kill 掉

在主节点系统上:

  命令: ps -aux|grep mongod  查出mongodb启动的端口并杀掉

     我查出的端口是 25305

     命令 : kill -9 25305

 

如图

技术分享

 

连接到其它两个系统进入mongodb数据库,会有其中一个变为主节点,辨认是否为主机点  如:出现primary表示为主节点

 

如下查看示范例子

技术分享

 

查看整个集群的状态,可以看到128为状态不可达。

mongodb-linux-x86_64-2.0.4/bin/mongo 192.168.216.129:10002

rs.status();

输出如下

 

{
 "set" : "application",
 "date" : ISODate("2015-07-31T09:04:00Z"),
 "myState" : 1,
 "syncingTo" : "192.168.216.128:10001",
 "members" : [
  {
   "_id" : 0,
   "name" : "192.168.216.128:10001",
   "health" : 0,
   "state" : 8,
   "stateStr" : "(not reachable/healthy)",
   "uptime" : 0,
   "optime" : {
    "t" : 1438332053000,
    "i" : 1
   },
   "optimeDate" : ISODate("2015-07-31T08:40:53Z"),
   "lastHeartbeat" : ISODate("2015-07-31T09:00:17Z"),
   "pingMs" : 0,
   "errmsg" : "socket exception"
  },
  {
   "_id" : 1,
   "name" : "192.168.216.129:10002",
   "health" : 1,
   "state" : 1,
   "stateStr" : "PRIMARY",
   "optime" : {
    "t" : 1438332053000,
    "i" : 1
   },
   "optimeDate" : ISODate("2015-07-31T08:40:53Z"),
   "self" : true
  },
  {
   "_id" : 2,
   "name" : "192.168.216.130:10003",
   "health" : 1,
   "state" : 2,
   "stateStr" : "SECONDARY",
   "uptime" : 2044,
   "optime" : {
    "t" : 1438332053000,
    "i" : 1
   },
   "optimeDate" : ISODate("2015-07-31T08:40:53Z"),
   "lastHeartbeat" : ISODate("2015-07-31T09:03:59Z"),
   "pingMs" : 0
  }
 ],
 "ok" : 1
}

 

再启动原主节点128 发现变为  SECONDARY

此不再录入代码自己可以试试

 

 至此副本集搭建好了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

搭建高可用MongoDB集群 副本

标签:

人气教程排行