mongodb单机分片
程序员文章站
2024-03-19 22:49:04
...
之前在生产环境中搭建过mongodb的分片集群,在上生产环境之前,是必须在测试环境中搭建并测试的。
这里记录一下mongodb单台服务器分片的简单的搭建过程。
注意:仅限测试环境使用,生产环境不适用。
安装mongodb的过程就不写了,下载安装包直接解压就行了。不会的请自己搜一下,很简单的。
主要是需要改mongodb的配置文件。
分别创建并编辑mongod1.conf,mongod2.conf,mongod3.conf三个配置文件
vi /etc/mongodb/mongod1.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/config/mongodb1.log
storage:
dbPath: /data/mongodb/config/data1
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb/config/configsrv1.pid
net:
port: 21001
bindIp: 0.0.0.0
replication:
replSetName: configs
sharding:
clusterRole: configsvr
一共三个配置文件,我只贴了其中一个的配置文件,文件内容都一样,只是端口、存储路径、pid、日志不一样,改一下就行了。把1改成2或者3。
然后创建对应的文件路径:
mkdir -p /data/mongodb/config/data1
mkdir -p /data/mongodb/config/data2
mkdir -p /data/mongodb/config/data3
分别启动三个进程:
mongod --config=/etc/mongodb/mongod1.conf
mongod --config=/etc/mongodb/mongod2.conf
mongod --config=/etc/mongodb/mongod3.conf
搭建Sharding
创建三个文件shard1.conf,shard2.conf,shard3.conf
同样的,文件内容一样,只有端口、dbpath、log、pid不一样,自己改一下
vi shard1.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/shard1/log/shard1.log
storage:
dbPath: /data/mongodb/shard1/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /data/mongodb/shard1/shard1.pid
net:
port: 27001
bindIp: 0.0.0.0
#replication:
# replSetName: shard1
sharding:
clusterRole: shardsvr
创建对应目录:
mkdir -p /data/mongodb/shard1/log
mkdir -p /data/mongodb/shard1/data
mkdir -p /data/mongodb/shard2/log
mkdir -p /data/mongodb/shard2/data
mkdir -p /data/mongodb/shard3/log
mkdir -p /data/mongodb/shard3/data
创建mongos.conf
vi mongos.conf
systemLog:
destination: file
logAppend: true
path: /data/mongodb/mongos/log/mongodbmongos.log
processManagement:
fork: true
net:
port: 20000
bindIp: 0.0.0.0
sharding:
configDB: configs/127.0.0.1:21001,127.0.0.1:21002,127.0.0.1:21003
创建目录:
mkdir -p /data/mongodb/mongos/log
启动三个shard进程:
mongod --config=/etc/mongodb/shard1.conf
mongod --config=/etc/mongodb/shard2.conf
mongod --config=/etc/mongodb/shard3.conf
进入mongo shell
mongo --port 21001
输入命令创建副本集,简单粗暴:
use admin
config = {
_id : "configs",
members : [
{_id : 0, host : "127.0.0.1:21001" },
{_id : 1, host : "127.0.0.1:21002" },
{_id : 2, host : "127.0.0.1:21003" }
]
}
rs.initiate(config)
启动mongos进程,注意查看有无报错:
mongos --config=/etc/mongodb/mongos.conf
mongos启动完成后,登录mongos:
mongo --port 20000
在mongo shell中输入下面的命令:
use admin
sh.addShard("127.0.0.1:27001")
sh.addShard("127.0.0.1:27002")
sh.addShard("127.0.0.1:27003")
sh.status()
由于是单机测试,Shard分片没有做副本集。在生产环境中每个Shard都是必须要做副本集的。
在mongos里测试,用test库中的msg集合,循环1000次插入数据,最后可以分别登录shard进行验证。
sh.enableSharding("test")
sh.shardCollection("test.msg",{x: 1,time: 1})
use test
for(var i=0;i<1000;i++){db.msg.insert({"x":"something"+i,"time":new Date()})}