搭建高可用mongodb集群(四)――分片(二)

2014-11-24 15:45:32 · 作者: · 浏览: 4
dbtest/config/log/config.log –fork

7、在每一台服务器分别启动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

8、配置各个分片的副本集。

#在每个机器里分别设置分片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

#在每个机器里分别设置分片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:[

1 {_id:0,host:"192.168.0.136:22001"},
2 {_id:1,host:"192.168.0.137:22001"},
3 {_id:2,host:"192.168.0.138:22001",arbiterOnly:true}
4 ]
5 }

#初始化副本集配置
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:[

1 {_id:0,host:"192.168.0.136:22002"},
2 {_id:1,host:"192.168.0.137:22002"},
3 {_id:2,host:"192.168.0.138:22002",arbiterOnly:true}
4 ]
5 }

#初始化副本集配置
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:[

1 {_id:0,host:"192.168.0.136:22003"},
2 {_id:1,host:"192.168.0.137:22003"},
3 {_id:2,host:"192.168.0.138:22003",arbiterOnly:true}
4 ]
5 }

#初始化副本集配置
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

#串联路由服务器与分配副本集1
db.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],…]” });这样的格式表示 。

#串联路由服务器与分配副本集2
db.runCommand( { addshard : “shard2/192.168.0.136:22002,192.168.0.137:22002,192.168.0.138:22002”});

#串联路由服务器与分配副本集3
db.runCommand( { addshard : “shard3/192.168.0.136:22003,192.168.0.137:22003,192.168.0.138:22003”});

#查看分片服务器的配置
db.runCommand( { listshards : 1 } );

#内容输出
{

01 "shards" : [
02 {
03 "_id" : "shard1",
04 "host" : "shard1/192.168.0.136:22001,192.168.0.137:22