前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongoDB (三) mongoDB分片集群

mongoDB (三) mongoDB分片集群

作者头像
alexhuiwang
发布2020-09-24 11:23:37
1.4K0
发布2020-09-24 11:23:37
举报
文章被收录于专栏:运维博客运维博客运维博客

mongoDB分片集群

介绍

解决数据分片,防止数据丢失 生产环境需要擦用分片+副本集的部署方式

组成部分

  • route: 提供入口,不存储数据
  • configserver: 存储元数据信息,建议使用副本集
  • shardserver: 数据存储服务,存储真正数据, 也许要使用副本集

依赖关系

  • 当数据插入时,需要从configsrv知道数据要插入哪个shardsrv分片
  • 当用户获取数据时,需要从configsrv知道数据存储在哪个shardsrv分片

集群搭建

  • 使用同一份mongodb二进制文件
  • 修改对应的配置实现分片集群的搭建

集群资源规划

configserver: 28017,28018,28019 三个端口搭建 route: 27017,27018,27019 三个端口搭建 shardserver: 29017,29018,29019,29020四个端口搭建

configsvr的配置

配置文件
  • 28017,28018,28019,28020只需修改配置中的端口和路径即可
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/28017/mongodb.log
storage:
  dbPath: /data/mongodb/28017/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 28017
  bindIp: 0.0.0.0
replication:
  replSetName: copySet
sharding:
  clusterRole: configsvr

启动服务

[root@centos7-node1 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/28017/mongodb.conf 
[root@centos7-node2 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/28018/mongodb.conf
[root@centos7-node3 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/28019/mongodb.conf
配置副本集
[root@centos7-node1 ~]# /usr/local/mongodb/bin/mongo localhost:28017
>config={ _id:"copySet",
  configsvr: true,
   members: [
     {_id:0,host:"192.168.56.11:28017"},
     {_id:1,host:"192.168.56.12:28018"},
     {_id:2,host:"192.168.56.13:28019"}
 ]
}
> rs.initiate(config)
> rs.ststus()

router的配置

router是mongodb的入口,不存储任何数据

配置文件
  • 修改27017,27018,27019 三个端口搭建即可
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/27017/mongodb.log
processManagement:
  fork: true
net:
  port: 27017
  bindIp: 0.0.0.0
sharding:
  configDB: copySet/192.168.56.11:28017,192.168.56.12:28018,192.168.56.13:28019
启动服务

mongos 启动

[root@centos7-node1 ~]# /usr/local/mongodb/bin/mongos -f /data/mongodb/27017/mongodb.conf
[root@centos7-node2 ~]# /usr/local/mongodb/bin/mongos -f /data/mongodb/27018/mongodb.conf 
[root@centos7-node3 ~]# /usr/local/mongodb/bin/mongos -f /data/mongodb/27019/mongodb.conf 
[root@centos7-node2 ~]# /usr/local/mongodb/bin/mongo 127.0.0.1:27018    #测试登录

shardsvr的配置

数据角色

配置文件

29017,29018,29019,29020四个端口搭建即可 数据角色 29017、29018数据角色data1 29019、29020数据角色data2

systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/29017/mongodb.log
storage:
  dbPath: /data/mongodb/29017/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 29017
  bindIp: 0.0.0.0
replication:
  replSetName: data1
sharding:
  clusterRole: shardsvr
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/29019/mongodb.log
storage:
  dbPath: /data/mongodb/29019/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 29019
  bindIp: 0.0.0.0
replication:
  replSetName: data2
sharding:
  clusterRole: shardsvr
服务启动
/usr/local/mongodb/bin/mongod -f /data/mongodb/29017/mongodb.conf
/usr/local/mongodb/bin/mongod -f /data/mongodb/29018/mongodb.conf
/usr/local/mongodb/bin/mongod -f /data/mongodb/29019/mongodb.conf
/usr/local/mongodb/bin/mongod -f /data/mongodb/29020/mongodb.conf
29017#### 配置
> config = {
        "_id" : "data1",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "192.168.56.11:29017"
                },
                {
                        "_id" : 1,
                        "host" : "192.168.56.12:29018"
                }
        ]
}
> rs.initiate(config) 
29019#### 配置
{
        "_id" : "data2",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "192.168.56.13:29019"
                },
                {
                        "_id" : 1,
                        "host" : "192.168.56.14:29020"
                }
        ]
}
> rs.initiate(config)

mongodb分片的使用

添加数据分片到集群中

  • 注意要在router集群节点上操作
[root@centos7-node1 ~]# /usr/local/mongodb/bin/mongo 127.0.0.1:27017
mongos> sh.status()      #状态查询
mongos> sh.addShard("data1/192.168.56.11:29017,192.168.56.12:29018")    #添加数据分片1
mongos> sh.addShard("data2/192.168.56.13:29019,192.168.56.14:29020")   #添加数据分片2
  • 数据操作都是在router上的
mongos> use test    
mongos> for(i=1;i<1000;i++){
... db.myuser.insert({name:"myuser"+i,age:i})
... }
mongos> sh.status()     #可以查看数据存储到哪个数据分片上了
mongos> db.dropDatabase()    #删除数据
  • 针对某个数据库的collection使用hash分片存储,分片存储就会把同一个collection分配两个数据角色
    • 这样会将数据分配到两个数据分片上
mongos> use admin
mongos> db.runCommand({enablesharding:"test"})
mongos> db.runCommand({shardcollection:"test.myuser",key:{_id:"hashed"}})
mongos> use test    #写入数据
mongos> for(i=1;i<=1000;i++){
... db.myuser.insert({name:"myuser"+i,age:i})
... }
WriteResult({ "nInserted" : 1 })
mongos> db.myuser.count()
1000

注意

  • 数据分片要是挂掉的话会丢数据
  • 要开启数据库的分片
  • router和configsvr挂掉一台对集群无影响
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mongoDB分片集群
    • 介绍
      • 组成部分
        • 依赖关系
          • 集群搭建
            • 集群资源规划
            • configsvr的配置
            • 启动服务
            • router的配置
            • shardsvr的配置
          • mongodb分片的使用
            • 添加数据分片到集群中
          • 注意
          相关产品与服务
          云数据库 MongoDB
          腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档