mongodb单机分片

之前在生产环境中搭建过mongodb的分片集群,在上生产环境之前,是必须在测试环境中搭建并测试的。
这里记录一下mongodb单台服务器分片的简单的搭建过程。

mongo分片实际上就是一种水平扩展。通过增加更多的服务器来承载工作数据负载。以便于支撑海量的数据和高读写的操作。
如果数据集不够大,建议还是用副本集。因为有路由的存在并且在处理细节上更复杂。分片环境下的性能可能始终没有副本集性能高。

mongo分片主要包括三大部分:shard,mongos,config。

shard分片服务器:每个分片都是整体数据的一部分子集。生产环境中每个分片都需要部署成副本集。
mongos路由服务器:为客户端和分片集群之间提供接口。可以部署多个。
config配置服务器:存储集群的元数据和配置,必须配置成副本集。

注意:以下配置过程仅限测试环境使用,生产环境不适用。

安装mongodb的过程就不写了,下载安装包直接解压就行了。
主要是需要改mongodb的配置文件。

我们先配置config配置服务器。
编辑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、日志不一样,改一下就行了。
然后创建对应的文件路径:

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

下面搭建Shard分片服务器。
创建三个文件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路由服务器
创建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()})}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值