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: |
| 2 | |
| 3 | |
| 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: |
| 2 | |
| 3 | |
| 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: |
| 2 | |
| 3 | |
| 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 | |
| 04 | |