ITKeyword - 技术文章推荐分享

首页 > Mongodb的副本集+分片部署

Mongodb的副本集+分片部署

相关推荐:mongodb 分片集群切换单个分片副本集primary的正确步骤

1、将原来的primay降为secondary shard1:PRIMARY> rs.stepDown(); 2016-07-11T20:35:30.134+0800 I NETWORK DBClientCursor::init call() failed 2016-07-11T20:35:30.141+0800 E QUERY Error: error doing query: failed at DBQuery._exec

前面尝试了三种部署:1.主从部署(Mongodb的主从部署)2.副本集部署(Mongodb的副本集部署)3.分片部署(Mongodb的分片部署)现在尝试一下副本集+分片的部署,也就是比副本集多了分片的功能,在分片配置时,分片节点从单一mongod变成了一个集合。参考资料(http://blog.csdn.net/irelandken/article/details/8003195)步骤如下:1.创建三个副本集2.创建分片需要的Config Server,Route Process 3.配置分片(即把副本集添加为分片节点)4.测试我们还是在同一台机子192.168.0.188上用不同的端口模拟不同的机子进行部署:1:创建三个副本集------------------------------------------------------------------------------------------------------------------------------------1.1第一个副本集:创建目录:mkdir -p /data/replset_sharding/replset1/r0mkdir -p /data/replset_sharding/replset1/r1mkdir -p /data/replset_sharding/replset1/r2mkdir -p /data/replset_sharding/replset1/log用后台运行的方式启动三个Mongod:进入mongodb的启动目录bin运行下面的代码:./mongod --dbpath /data/replset_sharding/replset1/r0 --replSet

replset1 --port 18010 --logpath=/data/replset_sharding/replset1/log/r0.log --logappend --fork --directoryperdb./mongod --dbpath /data/replset_sharding/replset1/r1 --replSet

replset1 --port 18011 --logpath=/data/replset_sharding/replset1/log/r1.log --logappend --fork --directoryperdb./mongod --dbpath /data/replset_sharding/replset1/r2 --replSet

replset1 --port 18012 --logpath=/data/replset_sharding/replset1/log/r2.log --logappend --fork --directoryperdb初始化复本集:在Mongodb的启动目录运行下面代码,启动端口18010的shell:./mongo --port 18010config_replset1 = {_id:"replset1",members:[{_id:0,host:"192.168.0.188:18010",priority:4},{_id:1,host:"192.168.0.188:18011",priority:2},{_id:2,host:"192.168.0.188:18012",arbiterOnly : true}]}rs.initiate(config_replset1);ps:注意arbiter仲裁节点只投票,不接收复制的数据!------------------------------------------------------------------------------------------------------------------------------------1.2第二个副本集:创建目录:mkdir -p /data/replset_sharding/replset2/r0mkdir -p /data/replset_sharding/replset2/r1mkdir -p /data/replset_sharding/replset2/r2mkdir -p /data/replset_sharding/replset2/log以后台的方式启动三个mogod:./mongod --dbpath /data/replset_sharding/replset2/r0 --replSet

replset2 --port 28010 --logpath=/data/replset_sharding/replset2/log/r0.log --logappend --fork --directoryperdb./mongod --dbpath /data/replset_sharding/replset2/r1 --replSet

replset2 --port 28011 --logpath=/data/replset_sharding/replset2/log/r1.log --logappend --fork --directoryperdb./mongod --dbpath /data/replset_sharding/replset2/r2 --replSet

replset2 --port 28012 --logpath=/data/replset_sharding/replset2/log/r2.log --logappend --fork --directoryperdb初始化复本集:在Mongodb的启动目录运行下面代码,启动端口28010的shell:./mongo --port 28010config_replset2 = {_id:"replset2",members:[{_id:0,host:"192.168.0.188:28010",priority:4},{_id:1,host:"192.168.0.188:28011",priority:2},{_id:2,host:"192.168.0.188:28012",arbiterOnly : true}]}rs.initiate(config_replset2);------------------------------------------------------------------------------------------------------------------------------------1.3第三个副本集:创建目录:mkdir -p /data/replset_sharding/replset3/r0mkdir -p /data/replset_sharding/replset3/r1mkdir -p /data/replset_sharding/replset3/r2mkdir -p /data/replset_sharding/replset3/log以后台的方式启动三个mogod:./mongod --dbpath /data/replset_sharding/replset3/r0 --replSet

replset3 --port 38010 --logpath=/data/replset_sharding/replset3/log/r0.log --logappend --fork --directoryperdb./mongod --dbpath /data/replset_sharding/replset3/r1 --replSet

replset3 --port 38011 --logpath=/data/replset_sharding/replset3/log/r1.log --logappend --fork --directoryperdb./mongod --dbpath /data/replset_sharding/replset3/r2 --replSet

replset3 --port 38012 --logpath=/data/replset_sharding/replset3/log/r2.log --logappend --fork --directoryperdb初始化复本集:在Mongodb的启动目录运行下面代码,启动端口38010的shell:./mongo --port 38010config_replset3 = {_id:"replset3",members:[{_id:0,host:"192.168.0.188:38010",priority:4},{_id:1,host:"192.168.0.188:38011",priority:2},{_id:2,host:"192.168.0.188:38012",arbiterOnly : true}]}rs.initiate(config_replset3);------------------------------------------------------------------------------------------------------------------------------------2:创建分片需要的Config Server,Route Process -------------------------------------------------------------------------------------------------------------------2.1启动config Server:40000创建目录:mkdir -p /data/replset_sharding/logmkdir -p /data/replset_sharding/config进入mongodb的启动bin目录以后台的方式启动:./mongod

--dbpath /data/replset_sharding/config --configsvr --port 40000

--logpath /data/replset_sharding/log/config.log --fork --directoryperdb --rest-------------------------------------------------------------------------------------------------------------------2.2启动Route Process:50000./mongos --port 50000 --configdb 192.168.0.188:40000 --chunkSize 50 --logpath=/data/replset_sharding/log/route.log --fork-------------------------------------------------------------------------------------------------------------------3:配置分片(即把副本集添加为分片节点)用Mongo Shell 登录 Route Process./mongo --port 50000use admin (记得执行这一点,切换到admin数据库)//添加分片节点,每个分片都是一个副本集db.runCommand({addshard:"replset1/192.168.0.188:18010,192.168.0.188:18011,192.168.0.188:18012",allowLocal:true})db.runCommand({addshard:"replset2/192.168.0.188:28010,192.168.0.188:28011,192.168.0.188:28012",allowLocal:true})db.runCommand({addshard:"replset3/192.168.0.188:38010,192.168.0.188:38011,192.168.0.188:38012",allowLocal:true})(allowLocal:true仅仅开发时才将分片配置到本地,生产时不能这样)-----------------------------------------------------------------------------------用mongovue连接这几个端口,观察结果:你会发觉,arbiter仲裁节点因为不接收数据,所以直接被mongos在配置阶段就去掉,db.runCommand({addshard:"replset1/192.168.0.188:18010,192.168.0.188:18011,192.168.0.188:18012",allowLocal:true})等价于:db.runCommand({addshard:"replset1/192.168.0.188:18010,192.168.0.188:18011",allowLocal:true})4:测试4.1.对数据库mytest启用分片登录Mongo Shell./mongo --port 50000use admindb.runCommand({enablesharding:"mytest"})在Mongovue中可以看到 启用分片的数据库已经在config的databases中有登记:这里以副本集1为基片4.2对数据库mytest中的集合student启用分片,设置片键为_id递增片键方式use admindb.runCommand({shardcollection:"mytest.student",key:{_id:1}})4.3分片集群插入数据测试:测试插入60万条数据Mongo Shell中运行use mytestfor(var i=1; i<=600000; i++) db.student.insert({age:i,name:"mary",addr:"guangzhou",country:"China"})在config的chunks可以看到分了多少片,以及片键的最小到最大的范围3个replset里可以看到相应的mytest数据库和student集合:部署成功!PS:分片的管理(增删与Mongodb的分片部署一样)目前的分片结构是:在生产环境通常有多mongos作为请求的入口,防止其中一个挂掉所有的mongodb请求都没有办法操作。在生产环境通常有多个 config server 配置服务器,因为它存储了分片路由的元数据,这个可不能丢失!就算挂掉其中一台,只要还有存货, mongodb集群就不会挂掉。或者详情可查看 http://blog.jobbole.com/72643/摘抄操作部分记录如下:1、准备机器,IP分别设置为: 192.168.0.136、192.168.0.137、192.168.0.138。2、分别在每台机器上建立mongodb分片对应测试文件夹。#存放mongodb数据文件mkdir -p /data/mongodbtest#进入mongodb文件夹cd

/data/mongodbtest#存放mongodb数据文件mkdir -p /data/mongodbtest #进入mongodb文件夹cd

/data/mongodbtest3、下载mongodb的安装程序包wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.8.tgz#解压下载的压缩包tar xvzf mongodb-linux-x86_64-2.4.8.tgzwget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.8.tgz #解压下载的压缩包tar xvzf mongodb-linux-x86_64-2.4.8.tgz4、分别在每台机器建立mongos 、config 、 shard1 、shard2、shard3 五个目录。因为mongos不存储数据,只需要建立日志文件目录即可。#建立mongos目录mkdir -p /data/mongodbtest/mongos/log#建立config server 数据文件存放目录mkdir -p /data/mongodbtest/config/data#建立config server 日志文件存放目录mkdir -p /data/mongodbtest/config/log#建立config server 日志文件存放目录mkdir -p /data/mongodbtest/mongos/log#建立shard1 数据文件存放目录mkdir -p /data/mongodbtest/shard1/data#建立shard1 日志文件存放目录mkdir -p /data/mongodbtest/shard1/log#建立shard2 数据文件存放目录mkdir -p /data/mongodbtest/shard2/data#建立shard2 日志文件存放目录mkdir -p /data/mongodbtest/shard2/log#建立shard3 数据文件存放目录mkdir -p /data/mongodbtest/shard3/data#建立shard3 日志文件存放目录mkdir -p /data/mongodbtest/shard3/log#建立mongos目录mkdir -p /data/mongodbtest/mongos/log #建立config server 数据文件存放目录mkdir -p /data/mongodbtest/config/data #建立config server 日志文件存放目录mkdir -p /data/mongodbtest/config/log #建立config server 日志文件存放目录mkdir -p /data/mongodbtest/mongos/log #建立shard1 数据文件存放目录mkdir -p /data/mongodbtest/shard1/data #建立shard1 日志文件存放目录mkdir -p /data/mongodbtest/shard1/log #建立shard2 数据文件存放目录mkdir -p /data/mongodbtest/shard2/data #建立shard2 日志文件存放目录mkdir -p /data/mongodbtest/shard2/log #建立shard3 数据文件存放目录mkdir -p /data/mongodbtest/shard3/data #建立shard3 日志文件存放目录mkdir -p /data/mongodbtest/shard3/log5、规划5个组件对应的端口号,由于一个机器需要同时部署 mongos、config server 、shard1、shard2、shard3,所以需要用端口进行区分。这个端口可以自由定义,在本文 mongos为 20000, config server 为 21000, shard1为 22001 , shard2为22002, shard3为22003.6、在每一台服务器分别启动配置服务器。/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --configsvr --dbpath /data/mongodbtest/config/data --port 21000 --logpath /data/mongodbtest/config/log/config.log --fork/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --configsvr --dbpath /data/mongodbtest/config/data --port 21000 --logpath /data/mongodbtest/config/log/config.log --fork7、在每一台服务器分别启动mongos服务器。/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongos

--configdb 192.168.0.136:21000,192.168.0.137:21000,192.168.0.138:21000

--port 20000

--logpath

/data/mongodbtest/mongos/log/mongos.log --fork/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongos

--configdb 192.168.0.136:21000,192.168.0.137:21000,192.168.0.138:21000

--port 20000

--logpath

/data/mongodbtest/mongos/log/mongos.log --fork8、配置各个分片的副本集。#在每个机器里分别设置分片1服务器及副本集shard1/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr --replSet shard1 --port 22001 --dbpath /data/mongodbtest/shard1/data

--logpath /data/mongodbtest/shard1/log/shard1.log --fork --nojournal

--oplogSize 10#在每个机器里分别设置分片1服务器及副本集shard1/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr --replSet shard1 --port 22001 --dbpath /data/mongodbtest/shard1/data

--logpath /data/mongodbtest/shard1/log/shard1.log --fork --nojournal

--oplogSize 10为了快速启动并节约测试环境存储空间,这里加上 nojournal 是为了关闭日志信息,在我们的测试环境不需要初始化这么大的redo日志。同样设置 oplogsize是为了降低 local 文件的大小,oplog是一个固定长度的 capped collection,它存在于”local”数据库中,用于记录Replica Sets操作日志。注意,这里的设置是为了测试!#在每个机器里分别设置分片2服务器及副本集shard2/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodbtest/shard2/data

--logpath /data/mongodbtest/shard2/log/shard2.log --fork --nojournal

--oplogSize 10#在每个机器里分别设置分片2服务器及副本集shard2/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /data/mongodbtest/shard2/data

--logpath /data/mongodbtest/shard2/log/shard2.log --fork --nojournal

--oplogSize 10#在每个机器里分别设置分片3服务器及副本集shard3/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr --replSet shard3 --port 22003 --dbpath /data/mongodbtest/shard3/data

--logpath /data/mongodbtest/shard3/log/shard3.log --fork --nojournal

--oplogSize 10#在每个机器里分别设置分片3服务器及副本集shard3/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr --replSet shard3 --port 22003 --dbpath /data/mongodbtest/shard3/data

--logpath /data/mongodbtest/shard3/log/shard3.log --fork --nojournal

--oplogSize 10分别对每个分片配置副本集,深入了解副本集参考本系列前几篇文章。任意登陆一个机器,比如登陆192.168.0.136,连接mongodb#设置第一个分片副本集/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:22001#使用admin数据库use admin#定义副本集配置config = { _id:"shard1", members:[

{_id:0,host:"192.168.0.136:22001"},

{_id:1,host:"192.168.0.137:22001"},

{_id:2

相关推荐:mongodb 分片集群 在线添加副本集实例并升级成primay主库

1,准备新的mongodb实例

# 准备数据目录、日志目录

mkdir -p /data/mongodb/shard27027

mkdir -p /data/mongodb/logs

# 启动mongod实例进程

/usr/local/mongodb-linux-x86_64-3.0.3/bin/mongod

--shardsvr --replSet shard1 --port 27027 --dbp

,host:"192.168.0.138:22001",arbiterOnly:true}

]

}#初始化副本集配置rs.initiate(config);#设置第二个分片副本集/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:22002#使用admin数据库use admin#定义副本集配置config = { _id:"shard2", members:[

{_id:0,host:"192.168.0.136:22002"},

{_id:1,host:"192.168.0.137:22002"},

{_id:2,host:"192.168.0.138:22002",arbiterOnly:true}

]

}#初始化副本集配置rs.initiate(config);#设置第三个分片副本集/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:22003#使用admin数据库use admin#定义副本集配置config = { _id:"shard3", members:[

{_id:0,host:"192.168.0.136:22003"},

{_id:1,host:"192.168.0.137:22003"},

{_id:2,host:"192.168.0.138:22003",arbiterOnly:true}

]

}#初始化副本集配置rs.initiate(config);#设置第一个分片副本集/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:22001 #使用admin数据库use admin #定义副本集配置config = { _id:"shard1", members:[

{_id:0,host:"192.168.0.136:22001"},

{_id:1,host:"192.168.0.137:22001"},

{_id:2,host:"192.168.0.138:22001",arbiterOnly:true}

]

} #初始化副本集配置rs.initiate(config); #设置第二个分片副本集/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:22002 #使用admin数据库use admin #定义副本集配置config = { _id:"shard2", members:[

{_id:0,host:"192.168.0.136:22002"},

{_id:1,host:"192.168.0.137:22002"},

{_id:2,host:"192.168.0.138:22002",arbiterOnly:true}

]

} #初始化副本集配置rs.initiate(config); #设置第三个分片副本集/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:22003 #使用admin数据库use admin #定义副本集配置config = { _id:"shard3", members:[

{_id:0,host:"192.168.0.136:22003"},

{_id:1,host:"192.168.0.137:22003"},

{_id:2,host:"192.168.0.138:22003",arbiterOnly:true}

]

} #初始化副本集配置rs.initiate(config);9、目前搭建了mongodb配置服务器、路由服务器,各个分片服务器,不过应用程序连接到 mongos 路由服务器并不能使用分片机制,还需要在程序里设置分片配置,让分片生效。#连接到mongos/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:20000#使用admin数据库user

admin#串联路由服务器与分配副本集1db.runCommand( { addshard : "shard1/192.168.0.136:22001,192.168.0.137:22001,192.168.0.138:22001"});#连接到mongos/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:20000 #使用admin数据库user

admin #串联路由服务器与分配副本集1db.runCommand( { addshard : "shard1/192.168.0.136:22001,192.168.0.137:22001,192.168.0.138:22001"});如里shard是单台服务器,用 db.runCommand( { addshard : “[: ]” } )这样的命令加入,如果shard是副本集,用db.runCommand( { addshard : “replicaSetName/[:port][,serverhostname2[:port],…]” });这样的格式表示 。#串联路由服务器与分配副本集2db.runCommand( { addshard : "shard2/192.168.0.136:22002,192.168.0.137:22002,192.168.0.138:22002"});#串联路由服务器与分配副本集2db.runCommand( { addshard : "shard2/192.168.0.136:22002,192.168.0.137:22002,192.168.0.138:22002"});#串联路由服务器与分配副本集3db.runCommand( { addshard : "shard3/192.168.0.136:22003,192.168.0.137:22003,192.168.0.138:22003"});#串联路由服务器与分配副本集3db.runCommand( { addshard : "shard3/192.168.0.136:22003,192.168.0.137:22003,192.168.0.138:22003"});#查看分片服务器的配置db.runCommand( { listshards : 1 } );#查看分片服务器的配置db.runCommand( { listshards : 1 } );#内容输出{

"shards" : [

{

"_id" : "shard1",

"host" : "shard1/192.168.0.136:22001,192.168.0.137:22001"

},

{

"_id" : "shard2",

"host" : "shard2/192.168.0.136:22002,192.168.0.137:22002"

},

{

"_id" : "shard3",

"host" : "shard3/192.168.0.136:22003,192.168.0.137:22003"

}

],

"ok" : 1}{

"shards" : [

{

"_id" : "shard1",

"host" : "shard1/192.168.0.136:22001,192.168.0.137:22001"

},

{

"_id" : "shard2",

"host" : "shard2/192.168.0.136:22002,192.168.0.137:22002"

},

{

"_id" : "shard3",

"host" : "shard3/192.168.0.136:22003,192.168.0.137:22003"

}

],

"ok" : 1}因为192.168.0.138是每个分片副本集的仲裁节点,所以在上面结果没有列出来。10、目前配置服务、路由服务、分片服务、副本集服务都已经串联起来了,但我们的目的是希望插入数据,数据能够自动分片,就差那么一点点,一点点。。。连接在mongos上,准备让指定的数据库、指定的集合分片生效。#指定testdb分片生效db.runCommand( { enablesharding :"testdb"});#指定testdb分片生效db.runCommand( { enablesharding :"testdb"});#指定数据库里需要分片的集合和片键db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )#指定数据库里需要分片的集合和片键db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )我们设置testdb的 table1 表需要分片,根据 id 自动分片到 shard1 ,shard2,shard3 上面去。要这样设置是因为不是所有mongodb 的数据库和表 都需要分片!11、测试分片配置结果。#连接mongos服务器/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:20000#连接mongos服务器/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongo

127.0.0.1:20000#使用testdbuse

testdb;#使用testdbuse

testdb;#插入测试数据for (var i = 1; i <= 100000; i++)db.table1.save({id:i,"test1":"testval1"});#插入测试数据for (var i = 1; i <= 100000; i++)db.table1.save({id:i,"test1":"testval1"});#查看分片情况如下,部分无关信息省掉了db.table1.stats();#查看分片情况如下,部分无关信息省掉了db.table1.stats();{

"sharded" : true,

"ns" : "testdb.table1",

"count" : 100000,

"numExtents" : 13,

"size" : 5600000,

"storageSize" : 22372352,

"totalIndexSize" : 6213760,

"indexSizes" : {

"_id_" : 3335808,

"id_1" : 2877952

},

"avgObjSize" : 56,

"nindexes" : 2,

"nchunks" : 3,

"shards" : {

"shard1" : {

"ns" : "testdb.table1",

"count" : 42183,

"size" : 0,

...

"ok" : 1

},

"shard2" : {

"ns" : "testdb.table1",

"count" : 38937,

"size" : 2180472,

...

"ok" : 1

},

"shard3" : {

"ns" : "testdb.table1",

"count" :18880,

"size" : 3419528,

...

"ok" : 1

}

},

"ok" : 1}{

"sharded" : true,

"ns" : "testdb.table1",

"count" : 100000,

"numExtents" : 13,

"size" : 5600000,

"storageSize" : 22372352,

"totalIndexSize" : 6213760,

"indexSizes" : {

"_id_" : 3335808,

"id_1" : 2877952

},

"avgObjSize" : 56,

"nindexes" : 2,

"nchunks" : 3,

"shards" : {

"shard1" : {

"ns" : "testdb.table1",

"count" : 42183,

"size" : 0,

...

"ok" : 1

},

"shard2" : {

"ns" : "testdb.table1",

"count" : 38937,

"size" : 2180472,

...

"ok" : 1

},

"shard3" : {

"ns" : "testdb.table1",

"count" :18880,

"size" : 3419528,

...

"ok" : 1

}

},

"ok" : 1}可以看到数据分到3个分片,各自分片数量为: shard1 “count” : 42183,shard2 “count” : 38937,shard3 “count” : 18880。已经成功了!不过分的好像不是很均匀,所以这个分片还是很有讲究的,后续再深入讨论。12、java程序调用分片集群,因为我们配置了三个mongos作为入口,就算其中哪个入口挂掉了都没关系,使用集群客户端程序如下:public class TestMongoDBShards {

public static void main(String[] args) {

try {

List<ServerAddress> addresses = new ArrayList<ServerAddress>();

ServerAddress address1 = new ServerAddress("192.168.0.136" , 20000);

ServerAddress address2 = new ServerAddress("192.168.0.137" , 20000);

ServerAddress address3 = new ServerAddress("192.168.0.138" , 20000);

addresses.add(address1);

addresses.add(address2);

addresses.add(address3);

MongoClient client = new MongoClient(addresses);

DB db = client.getDB( "testdb" );

DBCollection coll = db.getCollection( "table1" );

BasicDBObject object = new BasicDBObject();

object.append( "id" , 1);

DBObject dbObject = coll.findOne(object);

System. out .println(dbObject);

} catch (Exception e) {

e.printStackTrace();

}

}}public class TestMongoDBShards {

public static void main(String[] args) {

try {

List<ServerAddress> addresses = new ArrayList<ServerAddress>();

ServerAddress address1 = new ServerAddress("192.168.0.136" , 20000);

ServerAddress address2 = new ServerAddress("192.168.0.137" , 20000);

ServerAddress address3 = new ServerAddress("192.168.0.138" , 20000);

addresses.add(address1);

addresses.add(address2);

addresses.add(address3);

MongoClient client = new MongoClient(addresses);

DB db = client.getDB( "testdb" );

DBCollection coll = db.getCollection( "table1" );

BasicDBObject object = new BasicDBObject();

object.append( "id" , 1);

DBObject dbObject = coll.findOne(object);

System. out .println(dbObject);

} catch (Exception e) {

e.printStackTrace();

}

}}

相关推荐:MongoDB 副本集+分片 架构部署

Replica Set + Sharding 配置部署准备工作架构设计需要三台机器(racdb,host8,host9):数据节点,sharding2片每个sharding为Replic Set方式,冗余度为3(主、从、延迟从)mongos(路由节点),数量为3config server(配置服务器节点),数量为3arbiter serve

前面尝试了三种部署:1.主从部署(Mongodb的主从部署)2.副本集部署(Mongodb的副本集部署)3.分片部署(Mongodb的分片部署)现在尝试一下副本集+分片的部署,也就是比副本集多了分片的功能,在分片配...

------分隔线----------------------------