色婆ijqwj 发表于 2018-10-26 09:30:31

mongodb2.6部署副本集+分区

  部署规划
  操作系统:redhat6.4 64位
  Config
  Route
  分片1
  分片2
  分片3
  使用端口
  28000
  27017
  27018
  27019
  27020
  IP地址
  192.168.1.30
  /etc/config.conf
  /etc/route.conf
  /etc/sd1.conf(主)
  /etc/sd2.conf(仲裁)
  /etc/sd3.conf(备)
  192.168.1.52
  /etc/config.conf
  /etc/route.conf
  /etc/sd1.conf(备)
  /etc/sd2.conf(主)
  /etc/sd3.conf(仲裁)
  192.168.1.108
  /etc/config.conf
  /etc/route.conf
  /etc/sd1.conf(仲裁)
  /etc/sd2.conf(备)
  /etc/sd3.conf(主)
  一、在三个节点上创建如下目录,做测试的话建议确保在/目录有15G左右的剩余空间
  # mkdir -p /var/config
  # mkdir -p /var/sd1
  # mkdir -p /var/sd2
  # mkdir -p /var/sd3
  二、查看配置文件
  # cat /etc/config.conf
  port=28000
  dbpath=/var/config
  logpath=/var/config/config.log
  logappend=true
  fork=true
  configsvr=true
  # cat /etc/route.conf
  port=27017
  configdb=192.168.1.30:28000,192.168.1.52:28000,192.168.1.108:28000
  logpath=/var/log/mongos.log
  logappend=true
  fork=true
  # cat /etc/sd1.conf
  port = 27018
  dbpath=/var/sd1
  logpath =/var/sd1/shard1.log
  logappend =true
  shardsvr =true
  replSet =set1
  fork =true
  # cat /etc/sd2.conf
  port = 27019
  dbpath=/var/sd2
  logpath =/var/sd2/shard2.log
  logappend =true
  shardsvr =true
  replSet =set2
  fork =true
  # cat /etc/sd3.conf
  port = 27020
  dbpath=/var/sd3
  logpath =/var/sd3/shard1.log
  logappend =true
  shardsvr =true
  replSet =set3
  fork =true
  三、在三个节点上同步时间
  略
  四、在三个节点上启动用config服务器
  节点1
  # mongod -f /etc/config.conf
  about to fork child process, waiting until server is ready for connections.
  forked process: 3472
  child process started successfully, parent exiting
  # ps -ef |grep mongo
  root      3472   11 19:15 ?      00:00:01 mongod -f /etc/config.conf
  root      349928580 19:17 pts/0    00:00:00 grep mongo
  # netstat -anltp|grep 28000
  tcp      0      0 0.0.0.0:28000               0.0.0.0:*                   LISTEN      3472/mongod
  节点2
  # mongod -f /etc/config.conf
  about to fork child process, waiting until server is ready for connections.
  forked process: 2998
  child process started successfully, parent exiting
  # ps -ef |grep mongo
  root      2998   18 19:15 ?      00:00:08 mongod -f /etc/config.conf
  root      301425460 19:17 pts/0    00:00:00 grep mongo
  # netstat -anltp|grep 28000
  tcp      0      0 0.0.0.0:28000               0.0.0.0:*                   LISTEN      2998/mongod
  节点3
  # mongod -f /etc/config.conf
  about to fork child process, waiting until server is ready for connections.
  forked process: 4086
  child process started successfully, parent exiting
  # ps -ef |grep mongo
  root      4086   12 19:25 ?      00:00:00 mongod -f /etc/config.conf
  root      410037860 19:25 pts/0    00:00:00 grep mongo
  # netstat -anltp|grep 28000
  tcp      0      0 0.0.0.0:28000               0.0.0.0:*                   LISTEN      4086/mongod
  五、在三个节点上启动用路由服务器
  节点1
  #mongos -f /etc/route.conf
  about to fork child process, waiting until server is ready for connections.
  forked process: 3575
  child process started successfully, parent exiting
  # netstat -anltp|grep 2701
  tcp      0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      3575/mongos
  节点2
  #mongos -f /etc/route.conf
  about to fork child process, waiting until server is ready for connections.
  forked process: 3057
  child process started successfully, parent exiting
  # netstat -anltp|grep 2701
  tcp      0      0 0.0.0.0:27017
  节点3
  # mongos -f /etc/route.conf
  about to fork child process, waiting until server is ready for connections.
  forked process: 4108
  child process started successfully, parent exiting
  # netstat -anltp|grep 27017
  tcp      0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      4108/mongos
  六、在三个节点启用shard
  mongod -f /etc/sd1.conf
  mongod -f /etc/sd2.conf
  mongod -f /etc/sd3.conf
  节点1
  # ps -ef |grep mongo
  root      3472   12 19:15 ?      00:02:18 mongod -f /etc/config.conf
  root      3575   10 19:28 ?      00:00:48 mongos -f /etc/route.conf
  root      4135   10 20:52 ?      00:00:07 mongod -f /etc/sd1.conf
  root      4205   10 20:55 ?      00:00:05 mongod -f /etc/sd2.conf
  root      4265   10 20:58 ?      00:00:04 mongod -f /etc/sd3.conf
  节点2
  # ps -ef |grep mongo
  root      2998   11 19:15 ?      00:02:02 mongod -f /etc/config.conf
  root      3057   11 19:28 ?      00:01:02 mongos -f /etc/route.conf
  root      3277   11 20:52 ?      00:00:20 mongod -f /etc/sd1.conf
  root      3334   16 20:56 ?      00:00:52 mongod -f /etc/sd2.conf
  root      3470   11 21:01 ?      00:00:07 mongod -f /etc/sd3.conf
  节点3
  # ps -ef |grep mongo
  root      4086   11 19:25 ?      00:01:58 mongod -f /etc/config.conf
  root      4108   10 19:27 ?      00:00:55 mongos -f /etc/route.conf
  root      4592   10 20:54 ?      00:00:07 mongod -f /etc/sd1.conf
  root      4646   13 20:56 ?      00:00:30 mongod -f /etc/sd2.conf
  root      4763   14 21:04 ?      00:00:12 mongod -f /etc/sd3.conf
  七、配置副本集
  192.168.1.30
  # mongo --port 27018
  MongoDB shell version: 2.6.4
  connecting to: 127.0.0.1:27018/test
  > use admin
  switched to db admin
  > rs1={_id:"set1",members:[{_id:0,host:"192.168.1.30:27018",priority:2},{_id:1,host:"192.168.1.52:27018"},{_id:2,host:"192.168.1.108:27018",arbiterOnly:true}]}
  {
  "_id" : "set1",
  "members" : [
  {
  "_id" : 0,
  "host" : "192.168.1.30:27018",
  "priority" : 2
  },
  {
  "_id" : 1,
  "host" : "192.168.1.52:27018"
  },
  {
  "_id" : 2,
  "host" : "192.168.1.108:27018",
  "arbiterOnly" : true
  }
  ]
  }
  > rs.initiate(rs1)
  {
  "info" : "Config now saved locally.Should come online in about a minute.",
  "ok" : 1
  }
  192.168.1.52
  # mongo --port 27019
  MongoDB shell version: 2.6.4
  connecting to: 127.0.0.1:27019/test
  > use admin
  switched to db admin
  > rs2={_id:"set2",members:[{_id:0,host:"192.168.1.52:27019",priority:2},{_id:1,host:"192.168.1.108:27019"},{_id:2,host:"192.168.1.30:27019",arbiterOnly:true}]}
  {
  "_id" : "set2",
  "members" : [
  {
  "_id" : 0,
  "host" : "192.168.1.52:27019",
  "priority" : 2
  },
  {
  "_id" : 1,
  "host" : "192.168.1.108:27019"
  },
  {
  "_id" : 2,
  "host" : "192.168.1.30:27019",
  "arbiterOnly" : true
  }
  ]
  }
  > rs.initiate(rs2);
  {
  "info" : "Config now saved locally.Should come online in about a minute.",
  "ok" : 1
  }
  192.168.1.108
  # mongo --port 27020
  MongoDB shell version: 2.6.4
  connecting to: 127.0.0.1:27020/test
  > use admin
  switched to db admin
  > rs3={_id:"set3",members:[{_id:0,host:"192.168.1.108:27020",priority:2},{_id:1,host:"192.168.1.30:27020"},{_id:2,host:"192.168.1.52:27020",arbiterOnly:true}]}
  {
  "_id" : "set3",
  "members" : [
  {
  "_id" : 0,
  "host" : "192.168.1.108:27020",
  "priority" : 2
  },
  {
  "_id" : 1,
  "host" : "192.168.1.30:27020"
  },
  {
  "_id" : 2,
  "host" : "192.168.1.52:27020",
  "arbiterOnly" : true
  }
  ]
  }
  > rs.initiate(rs3);
  {
  "info" : "Config now saved locally.Should come online in about a minute.",
  "ok" : 1
  }
  八、添加分片
  在三个节点上任一个节点都可以操作
  192.168.1.30
  # mongo --port 27017
  MongoDB shell version: 2.6.4
  connecting to: 127.0.0.1:27017/test
  mongos> use admin
  switched to db admin
  mongos> db.runCommand({addshard:"set1/192.168.1.30:27018,192.168.1.52:27018,192.168.1.108:27018"})
  { "shardAdded" : "set1", "ok" : 1 }
  mongos> db.runCommand({addshard:"set2/192.168.1.30:27019,192.168.1.52:27019,192.168.1.108:27019"})
  { "shardAdded" : "set2", "ok" : 1 }
  mongos> db.runCommand({addshard:"set3/192.168.1.30:27020,192.168.1.52:27020,192.168.1.108:27020"})
  { "shardAdded" : "set3", "ok" : 1 }
  九、查看分片信息
  mongos> db.runCommand({listshards : 1})
  {
  "shards" : [
  {
  "_id" : "set1",
  "host" : "set1/192.168.1.30:27018,192.168.1.52:27018"
  },
  {
  "_id" : "set2",
  "host" : "set2/192.168.1.108:27019,192.168.1.52:27019"
  },
  {
  "_id" : "set3",
  "host" : "set3/192.168.1.108:27020,192.168.1.30:27020"
  }
  ],
  "ok" : 1
  }
  十、删除分片
  mongos> db.runCommand({removeshard:"set3"})
  {
  "msg" : "draining started successfully",
  "state" : "started",
  "shard" : "set3",
  "ok" : 1
  }
  十一、管理分片
  mongos> use config
  switched to db config
  mongos> db.shards.find();
  { "_id" : "set1", "host" : "set1/192.168.1.30:27018,192.168.1.52:27018" }
  { "_id" : "set2", "host" : "set2/192.168.1.108:27019,192.168.1.52:27019" }
  { "_id" : "set3", "host" : "set3/192.168.1.108:27020,192.168.1.30:27020" }
  十二、对要分片的库和表声明
  切换到admin库
  mongos> use admin
  声明test库允许分片
  mongos> db.runCommand({enablesharding:"test"})
  { "ok" : 1 }
  声明users表要分片
  mongos> db.runCommand({shardcollection:"test.lineqi",key:{id:"hashed"}})
  { "collectionsharded" : "test.lineqi", "ok" : 1 }
  十三、测试脚本
  切换到test
  mongos>use test
  mongos> for (var i = 1; iuse config
  switched to db config
  mongos> db.chunks.find();
  { "_id" : "test.users-id_MinKey", "lastmod" : Timestamp(2, 0), "lastmodEpoch" : ObjectId("55ddb3a70f613da70e8ce303"), "ns" : "test.users", "min" : { "id" : { "$minKey" : 1 } }, "max" : { "id" : 1 }, "shard" : "set1" }
  { "_id" : "test.users-id_1.0", "lastmod" : Timestamp(3, 1), "lastmodEpoch" : ObjectId("55ddb3a70f613da70e8ce303"), "ns" : "test.users", "min" : { "id" : 1 }, "max" : { "id" : 4752 }, "shard" : "set2" }
  { "_id" : "test.users-id_4752.0", "lastmod" : Timestamp(3, 0), "lastmodEpoch" : ObjectId("55ddb3a70f613da70e8ce303"), "ns" : "test.users", "min" : { "id" : 4752 }, "max" : { "id" : { "$maxKey" : 1 } }, "shard" : "set3" }
  { "_id" : "test.lineqi-id_MinKey", "lastmod" : Timestamp(3, 2), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : { "$minKey" : 1 } }, "max" : { "id" : NumberLong("-6148914691236517204") }, "shard" : "set2" }
  { "_id" : "test.lineqi-id_-3074457345618258602", "lastmod" : Timestamp(3, 4), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong("-3074457345618258602") }, "max" : { "id" : NumberLong(0) }, "shard" : "set3" }
  { "_id" : "test.lineqi-id_3074457345618258602", "lastmod" : Timestamp(3, 6), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong("3074457345618258602") }, "max" : { "id" : NumberLong("6148914691236517204") }, "shard" : "set1" }
  { "_id" : "test.lineqi-id_-6148914691236517204", "lastmod" : Timestamp(3, 3), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong("-6148914691236517204") }, "max" : { "id" : NumberLong("-3074457345618258602") }, "shard" : "set2" }
  { "_id" : "test.lineqi-id_0", "lastmod" : Timestamp(3, 5), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong(0) }, "max" : { "id" : NumberLong("3074457345618258602") }, "shard" : "set3" }
  { "_id" : "test.lineqi-id_6148914691236517204", "lastmod" : Timestamp(3, 7), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong("6148914691236517204") }, "max" : { "id" : { "$maxKey" : 1 } }, "shard" : "set1" }
  查看users表的存储信息
  mongos>use test
  mongos> db.lineqi.stats();
  {
  "sharded" : true,
  "systemFlags" : 1,
  "userFlags" : 1,
  "ns" : "test.lineqi",
  "count" : 100000,
  "numExtents" : 18,
  "size" : 11200000,
  "storageSize" : 33546240,
  "totalIndexSize" : 8086064,
  "indexSizes" : {
  "_id_" : 3262224,
  "id_hashed" : 4823840
  },
  "avgObjSize" : 112,
  "nindexes" : 2,
  "nchunks" : 6,
  "shards" : {
  "set1" : {
  "ns" : "test.lineqi",
  "count" : 33102,
  "size" : 3707424,
  "avgObjSize" : 112,
  "storageSize" : 11182080,
  "numExtents" : 6,
  "nindexes" : 2,
  "lastExtentSize" : 8388608,
  "paddingFactor" : 1,
  "systemFlags" : 1,
  "userFlags" : 1,
  "totalIndexSize" : 2649024,
  "indexSizes" : {
  "_id_" : 1079232,
  "id_hashed" : 1569792
  },
  "ok" : 1
  },
  "set2" : {
  "ns" : "test.lineqi",
  "count" : 33755,
  "size" : 3780560,
  "avgObjSize" : 112,
  "storageSize" : 11182080,
  "numExtents" : 6,
  "nindexes" : 2,
  "lastExtentSize" : 8388608,
  "paddingFactor" : 1,
  "systemFlags" : 1,
  "userFlags" : 1,
  "totalIndexSize" : 2755312,
  "indexSizes" : {
  "_id_" : 1103760,
  "id_hashed" : 1651552
  },
  "ok" : 1
  },
  "set3" : {
  "ns" : "test.lineqi",
  "count" : 33143,
  "size" : 3712016,
  "avgObjSize" : 112,
  "storageSize" : 11182080,
  "numExtents" : 6,
  "nindexes" : 2,
  "lastExtentSize" : 8388608,
  "paddingFactor" : 1,
  "systemFlags" : 1,
  "userFlags" : 1,
  "totalIndexSize" : 2681728,
  "indexSizes" : {
  "_id_" : 1079232,
  "id_hashed" : 1602496
  },
  "ok" : 1
  }
  },
  "ok" : 1
  }
  十五、参考文档
  http://blog.sina.com.cn/s/blog_8d3bcbdb01015vne.html
  http://jingyan.baidu.com/article/495ba841f1ee2b38b30ede01.html
  http://server.ctocio.com.cn/150/13087650.shtml

页: [1]
查看完整版本: mongodb2.6部署副本集+分区