MongoDB数据库——MongoDB分片

MongoDB分片

为了解决数据的不断增加的方法

垂直扩展:增加CPU、硬盘等存储资源来扩展容量

水平扩展:将数据分布在多个服务器上,也就是会使用到分片技术

MongoDB分片是什么?

就是把数据库拆分,把所有的数据分散存放到不同的服务器上的过程

为什么要实现MongoDB分片?

优点:

1. 对集群进行抽象,让集群“不可见”,MongoDB自带了一个叫做mongos的专有路由进程

2.解决磁盘存储空间的问题,提高数据处理的性能

3.提高数据的安全性,保证集群总是可读写,将MongoDB的分片和复制功能结合使用,在确保数据分片到多台服务器的同时,也确保了每分数据都有相应的备份,这样就可以确保有服务器换掉时,其他的从库可以立即接替坏掉的部分继续工作

4. 使集群易于扩展

扫描二维码关注公众号,回复: 10479770 查看本文章

分片集群中的主要组件:

Routers :数据路由,和客户端打交道的模块

config server:所有存、取数据的方式,所有shard节点的信息,分片功能的一些配置信息

shard:真正的数据存储位置,以chunk为单位存数据

部署MongoDB分片群集

部署环境如下图所示

1.安装MongoDB,配置8实例

2.创建存放数据的目录

mkdir -p /usr/local/mongodb/data/shard11

mkdir -p /usr/local/mongodb/data/shard12

mkdir -p /usr/local/mongodb/data/shard21

mkdir -p /usr/local/mongodb/data/shard22

mkdir -p /usr/local/mongodb/data/config1

mkdir -p /usr/local/mongodb/data/config2

mkdir -p /usr/local/mongodb/data/config3

3.创建日志目录以及日志文件并添加权限

mkdir -p /usr/local/mongodb/logs

touch /usr/local/mongodb/logs/router.log

touch /usr/local/mongodb/logs/shard11.log

touch /usr/local/mongodb/logs/shard12.log

touch /usr/local/mongodb/logs/shard21.log

touch /usr/local/mongodb/logs/shard22.log

touch /usr/local/mongodb/logs/config1.log

touch /usr/local/mongodb/logs/config2.log

touch /usr/local/mongodb/logs/config3.log

chmod -R 777 /usr/local/mongodb/logs/router.log

chmod -R 777 /usr/local/mongodb/logs/shard11.log

chmod -R 777 /usr/local/mongodb/logs/shard12.log

chmod -R 777 /usr/local/mongodb/logs/shard21.log

chmod -R 777 /usr/local/mongodb/logs/shard22.log

chmod -R 777 /usr/local/mongodb/logs/config1.log

chmod -R 777 /usr/local/mongodb/logs/config2.log

chmod -R 777 /usr/local/mongodb/logs/config3.log

4.编辑配置文件

shard配置文件

vim /usr/local/mongodb/bin/shard11.conf

vim /usr/local/mongodb/bin/shard12.conf

相比shard11.conf修改端口号和dbpath和logpath

vim /usr/local/mongodb/bin/shard21.conf

vim /usr/local/mongodb/bin/shard22.conf

相比shard21.conf修改端口号和dbpath和logpath

config配置文件

vim /usr/local/mongodb/bin/config1.conf

vim /usr/local/mongodb/bin/config2.conf

vim /usr/local/mongodb/bin/config3.conf

相比config1.conf修改端口号和dbpath和logpath

router配置文件

vim /usr/local/mongodb/bin/router.conf

5.启动分片节点和配置节点

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/shard11.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/shard12.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/shard21.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/shard22.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/config1.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/config2.conf

/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/bin/config3.conf

6.登录配置节点构成副本集

/usr/local/mongodb/bin/mongo --port 27111

> cfg={_id:'config',members:[{_id:0,host:'127.0.0.1:27111'},{_id:1,host:'127.0.0.1:27222'},{_id:2,host:'127.0.0.1:27333'}]}

 

7.登录两个shard分片节点构成副本集

/usr/local/mongodb/bin/mongo --port 27018

> cfg={_id:'shard1',members:[{_id:0,host:'127.0.0.1:27018'},{_id:1,host:'127.0.0.1:27019'}]}

/usr/local/mongodb/bin/mongo --port 27118

> cfg={_id:'shard1',members:[{_id:0,host:'127.0.0.1:27118'},{_id:1,host:'127.0.0.1:27119'}]}

8.启动路由节点,并增加分片

/usr/local/mongodb/bin/mongos -f conf/router.conf

mongos> sh.addShard("shard1/127.0.0.1:27018,127.0.0.1:27019")

mongos> sh.addShard("shard1/127.0.0.1:27118,127.0.0.1:27119")

查看数据库集群分片状态

9.在数据库上启用分片攻能

MongoDB的分片是基于集合(表)来进行的,要对一个集合分片,就要在其所在的数据库上启用支持分片

mongos> sh.enableSharding("kgc”)

对集合进行分片

先建立索引

mongos> db.kgc.createIndex({"_id":1})

对kgc库下的test集合进行分片

sh.shardCollection("kgc.test",{"id":1})

查看状态:mongos> sh.status()

10.循环插入数据测试分片

mongos> for(var i=1;i<=10000;i++)db.kgc.insert({age:i,name:"wangmazi",addr:"Beijing",country:"China"})

 

发布了37 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/feili12138/article/details/104924768