标签:_id 内存 指定 加载 security test 日志功能 ora 保存数据
分片(Sharding)
分片就是将数据进行拆分,并将其分别存储在不同的服务器上 MongoDB支持自动分片能够自动处理数据在分片上的分布
MongoDB分片有三种角色
块(chunk)
MongoDB将数据拆分为chunk,每个chunk都是collection中的一段连续的数据记录,为防止一个chunk变的越来越大,当一个chunk增加到特定大小时,会被自动拆分为两个较小的chunk。默认块大小为64M 新的分片集合刚开始只有一个chunk,所有文档都位于这个chunk中,块的范围是$minKey至$maxKey。随着数据的增加会被拆分为多个块,块的范围也会逐步被调整,多使用[a,b)表示区间范围
均衡器(balancer)
均衡器周期性的检查每个分片之间的数据是否存在不均衡情况,如果存在,就会进行块的迁移。
片键
对集合进行分片时,需要选择一个或多个字段用于数据拆分。 拆分数据最常用的数据分发方式有三种,升序片键,随机分发的片键,小基数片键。
建议使用准升序键加搜索键的组合片键 升序片键最好能够对应N多个数据块,搜索键则应当是通常用来查询的字段,搜索键不能是一个升序字段,这样会把片键降级为一个升序片键,应该具有非升序,分布随即,且基数适当的特点
注意:
部署分片集群
1.创建配置服务器:
// config 1
systemLog:
path: D:\mongodb\sharding\config\c0\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\config\c0\data
net:
port: 27020
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\config\c0\key
sharding:
clusterRole: configsvr
// config 2
systemLog:
path: D:\mongodb\sharding\config\c1\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\config\c1\data
net:
port: 27021
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\config\c1\key
sharding:
clusterRole: configsvr
//config 3
systemLog:
path: D:\mongodb\sharding\config\c2\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\config\c2\data
net:
port: 27022
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\config\c2\key
sharding:
clusterRole: configsvr
启动以上三个配置服务器
mongod -config D:\mongodb\sharding\config\c0\mongodb.conf
mongod -config D:\mongodb\sharding\config\c1\mongodb.conf
mongod -config D:\mongodb\sharding\config\c2\mongodb.conf
配置路由服务器
//route 1
systemLog:
path: D:\mongodb\sharding\route\r0\logs\mongodb.log
logAppend: true
destination: file
net:
port: 27020
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\route\r0\key
sharding:
autoSplit: true
configDB: 127.0.0.1:27010,127.0.0.1:27011,127.0.0.1:27012
chunkSize: 64
//route 2
systemLog:
path: D:\mongodb\sharding\route\r1\logs\mongodb.log
logAppend: true
destination: file
net:
port: 27021
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\route\r1\key
sharding:
autoSplit: true
configDB: 127.0.0.1:27010,127.0.0.1:27011,127.0.0.1:27012
chunkSize: 64
启动以上两个路由服务器
mongos -config D:\mongodb\sharding\route\r1\mongodb.conf
mongos -config D:\mongodb\sharding\route\r1\mongodb.conf
配置分片服务器
//shard 1
systemLog:
path: D:\mongodb\sharding\shards\s0\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\shards\s0\data
net:
port: 27030
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\shards\s0\key
sharding:
clusterRole: shardsvr
//shard 2
systemLog:
path: D:\mongodb\sharding\shards\s1\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\shards\s1\data
net:
port: 27031
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\shards\s1\key
sharding:
clusterRole: shardsvr
启动分片服务器
?
mongod -config D:\mongodb\sharding\shards\s0\mongodb.conf
mongod -config D:\mongodb\sharding\shards\s1\mongodb.conf
登录到mongos ,添加shard分片
mongo --port 27021
添加分片服务器
db.runCommand({addshard:"127.0.0.1:27030"})
sh.addShard("127.0.0.1:27031")
配置分片存储的数据库?sh.enableSharding(dbname)?dbname-数据库名称
?
sh.enableSharding("testSharding")
设置分片集合的名称及指定片键?sh.shardCollection(fullName,key,unique)?fullname-dbname.collectionname 数据库名称+集合名称;key-片键;unique-默认为true,为true时在基础索引上创建唯一约束
sh.shardCollection("testSharding.users",{userName:1})
创建测试数据
use testSharding
?
for (i = 5000; i < 100000; i++) {
db.users.insert({
"i": i,
"userName": "user" + i,
"age": Math.floor(Math.random() * 120),
"created": new Date(),
total: Math.floor(Math.random() * 100) * i
})
}
创建分片3为副本集
//shardRepliSet1
?
systemLog:
path: D:\mongodb\sharding\shards\s2\rs0\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\shards\s2\rs0\data
net:
port: 27035
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\shards\s2\rs0\key
replication:
replSetName: replcaSetTest
secondaryIndexPrefetch: all
sharding:
clusterRole: shardsvr
?
//shardRepliSet2
?
systemLog:
path: D:\mongodb\sharding\shards\s2\rs1\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\shards\s2\rs1\data
net:
port: 27032
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\shards\s2\rs1\key
replication:
replSetName: replcaSetTest
secondaryIndexPrefetch: all
sharding:
clusterRole: shardsvr
?
?
//shardRepliSet3
?
systemLog:
path: D:\mongodb\sharding\shards\s2\rs2\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\shards\s2\rs2\data
net:
port: 27033
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\shards\s2\rs2\key
replication:
replSetName: replcaSetTest
secondaryIndexPrefetch: all
sharding:
clusterRole: shardsvr
?
?
//shardRepliSet4
?
systemLog:
path: D:\mongodb\sharding\shards\s2\rs3\logs\mongodb.log
logAppend: true
destination: file
storage:
dbPath: D:\mongodb\sharding\shards\s2\rs3\data
net:
port: 27038
bindIp: 127.0.0.1
security:
keyFile: D:\mongodb\sharding\shards\s2\rs3\key
replication:
replSetName: replcaSetTest
secondaryIndexPrefetch: all
sharding:
clusterRole: shardsvr
启动副本集实例
mongod -config D:\mongodb\sharding\shards\s2\rs0\mongodb.conf
mongod -config D:\mongodb\sharding\shards\s2\rs1\mongodb.conf
mongod -config D:\mongodb\sharding\shards\s2\rs2\mongodb.conf
mongod -config D:\mongodb\sharding\shards\s2\rs3\mongodb.conf
配置及初始化副本集
rsConfig = {
_id: "replcaSetTest",
members: [{ _id: 0, host: "127.0.0.1:27032" },
{ _id: 1, host: "127.0.0.1:27033" },
{ _id: 2, host: "127.0.0.1:27035" },
{ _id: 3, host: "127.0.0.1:27038" }
]
};
rs.initiate(rsConfig);
添加副本集分片至分片配置
sh.addShard("replcaSetTest/127.0.0.1:27032,127.0.0.1:27033,127.0.0.1:27035,127.0.0.1:27038")
设置配置服务器为副本集 配置文件中添加节点clusterRole: configsvr?即可,其它请参考副本集配置。
db.users.stats()查看集合users分片信息
管理维护分片集群
列出所有的分片服务器
use admin
db.runCommand({listshards:1})
查看集群摘要信息
sh.status();
查看分片集群信息
printShardingStatus()
标签:_id 内存 指定 加载 security test 日志功能 ora 保存数据
原文地址:http://www.cnblogs.com/AlvinLee/p/6117091.html