MongoDB分片
2016-09-24 18:16
351 查看
`环境准备
ip 服务
192.168.5.111 shard1-master shard2-slave shard3-仲裁
192.168.5.112 shard2-master shard3-slave shard1-仲裁
192.168.5.113 shard3-master shard1-slave shard2-仲裁
192.168.5.151 mongos
192.168.5.152 mongos
192.168.5.111 config-server
192.168.5.112 config-server
192.168.5.113 config-server
服务 端口
shard1 29001
shard2 29002
shard3 29003
mongos 27017
config 28000
1.创建目录 把mongodb解压到/data1/bin
配置环境变量export PATH=$PATH:/opt/mongodb/bin
2.创建目录
shard-server
mkdir -p /opt/mongodb/{shard1,shard2,shard3}/{data,log}
config-server
mkdir -p /opt/mongodb/configsvr/{data,log}
mongos-server
mkdir -p /opt/mongodb/mongos/{data,log}
启动3台config-server 必须是奇数台
/opt/mongodb/bin/mongod --configsvr --dbpath /opt/mongodb/configsvr/data --fork --logpath /opt/mongodb/configsvr/log/configsvr.log --logappend --port 28000
启动2台mongos-server
/opt/mongodb/bin/mongos --configdb 192.168.5.111:28000,192.168.5.112:28000,192.168.5.113:28000 --port 27017 --fork --logpath /opt/mongodb/mongos/log/mongos.log
禁用NUMA
第一次先正常启动,第二次加numactl启动
numactl --interleave=all mongod [ options ]
配置各个分片的副本集
在每个mongod server 分别设置分片1服务器及副本集shard1
参数 --chunkSize 100 默认是64MB,取值范围是1 MB 到 1024 MB
numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard1 --port 29001 --dbpath /opt/mongodb/shard1/data --logpath /opt/mongodb/shard1/log/shard1.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib
numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard2 --port 29002 --dbpath /opt/mongodb/shard2/data --logpath /opt/mongodb/shard2/log/shard2.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib
numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard3 --port 29003 --dbpath /opt/mongodb/shard3/data --logpath /opt/mongodb/shard3/log/shard3.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib
=================================================================================================
ID靠前的为主
#设置第一个分片副本集
mongo --port 29001
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard1", members:[
{_id:0,host:"192.168.5.111:29001"},
{_id:1,host:"192.168.5.113:29001"},
{_id:2,host:"192.168.5.112:29001",arbiterOnly:true}
]
}
rs.initiate(config)
#设置第二个分片副本集
mongo --port 29002
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard2", members:[
{_id:0,host:"192.168.5.112:29002"},
{_id:1,host:"192.168.5.111:29002"},
{_id:2,host:"192.168.5.113:29002",arbiterOnly:true}
]
}
rs.initiate(config)
=================================================================================================
#设置第三个分片副本集
mongo --port 29003
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard3", members:[
{_id:0,host:"192.168.5.113:29003"},
{_id:1,host:"192.168.5.112:29003"},
{_id:2,host:"192.168.5.111:29003",arbiterOnly:true}
]
}
rs.initiate(config)
=================================================================================================
使分片生效
连接到mongos
mongo 192.168.5.151:27017
use admin
db.runCommand( { addshard : "shard2/192.168.5.111:29002,192.168.5.112:29002,192.168.5.113:29002"});
db.runCommand( { addshard : "shard3/192.168.5.111:29003,192.168.5.112:29003,192.168.5.113:29003"});
#查看分片服务器的配置
db.runCommand( { listshards : 1 } )
#查看集群信息
sh.status()
或
db.printShardingStatus()
参数说明:
第一:shards 分成三片,shard1 shard2 shard3
第二:databases: partitioned表示是否分区
第三:chunks: 分成了一段。都在shard0000
创建t2库users集合分片
use t2
创建索引
db.users.ensureIndex({"username":1})
标识数据库t2可以启用分片,但实际上并没有进行分片
sh.enableSharding("t2")
sh.shardCollection("t2.users",{"username":1})
for (var i=0; i<100; i++) {
db.users.insert({"username" : "user"+i, "created_at" : new Date()});
}
单行方式
for (var i=0; i<10000; i++) { db.users.insert({"username" : "user"+i, "created_at" : new Date()}); }
========================================================================
标识数据库testdb可以启用分片,但实际上并没有进行分片
sh.enableSharding("testdb")
查看分片信息
sh.status()
sh.status({verbose:true}) 查看分片详细信息
#再对集合进行分片,name字段是片键
sh.shardCollection("testdb.table1",{"name":1})
#插入数据
use testdb
for (var i = 1; i <= 10; i++) {
db.table1.save({id:i,"test1":"testval1"}) }
#查看集合table1分片分布情况
db.table1.stats()
#查看数据库分片状态 需要先选择一个数据库
use db1
db.stats()
db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )
书上的for
for (var i=0; i<100000; i++) {
db.user.insert({"username" : "user"+i, "created_at" : new Date()});
}
db.user.count()
========================================================================
安装失败清理数据
mongod-server
rm -rf /opt/mongodb/shard1/data/*
rm -rf /opt/mongodb/shard2/data/*
rm -rf /opt/mongodb/shard3/data/*
rm -rf /opt/mongodb/shard1/log/*
rm -rf /opt/mongodb/shard2/log/*
rm -rf /opt/mongodb/shard3/log/*
config-server
rm -rf /opt/mongodb/configsvr/data/*
rm -rf /opt/mongodb/configsvr/log/*
mongos-server
rm -rf /opt/mongodb/mongos/data/*
rm -rf /opt/mongodb/mongos/log/*
`
ip 服务
192.168.5.111 shard1-master shard2-slave shard3-仲裁
192.168.5.112 shard2-master shard3-slave shard1-仲裁
192.168.5.113 shard3-master shard1-slave shard2-仲裁
192.168.5.151 mongos
192.168.5.152 mongos
192.168.5.111 config-server
192.168.5.112 config-server
192.168.5.113 config-server
服务 端口
shard1 29001
shard2 29002
shard3 29003
mongos 27017
config 28000
1.创建目录 把mongodb解压到/data1/bin
配置环境变量export PATH=$PATH:/opt/mongodb/bin
2.创建目录
shard-server
mkdir -p /opt/mongodb/{shard1,shard2,shard3}/{data,log}
config-server
mkdir -p /opt/mongodb/configsvr/{data,log}
mongos-server
mkdir -p /opt/mongodb/mongos/{data,log}
启动3台config-server 必须是奇数台
/opt/mongodb/bin/mongod --configsvr --dbpath /opt/mongodb/configsvr/data --fork --logpath /opt/mongodb/configsvr/log/configsvr.log --logappend --port 28000
启动2台mongos-server
/opt/mongodb/bin/mongos --configdb 192.168.5.111:28000,192.168.5.112:28000,192.168.5.113:28000 --port 27017 --fork --logpath /opt/mongodb/mongos/log/mongos.log
禁用NUMA
第一次先正常启动,第二次加numactl启动
numactl --interleave=all mongod [ options ]
配置各个分片的副本集
在每个mongod server 分别设置分片1服务器及副本集shard1
参数 --chunkSize 100 默认是64MB,取值范围是1 MB 到 1024 MB
numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard1 --port 29001 --dbpath /opt/mongodb/shard1/data --logpath /opt/mongodb/shard1/log/shard1.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib
numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard2 --port 29002 --dbpath /opt/mongodb/shard2/data --logpath /opt/mongodb/shard2/log/shard2.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib
numactl --interleave=all /opt/mongodb/bin/mongod --shardsvr --replSet shard3 --port 29003 --dbpath /opt/mongodb/shard3/data --logpath /opt/mongodb/shard3/log/shard3.log --fork --journal --oplogSize 5000 --storageEngine wiredTiger --directoryperdb --wiredTigerDirectoryForIndexes --wiredTigerCacheSizeGB 2 --wiredTigerCollectionBlockCompressor zlib --wiredTigerJournalCompressor zlib
=================================================================================================
ip 服务
192.168.5.111 shard1-master shard2-slave shard3-仲裁
192.168.5.112 shard2-master shard3-slave shard1-仲裁
192.168.5.113 shard3-master shard1-slave shard2-仲裁
ID靠前的为主#设置第一个分片副本集
mongo --port 29001
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard1", members:[
{_id:0,host:"192.168.5.111:29001"},
{_id:1,host:"192.168.5.113:29001"},
{_id:2,host:"192.168.5.112:29001",arbiterOnly:true}
]
}
rs.initiate(config)
注意:最后不要加分号
#设置第二个分片副本集mongo --port 29002
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard2", members:[
{_id:0,host:"192.168.5.112:29002"},
{_id:1,host:"192.168.5.111:29002"},
{_id:2,host:"192.168.5.113:29002",arbiterOnly:true}
]
}
rs.initiate(config)
=================================================================================================
#设置第三个分片副本集
mongo --port 29003
#使用admin数据库
use admin
#定义副本集配置
config = { _id:"shard3", members:[
{_id:0,host:"192.168.5.113:29003"},
{_id:1,host:"192.168.5.112:29003"},
{_id:2,host:"192.168.5.111:29003",arbiterOnly:true}
]
}
rs.initiate(config)
=================================================================================================
使分片生效
连接到mongos
mongo 192.168.5.151:27017
use admin
串联mongos与分配副本集
db.runCommand( { addshard : "shard1/192.168.5.111:29001,192.168.5.112:29001,192.168.5.113:29001"});db.runCommand( { addshard : "shard2/192.168.5.111:29002,192.168.5.112:29002,192.168.5.113:29002"});
db.runCommand( { addshard : "shard3/192.168.5.111:29003,192.168.5.112:29003,192.168.5.113:29003"});
#查看分片服务器的配置
db.runCommand( { listshards : 1 } )
#查看集群信息
sh.status()
或
db.printShardingStatus()
参数说明:
第一:shards 分成三片,shard1 shard2 shard3
第二:databases: partitioned表示是否分区
第三:chunks: 分成了一段。都在shard0000
创建t2库users集合分片
use t2
创建索引
db.users.ensureIndex({"username":1})
标识数据库t2可以启用分片,但实际上并没有进行分片
sh.enableSharding("t2")
sh.shardCollection("t2.users",{"username":1})
for (var i=0; i<100; i++) {
db.users.insert({"username" : "user"+i, "created_at" : new Date()});
}
单行方式
for (var i=0; i<10000; i++) { db.users.insert({"username" : "user"+i, "created_at" : new Date()}); }
========================================================================
标识数据库testdb可以启用分片,但实际上并没有进行分片
sh.enableSharding("testdb")
查看分片信息
sh.status()
sh.status({verbose:true}) 查看分片详细信息
#再对集合进行分片,name字段是片键
sh.shardCollection("testdb.table1",{"name":1})
#插入数据
use testdb
for (var i = 1; i <= 10; i++) {
db.table1.save({id:i,"test1":"testval1"}) }
#查看集合table1分片分布情况
db.table1.stats()
#查看数据库分片状态 需要先选择一个数据库
use db1
db.stats()
db.runCommand( { shardcollection : "testdb.table1",key : {id: 1} } )
书上的for
for (var i=0; i<100000; i++) {
db.user.insert({"username" : "user"+i, "created_at" : new Date()});
}
db.user.count()
========================================================================
安装失败清理数据
mongod-server
rm -rf /opt/mongodb/shard1/data/*
rm -rf /opt/mongodb/shard2/data/*
rm -rf /opt/mongodb/shard3/data/*
rm -rf /opt/mongodb/shard1/log/*
rm -rf /opt/mongodb/shard2/log/*
rm -rf /opt/mongodb/shard3/log/*
config-server
rm -rf /opt/mongodb/configsvr/data/*
rm -rf /opt/mongodb/configsvr/log/*
mongos-server
rm -rf /opt/mongodb/mongos/data/*
rm -rf /opt/mongodb/mongos/log/*
`
相关文章推荐
- 深入理解MongoDB分片的管理
- 浅析python中的分片与截断序列
- websocket 分片
- MongoDB分片测试
- 深入理解MongoDB分片的管理
- 浅析python中的分片与截断序列
- MyCat_下载配置
- MyCat_分片&ER分片及其查询插入更新异常等问题
- Elasticsearch 2.3.3基本概念介绍
- [winphone][C#] RSA加密与解密
- 安装MongoDB-单击版、复制集、密码认证、安装MongoDB分片shard
- MONGODB高可用Repl Set+Sharding配置
- 分布式模型
- hadoop mapreduce任务中,map任务数的确定
- MongoDB分片集群_windows示例
- IP之Fragmentation
- 8天学通MongoDB——第六天 分片技术
- Redis分片
- apache mina中写的过程分析
- Hadoop中分片为什么需要metasplitInfo文件