4.1集群模式
数据库sharding主要优点:
Ø 提供了接近线性扩张的架构,系统的可扩张性更高。
Ø 提高了数据库的可靠性。如果一个数据库分支当掉,对于整体的服务没有任何影响。
Ø 数据库的抗压性更高,性能更好。3000TPS的数据库和一个300TPS的数据库的压力是完成不一样。
服务器名称 | IP | 服务和端口 |
Server A | 192.168.1.231 | mongod shard1_1:27017 mongod shard1_1:27018 mongod config 1:20000 mongos 1:30000 |
Server B | 192.168.1.232 | mongod shard1_1:27017 mongod shard1_1:27018 mongod config 1:20000 mongos 1:30000 |
Server C | 192.168.1.233 | mongod shard1_1:27017 mongod shard1_1:27018 mongod config 1:20000 mongos 1:30000 |
1. Server A、Server B和Server C创建上ShardServer和Config Server的数据目录,脚本如下:
#Server A
mkdir –p /data/shard1_1
mkdir –p /data/shard2_1
mkdir –p /data/config
#Server B
mkdir –p /data/shard1_1
mkdir –p /data/shard2_1
mkdir –p /data/config
#Server C
mkdir –p /data/shard1_1
mkdir –p /data/shard2_1
mkdir –p /data/config
2. 配置Shard所有Replica Set。
配置shard1
Server A上操作,如下代码:
#Server A
/mongod –shardsvr–replSet shard1 –port 27017 –dbpath /data/shard1_1 –logpath/data/shard1_1/shard1_1.log –logappend --fork
#Server B
/mongod –shardsvr–replSet shard1 –port 27017 –dbpath /data/shard1_1 –logpath/data/shard1_1/shard1_2.log –logappend --fork
#Server C
/mongod –shardsvr–replSet shard1 –port 27017 –dbpath /data/shard1_1 –logpath/data/shard1_1/shard1_3.log –logappend --fork
链接其中一台机器的27017端口的mongod,初始化Relica Set 1 , 脚本如下:
./mongo –port 27017
>config = {_id:’shard1’,members:[{_id:0, host: ‘192.168.1.231:27017’},{_id:1,host: ‘192.168.1.232:27017’},{_id:2, host: ‘192.168.1.233:27017’}]}
>rs.initiate(config)
依次类推,配置Shard2,脚本如下:
#Server A
/mongod –shardsvr–replSet shard2 –port 27018 –dbpath /data/shard2_1 –logpath/data/shard1_1/shard2_1.log –logappend --fork
#Server B
/mongod –shardsvr–replSet shard2 –port 27018 –dbpath /data/shard2_2 –logpath/data/shard1_1/shard2_2.log –logappend --fork
#Server C
/mongod –shardsvr–replSet shard2 –port 27018 –dbpath /data/shard2_3 –logpath/data/shard1_1/shard2_3.log –logappend --fork
shard2配置服务
./mongo –port 27018
>config = {_id:’shard1’,members:[{_id:0, host: ‘192.168.1.231:27018’},{_id:1,host: ‘192.168.1.232:27018’},{_id:2, host: ‘192.168.1.233:27018’}]}
>rs.initiate(config)
3.配置3台Config Server
在Server A、Server B和Server C配置configServer,依次执行如下脚本:
./mongod –configsvr–dbpath /data/config –port 20000 –logpath/data/config/config.log –logappend –fork
4.配置3台Route Process
./mongos –configdb 192.168.1.231:20000, 192.168.1.232:20000,
192.168.1.233:20000 –port 30000 --chunkSize 125 –logpath /data/mongos.log –logappend--fork
5. 配置Shard Cluster
连接其中一台服务的端口30000的mongos进程,并切换到admin数据库开始配置Sharding环境,脚本如下:
./mongo –port 30000
>use admin
switched to db admin
>db.runCommand({addshard:”shard1/192.168.1.231:27017,192.168.1.232: 27017,
192.168.1.233: 27017”});
> db.runCommand({addshard:”shard1/192.168.1.231:27018,192.168.1.232: 27018,
192.168.1.233: 27018”});
6.激活分片,脚本如下:
db.runCommand({enablesharding:“test”});
db.runCommand({shardcollection:“test.users”, key:{_id:1}});
7.测试验证
脚本如下:
>use test
>for(var i=1;i< 200000; i++)db.users.insert(id:I, add_1:”北京”,addr_2:”上海”);
查看users表的状态,脚本如下:
>db.users.stats()
…..
这个是选自我的MongoDB培训文档,下载地址:MongoDB Tutorial