mongodb2.6部署副本集+分区-创新互联

部署规划

10年积累的成都网站设计、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有锦州免费网站建设让你可以放心的选择与我们合作。

操作系统: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

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:mongodb2.6部署副本集+分区-创新互联
当前URL:http://hbruida.cn/article/dgsghi.html