欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()})}
相关标签: mongodb 分片