MongoDB分片集群搭建及扩容

### 实验:分片集群搭建及扩容#### 实验目标及流程    * 目标:学习如何搭建一个两分片的分片集群    * 环境:3台Linux虚拟机器,4Core 8GB    * 步骤:        * 配置域名解析        * 准备分片目录        * 创建第一个分片复制集并初始化        * 初始化分片集群,加入第一个分片        * 创建分片表        * 加入第二个分片#### 实验架构    ```    demo1 shard1(Primary|27017) shard2(Primary|27011) Config1(27019) mongos(27017)    ```    ```    demo2 Secondary|27010 Secondary|27011 Config2(27019)    ```    ```    demo3 Secondary|27010 Secondary|27011 Config3(27019)    ```

|       | member1 | member2 | member3 | member4 | member5 | member6 ||-------|---------|---------|---------|---------|---------|---------|| shard1 |  ●     |         |    ●    |         |    ●    |         || shard2 |        |    ●    |         |    ●    |         |    ●    || config |  ●     |         |    ●    |         |    ●    |         || mongos |        |    ●    |         |    ●    |         |    ●    |

    demo1 member1.example.com member2.example.com

    demo2 member3.example.com member4.example.com

    demo3 member5.example.com member6.example.com

1. 配置域名解析    在3台虚拟器上分别执行以下3条命令,注意替换实际IP地址    ```echo "192.168.1.1 demo1 member1.example.com member2.example.com" >> /etc/hostsecho "192.168.1.2 demo2 member3.example.com member4.example.com" >> /etc/hostsecho "192.168.1.3 demo3 member5.example.com member6.example.com" >> /etc/hosts```2. 准备分片目录    在各服务器上创建数据目录,我们用`/data`,请按自己需要修改为其他目录:    - 在member1/member3/member5上执行以下命令:        mkdir -p /data/shard1/        mkdir -p /data/config/    _ 在member2/member4/member6上执行以下命令:        mkdir -p /data/shard2/        mkdir -p /data/mongos/3. 创建第一个分片用的复制集    在member1/member3/member5上执行以下命令```mongod --bind_id 0.0.0.0 --replSet shard1 --dbpath /data/shard1 --logpath/data/shard1/mongod.lgo --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1```4. 初始化第一个分片复制集```mongo --host member1.example.com:27010rs.initiate({    _id : "shard1",    "members": [        {            "_id": 0,            "host": "member1.example.com:27010"        },        {            "_id": 1,            "host": "member3.example.com:27010"        },        {            "_id": 2,            "host": "member5.example.com:27010"        },    ]})```5. 创建config server复制集    在member1/member3/member5上执行以下命令```mongod --bind_id 0.0.0.0 --replSet shard1 --dbpath /data/shard1 --logpath/data/shard1/mongod.lgo --port 27010 --fork --shardsvr --wiredTigerCacheSizeGB 1```6. 初始化config server复制集```mongo --host member1.example.com:27010rs.initiate({    _id : "shard1",    "members": [        {            "_id": 0,            "host": "member1.example.com:27010"        },        {            "_id": 1,            "host": "member3.example.com:27010"        },        {            "_id": 2,            "host": "member5.example.com:27010"        },    ]})```7. 在第一台机器上搭建mongos```# mongos --bind_ip 0.0.0.0 --logpath /data/mongos/mongos.log --port 27017 --fork-- configdb config/member1.example.com:27019,member3.example.com:27019,member5.example.com:27019# 连接到mongos,添加分片# mongo --host member1.example.com:27017mongos>sh.addShard("shard1/member1.example.com:27010,member3.example.com:27010,member5.example.com:27010");```8. 创建分片表```# 连接到mongos,创建分片集合# mongo --host member1.example.com:27017mongos > sh.status();mongos > sh.enableSharding("foo");mongos > sh.shardCollection("foo.bar", {_id:‘hashed‘});mongos > sh.status();插入测试数据use foofor (var i = 0; i < 10000; i++) {    db.bar.insert({i:i});}```9. 创建第2个分片复制集在 member2/member4/member6上执行以下命令```mongod --bind_id 0.0.0.0 --replSet shard2 --dbpath /data/shard2 --logpath /data/shard2/mongod.log --port 27011 --fork --shardsvr --wiredTigerCacheSizeGB 1```10. 初始化第二个分片的复制集```# mongo --host member2.example.com:27011rs.initiate({    _id : "shard2",    "members": [        {            "_id": 0,            "host": "member2.example.com:27011"        },        {            "_id": 1,            "host": "member4.example.com:27011"        },        {            "_id": 2,            "host": "member6.example.com:27011"        },    ]})```11. 加入第2个分片```# 连接到mongos,添加分片# mongo --host member1.example.com:27017mongos> sh.addShard("shard2/member2.example.com:27011,member4.example.com:27011,member6.example.com:27011");mongos>sh.status()```

原文地址:https://www.cnblogs.com/w3liu/p/12520431.html

时间: 2024-08-04 21:21:59

MongoDB分片集群搭建及扩容的相关文章

高可用mongodb集群的学习记录(四mongodb分片集群搭建)

无论oracle还是mysql数据库都有分区的概念,即同一张表物理上不在同一台机器上,有效缓解了表都集中存在一台机器的压力.当然,mongodb也有类似的机制,即是分片.具体理论知识大家可以参考网上文档,我这里只记录下具体操作步骤 参考网络上一个图.我选用的是2个副本集+1个仲裁.实际上我这里分片集群需要3个mongos,3个config server,数据分片3个shard server,对应着还有3个副本,3个仲裁节点,总共需要15个实例.因为我资源确实紧张,又不想影响实验效果.冥思苦想了一

MongoDB 分片集群实战

背景 在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种: 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU.更大的内存.更大容量的磁盘,此种方法虽然成本很高,但是实现比较简单,维护起来也比较方便. 水平扩展:通过使用更多配置一般的服务器来共同承担工作负载,此种方法很灵活,可以根据工作负载的大小动态增减服务器的数量,但是实现比较复杂,得有专门的人员来运维. Databases for MongoDB 试用 IBM Cloud 上提

[ MongoDB ] 分片集群及测试

分片 在Mongodb里面存在另一种集群,就是分片技术,可以满足MongoDB数据量大量增长的需求. 当MongoDB存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量.这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据. 为什么使用分片? 1. 复制所有的写入操作到主节点    2. 延迟的敏感数据会在主节点查询    3. 单个副本集限制在12个节点    4. 当请求量巨大时会出现内存不足.    5. 本地磁盘不足    6. 垂

mongoDB(三) mongoDB分片集群

mongoDB分片集群 介绍 解决数据分片,防止数据丢失生产环境需要擦用分片+副本集的部署方式 组成部分 route: 提供入口,不存储数据 configserver: 存储元数据信息,建议使用副本集 shardserver: 数据存储服务,存储真正数据, 也许要使用副本集 依赖关系 当数据插入时,需要从configsrv知道数据要插入哪个shardsrv分片 当用户获取数据时,需要从configsrv知道数据存储在哪个shardsrv分片 集群搭建 使用同一份mongodb二进制文件 修改对应

Bugsnag的MongoDB分片集群使用经验

Bugsnag是一家为移动应用开发者提供实时的Bug追踪及检测服务的创业公司,Bugsnag已经使用MongoDB存储超过TB级的文档数据.从Bugsnag的第一个版本开始他们就使用MongoDB存储业务数据.近日,Bugsnag的工程师Simon Maynard在博客上分享了他们的MongoDB分片集群经验,并开源了几个他们常使用的脚本. 带标签的分片(Tag Aware Sharding) 带标签的分片是MongoDB 2.2版本中引入的新特性,此特性支持人为控制数据的分片方式,从而使数据存

使用HAProxy作为MongoDB分片集群mongos负载均衡

MongoDB分片集群的入口mongos自身没有failover机制.官方建议是将mongos和应用服务器部署在一起,多个应用服务器就要部署多个mongos实例,这样很是不方便.还可以使用LVS或者HAProxy来实现多个mongos的failover机制,但是一定要注意使用client affinity即客户端关联特性. global     chroot      /data/app_platform/haproxy/share/      log         127.0.0.1 loc

mongodb分片集群突然停电造成一些错误,分片无法启动

今天突然停电使mongodb分片集群造成这种错误,暂时不知道怎么解决,如果 有人知道请回复我 ,现在把记录下来,等后期处理. Fri Aug  8 10:49:52.165 [initandlisten] connection accepted from 172.16.0.115:59542 #2 (2 connections now open)Fri Aug  8 10:49:52.954 [initandlisten] connection accepted from 172.16.0.10

MongoDB高可用复制集分片集群搭建

1     逻辑架构 1.1     逻辑架构图 1.2     组件说明 一.mongos(query routers):查询路由,负责client的连接,并把任务分给shards,然后收集结果.一个集群可以有多个query routers(replica sets),以分担客户端请求(负载均衡). 二.config server:配置服务器.保存了集群的元数据(比如数据放在哪个shards上),query router通过config server中的配置信息决定把任务分配到哪个shards

MongoDB分片集群机制及原理

1. MongoDB常见的部署架构 * 单机版 * 复制集 * 分片集群 2. 为什么要使用分片集群 * 数据容量日益增大,访问性能日渐下降,怎么破? * 新品上线异常火爆,如何支撑更多用户并发? * 单库已有10TB数据,恢复需要1-2天,如何加速? * 地理分布数据 3. 分片如何解决问题? 银行交易表单内10亿笔资料超负荷运转,交易号 0-1,000,000,000 把数据分成两两半,放到两个库里. 交易号:0-500,000,000 交易号:500,000,001-1,000,000,0