①配置服务器

在大型的集群中,建议配置3台配置服务器,就足够用了。启动配置服务器的方式:

1:先创建几个存放数据的文件夹,比如在前面的dbs下面创建confdb文件夹,然后在confdb下面创建confdb1,confdb2,confdb3文件夹;同理在前面的logs下面创建conflogs文件夹

2:然后分别启动这三个配置服务器,使用--configsvr指明是配置服务器,如下:

./mongod --configsvr --dbpath ../dbs/confdb/confdb1 --logpath ../logs/conflog/conflog1 --fork --port 30001

./mongod --configsvr --dbpath ../dbs/confdb/confdb2 --logpath ../logs/conflog/conflog2 --fork --port 30002

./mongod --configsvr --dbpath ../dbs/confdb/confdb3 --logpath ../logs/conflog/conflog3 --fork --port 30003

3:--configsvr默认的端口为27019,默认的数据目录为/data/configdb,可以使用--dbpath和--port自己定义。

4:注意不要使用--replSet选项,配置服务器不是副本集成员。Mongos会向所有的3台配置服务器发送写请求,并确保3台服务器拥有相同的数据。

②启动mongos进程

1:./mongos --configdb localhost:30001,localhost:30002,localhost:30003 --logpath ../logs/conflog/mongoslog --fork

2:可以启动任意多个mongos,通常是一个应用服务器使用一个mongos,也就是说mongos通常与应用服务器运行在一个机器上

3:mongos的默认端口是27017,可以用chunkSize来指定块的大小,默认是200M

③将副本集转换成为分片

1:如果没有副本集,按照前面讲的创建并初始化一个;如果有一个副本集,就打开相应的服务器,把副本集运行起来

2:./mongo localhost:27017

use admin

3:然后连接到mongos,把副本集转换成为分片,示例如下:

sh.addShard("myrepl/127.0.0.1:20001,127.0.0.1:20002");

不用把所有副本集的成员都写出来,mongos会自动检查整个副本集。副本集的名称myrepl就用作了分片的名称。

4:使用sh.status()查看状态,会发现整个副本集里面的服务都加入进来了。

5:注意:添加分片过后,客户端应该连接mongos进行操作,而不是连接副本集了。

6:也可以创建单mongod服务器的分片,但不建议在生产环境中使用

7:至此一个分片就创建好了,然后可以重复步骤,创建一个新的副本集,加入到分片中来

④数据分片

需要明确指定分片的数据库和集合,MongoDB才会对数据进行自动分片。

1:对数据库启用分片

use admin

sh.enableSharding("sd1");   --数据库名

2:然后指定分片的集合,还有分片的键,如果对已经存在的集合进行分片,那么指定的这个分片键上必须有索引;如果集合不存在,mongos会自动在分片键上创建索引。例如:

sh.shardCollection("sd1.users",{"userId":1});--{"userId":1}分片键

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

第42章:MongoDB-集群--Sharding(分片)--单机的搭建的更多相关文章

  1. 第41章:MongoDB-集群--Sharding(分片)

    ①Sharding分片概念 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载. 分片是每个分 ...

  2. Mongodb集群与分片 1

    分片集群   Mongodb中数据分片叫做chunk,它是一个Collection中的一个连续的数据记录,但是它有一个大小限制,不可以超过200M,如果超出产生新的分片.   下面是一个简单的分片集群 ...

  3. mongodb 集群部署--分片服务器搭建

    部署分片服务器 1.分片 为了突破单点数据库服务器的I/O能力限制,对数据库存储进行水平扩展,严格地说,每一个服务器或者实例或者复制集就是一个分片. 2.优势 提供类似现行增·长架构 提高数据可用性 ...

  4. MongoDB集群之分片

    原文:点击打开链接 MongoDB分片 分片(sharding)是将数据拆分,将其分散在不同的机器上的过程.MongoDB支持自动分片 片键(shard key)设置分片时,需要从集合里面选一个键,用 ...

  5. mongodb集群配置分片集群

    测试环境 操作系统:CentOS 7.2 最小化安装 主服务器IP地址:192.168.197.21 mongo01 从服务器IP地址:192.168.197.22 mongo02 从服务器IP地址: ...

  6. Mongodb集群与分片 2

    前面我们介绍了简单的集群配置实例.在简单实例中,虽然MongoDB auto-Sharding解决了海量存储问题,和动态扩容问题,但是离我们在真实环境下面所需要的高可靠性和高可用性还有一定的距离. 下 ...

  7. MongoDB集群之分片技术应用 —— 学习笔记

    课程链接:https://www.imooc.com/learn/501 一.什么是分片? 分片:将数据进行2拆分,将数据水平的分散到不同的服务器上. 二.为什么要分片? 架构上:读写均衡.去中心化 ...

  8. 第43章:MongoDB-集群--Sharding(分片)--多机的搭建

    ①环境准备 服务器规划 服务器[192.168.0.75] 服务器[192.168.0.84] 服务器[192.168.0.86] mongos mongos mongos config server ...

  9. ubuntu docker 下mongodb集群和分片

    首先我们计划启动了三个mongo服务:master,salve,arbiter 1.准备工作 新建文件夹如图(每个文件夹下面有db和configdb文件夹): 生成认证文件并修改权限 openssl ...

随机推荐

  1. Go的CSP并发模型实现:M, P, G

    最近抽空研究.整理了一下Golang调度机制,学习了其他大牛的文章.把自己的理解写下来.如有错误,请指正!!! golang的goroutine机制有点像线程池:        一.go 内部有三个对 ...

  2. 虚拟机安装centOs+网络配置(完整说明)

    1.新建虚拟机(标准)   选择 (我以后下安装操作系统)       选择Linux 操作系统 版本为CentOS(32位)     虚拟机的名称和位置任意       磁盘容量如下即可     设 ...

  3. linux tail 命令详解

    linux ---tail命令 linux中tail命令---用于查看文件内容 最基本的是cat.more和less. 1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /e ...

  4. Linux 实时查看tomcat 日志--less命令

    查看tomcat日志通常用 tail -n  或者 tail -f 或者grep 或者 vi cat等命令去查看异常信息,但是日志是在不停地刷屏,tail是动态的在变的,我们往往期望从日志最后一行往前 ...

  5. (7)linux文件常用操作命令

    ls / 查看根目录下的子节点(文件夹和文件)信息ls -al -a是显示隐藏文件 -l是以更详细的列表形式显示 **切换目录cd /home cd .. 返回上一级 **创建文件夹mkdir aaa ...

  6. Android开发中常见的设计模式(四)——策略模式

    策略模式定义了一些列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变换. 假设我们要出去旅游,而去旅游出行的方式有很多,有步行,有坐火车,有坐飞机等等 ...

  7. halcon批量读取图片

    以前这个代码都是自己写,不仅繁琐,而且容易忘记.其实Halcon中提供了相关的方法.记录一下吧,其实很简单. 读取一个文件夹下的所有图片[助手]>[打开新的image acquisition ] ...

  8. leetcode76

    class Solution: def minWindow(self, s: str, t: str) -> str: n = len(s) if n==0: return "&quo ...

  9. java书籍

    1.«java高并发编程详解 »一本比较详细介绍多线程的书籍,个人感觉比 并发编程思想 这本书详细

  10. Git如何在不提交当前分支的情况下切换到其它分支进行操作——git stash

    假如现在的Bug你还没有解决,而上边又给你派了一个新的Bug,而这个Bug相比较现在正在苦思冥想的Bug比较容易解决. 你想先解决新的Bug,可是之前的Bug还没有解决完而不能提交.怎么办? 解决方法 ...