千家信息网

mongodb2.6部署副本集+分区

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,部署规划操作系统:redhat6.4 64位ConfigRoute分片1分片2分片3使用端口2800027017270182701927020IP地址192.168.1.30/etc/config.c
千家信息网最后更新 2026年11月03日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左右的剩余空间

[root@orcl ~]# mkdir -p /var/config

[root@orcl ~]# mkdir -p /var/sd1

[root@orcl ~]# mkdir -p /var/sd2

[root@orcl ~]# mkdir -p /var/sd3


二、查看配置文件

[root@orcl ~]# cat /etc/config.conf

port=28000

dbpath=/var/config

logpath=/var/config/config.log

logappend=true

fork=true

configsvr=true

[root@orcl ~]# 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

[root@orcl ~]# cat /etc/sd1.conf

port = 27018

dbpath=/var/sd1

logpath =/var/sd1/shard1.log

logappend =true

shardsvr =true

replSet =set1

fork =true

[root@orcl ~]# cat /etc/sd2.conf

port = 27019

dbpath=/var/sd2

logpath =/var/sd2/shard2.log

logappend =true

shardsvr =true

replSet =set2

fork =true

[root@orcl ~]# cat /etc/sd3.conf

port = 27020

dbpath=/var/sd3

logpath =/var/sd3/shard1.log

logappend =true

shardsvr =true

replSet =set3

fork =true


三、在三个节点上同步时间

略


四、在三个节点上启动用config服务器

节点1

[root@orcl ~]# 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

[root@orcl ~]# ps -ef |grep mongo

root 3472 1 1 19:15 ? 00:00:01 mongod -f /etc/config.conf

root 3499 2858 0 19:17 pts/0 00:00:00 grep mongo

[root@orcl ~]# netstat -anltp|grep 28000

tcp 0 0 0.0.0.0:28000 0.0.0.0:* LISTEN 3472/mongod

节点2

[root@localhost ~]# 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

[root@localhost ~]# ps -ef |grep mongo

root 2998 1 8 19:15 ? 00:00:08 mongod -f /etc/config.conf

root 3014 2546 0 19:17 pts/0 00:00:00 grep mongo

[root@localhost ~]# netstat -anltp|grep 28000

tcp 0 0 0.0.0.0:28000 0.0.0.0:* LISTEN 2998/mongod

节点3

[root@db10g ~]# 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

[root@db10g ~]# ps -ef |grep mongo

root 4086 1 2 19:25 ? 00:00:00 mongod -f /etc/config.conf

root 4100 3786 0 19:25 pts/0 00:00:00 grep mongo

[root@db10g ~]# netstat -anltp|grep 28000

tcp 0 0 0.0.0.0:28000 0.0.0.0:* LISTEN 4086/mongod



五、在三个节点上启动用路由服务器

节点1

[root@orcl ~]# 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

[root@orcl ~]# netstat -anltp|grep 2701

tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 3575/mongos


节点2

[root@localhost ~]# 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

[root@localhost ~]# netstat -anltp|grep 2701

tcp 0 0 0.0.0.0:27017


节点3

[root@db10g ~]# 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

[root@db10g ~]# 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

[root@orcl ~]# ps -ef |grep mongo

root 3472 1 2 19:15 ? 00:02:18 mongod -f /etc/config.conf

root 3575 1 0 19:28 ? 00:00:48 mongos -f /etc/route.conf

root 4135 1 0 20:52 ? 00:00:07 mongod -f /etc/sd1.conf

root 4205 1 0 20:55 ? 00:00:05 mongod -f /etc/sd2.conf

root 4265 1 0 20:58 ? 00:00:04 mongod -f /etc/sd3.conf


节点2

[root@localhost ~]# ps -ef |grep mongo

root 2998 1 1 19:15 ? 00:02:02 mongod -f /etc/config.conf

root 3057 1 1 19:28 ? 00:01:02 mongos -f /etc/route.conf

root 3277 1 1 20:52 ? 00:00:20 mongod -f /etc/sd1.conf

root 3334 1 6 20:56 ? 00:00:52 mongod -f /etc/sd2.conf

root 3470 1 1 21:01 ? 00:00:07 mongod -f /etc/sd3.conf


节点3

[root@db10g data]# ps -ef |grep mongo

root 4086 1 1 19:25 ? 00:01:58 mongod -f /etc/config.conf

root 4108 1 0 19:27 ? 00:00:55 mongos -f /etc/route.conf

root 4592 1 0 20:54 ? 00:00:07 mongod -f /etc/sd1.conf

root 4646 1 3 20:56 ? 00:00:30 mongod -f /etc/sd2.conf

root 4763 1 4 21:04 ? 00:00:12 mongod -f /etc/sd3.conf


七、配置副本集


192.168.1.30


[root@orcl ~]# 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


[root@orcl ~]# 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


[root@localhost sd3]# 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

[root@orcl sd3]# 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; i <= 100000; i++) db.lineqi.save({id:i,name:"12345678",sex:"male",age:27,value:"test"});

WriteResult({ "nInserted" : 1 })


十四、测试结果

查看分片信息

mongos> use 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


节点 三个 信息 仲裁 测试 服务器 目录 切换 服务 配置 副本 操作系统 地址 建议 文件 文档 时间 空间 端口 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 苏州找大状互联网科技有限公司 互联网科技有限公司经营范围 金融科技创新监管互联网金融 猪兼强互联网科技 互联网科技视频 互联网科技论文 美国互联网黑科技 河南猎农互联网科技有限公司 互联网媒体平台算高科技产业 哈尔滨屹滨互联网科技有限公司 中和天地互联网科技有限公司 启辰互联网科技 浙南科技城互联网大厦招聘 宇信科技在杭州互联网排第几 珠海东科互联网科技有限公司 西安左小互联网科技有限公司 悟空问答互联网科技 恒生科技互联网指数十大成分股 六子台科技互联网展会 山东特亿宝互联网科技有限公司 时间互联网络科技 佰商互联网科技有限公司 湖南洣水互联网科技有限公司扣款 港股科技和互联网 哈尔滨屹滨互联网科技有限公司 米聚互联网科技南京有限公司排面 互联网科技研发水平 上海京穆互联网科技有限公司 工业互联网科技成果转化
0