乐趣区

关于后端:MongoDB-分片集群

每日一句

Medalist don’t grow on trees,you have to nurture them with love, with hard work, with dedication.
金牌选手不会从天而降,你必须用酷爱、刻苦和投入来浇灌他们。

概述

分片(sharding)是一种垮多台机器散布数据的办法,MongoDB 应用分片来反对具备十分大的数据集和高吞吐量操作的部署。

分片 (sharding) 是指将数据拆分,将其扩散存在不同的机器上的过程。有时也用分区 (partitioning) 来示意这个概念。将数据扩散到不同的机器上,不须要功能强大的大型计算机就能够贮存更多的数据,解决更多的负载。

具备大型数据集或高吞吐量应用程序的数据库系统能够会挑战单个服务器的容量。例如,高查问率会耗尽服务器的 CPU 容量。工作集大小大于零碎的 RAM 会强调磁盘驱动器的 I / O 容量。

有两种解决零碎增长的办法:垂直扩大和程度扩大。

  • 垂直扩大意味着减少单个服务器的容量,例如应用更弱小的 CPU,增加更多 RAM 或减少存储空间量。可用技术的局限性可能会限度单个机器对于给定工作负载而言足够弱小。此外,基于云的提供商基于可用的硬件配置具备硬性下限。后果,垂直缩放有理论的最大值。
  • 程度扩大意味着划分零碎数据集并加载多个服务器,增加其余服务器以依据须要减少容量。尽管单个机器的总体速度或容量可能不高,但每台机器解决整个工作负载的子集,可能提供比单个高速大容量服务器更高的效率。扩大部署容量只须要依据须要增加额定的服务器,这可能比单个机器的高端硬件的总体老本更低。MongoDB 反对通过分片进行程度扩大。

组件

MongoDB 分片群集蕴含以下组件:

  • 分片(存储):每个分片蕴含分片数据的子集。每个分片都能够部署为正本集。
  • Mongos(路由):mongos 充当查问路由器,在客户端应用程序和分片集群之间提供接口。
  • config servers:配置服务器存储集群的元数据和配置设置。从 MongoDB3.4 开始,必须将配置服务器部署为正本集(CSRS)

下图形容了分片集群中组件的交互:

MongoDB 在汇合级别对数据进行分片,将汇合数据分布在集群中的分片上。

实例

两个分片节点正本集(3+3)+ 一个配置节点正本集(3)+ 两个路由节点(2),共 11 个服务节点。

分片节点正本集的创立

所有的的配置文件都间接放到 sharded_cluster 的相应的子目录上面,默认配置文件名字:mongod.conf

第一套正本集

1 筹备存放数据和日志的目录

#-----------myshardrs01 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27018/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27018/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27118/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27118/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27218/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27218/data/db

2 新建或批改配置文件:vim /mongodb/sharded_cluster/myshardrs01_27018/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myshardrs01_27018/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myshardrs01_27018/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27018/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27018 
replication: 
  #正本集的名称 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

sharding.clusterRole:

Value Description
configsvr Start this instance as a config server. The instance starts on port 27019 by default.
shardsvr Start this instance as a shard. The instance starts on port 27018 by default.

留神:

设置 sharding.clusterRole 须要 mongod 实例运行复制。要将实例部署为正本集成员,请应用

replSetName 设置并指定正本集的名称。

3 新建或批改配置文件: vim /mongodb/sharded_cluster/myshardrs01_27118/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myshardrs01_27118/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myshardrs01_27118/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27118/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27118 
replication: 
  #正本集的名称 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

4 新建或批改配置文件: vim /mongodb/sharded_cluster/myshardrs01_27218/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myshardrs01_27218/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myshardrs01_27218/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27218/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27218 
replication: 
  #正本集的名称 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

5 启动第一套正本集:一主一副本一仲裁

顺次启动三个 mongod 服务:

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27018/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27118/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27218/mongod.conf

6 初始化正本集和创立主节点

应用客户端命令连贯任意一个节点,但这里尽量要连贯主节点: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27018

执行命令:

# 初始化正本集
> rs.initiate()

# 查看正本集状况
myshardrs01:SECONDARY> rs.status()

# 主节点配置查看
myshardrs01:PRIMARY> rs.conf()

7 增加正本节点和仲裁节点

# 增加从节点
myshardrs01:PRIMARY> rs.add("180.76.159.126:27118")

# 增加仲裁节点
myshardrs01:PRIMARY> rs.addArb("180.76.159.126:27218")

# 查看配置状况
myshardrs01:PRIMARY> rs.conf()

第二套正本集

1 筹备存放数据和日志的目录

#-----------myshardrs01 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27318/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27318/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27418/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27418/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27518/log \ & 
mkdir -p /mongodb/sharded_cluster/myshardrs01_27518/data/db

2 新建或批改配置文件:vim /mongodb/sharded_cluster/myshardrs01_27318/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myshardrs01_27318/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myshardrs01_27318/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27318/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27318 
replication: 
  #正本集的名称 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

3 新建或批改配置文件: vim /mongodb/sharded_cluster/myshardrs01_27418/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myshardrs01_27418/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myshardrs01_27418/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27418/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27418 
replication: 
  #正本集的名称 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

4 新建或批改配置文件: vim /mongodb/sharded_cluster/myshardrs01_27518/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myshardrs01_27518/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myshardrs01_27518/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myshardrs01_27518/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27518 
replication: 
  #正本集的名称 
  replSetName: myshardrs01 
sharding: 
  #分片角色 
  clusterRole: shardsvr

5 启动第一套正本集:一主一副本一仲裁

顺次启动三个 mongod 服务:

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27318/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27418/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myshardrs01_27518/mongod.conf

6 初始化正本集和创立主节点

应用客户端命令连贯任意一个节点,但这里尽量要连贯主节点: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27318

执行命令:

# 初始化正本集
> rs.initiate()

# 查看正本集状况
myshardrs01:SECONDARY> rs.status()

# 主节点配置查看
myshardrs01:PRIMARY> rs.conf()

7 增加正本节点和仲裁节点

# 增加从节点
myshardrs01:PRIMARY> rs.add("180.76.159.126:27418")

# 增加仲裁节点
myshardrs01:PRIMARY> rs.addArb("180.76.159.126:27518")

# 查看配置状况
myshardrs01:PRIMARY> rs.conf()

配置节点正本集创立

1 筹备存放数据和日志的目录

#-----------myshardrs01 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27019/log \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27019/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27119/log \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27119/data/db \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27219/log \ & 
mkdir -p /mongodb/sharded_cluster/myconfigrs_27219/data/db

2 新建或批改配置文件:vim /mongodb/sharded_cluster/myconfigrs_27019/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myconfigrs_27019/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myconfigrs_27019/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27019/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27019 
replication: 
  #正本集的名称 
  replSetName: myconfigrs
sharding: 
  #分片角色 
  clusterRole: configsvr

3 新建或批改配置文件: vim /mongodb/sharded_cluster/myconfigrs_27119/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myconfigrs_27119/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myconfigrs_27119/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27119/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27119
replication: 
  #正本集的名称 
  replSetName: myconfigrs
sharding: 
  #分片角色 
  clusterRole: configsvr

4 新建或批改配置文件: vim /mongodb/sharded_cluster/myconfigrs_27219/mongod.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/myconfigrs_27219/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/myconfigrs_27219/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/myconfigrs_27219/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27219 
replication: 
  #正本集的名称 
  replSetName: myconfigrs
sharding: 
  #分片角色 
  clusterRole: configsvr

5 启动第一套正本集:一主一副本一仲裁

顺次启动三个 mongod 服务:

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myconfigrs_27019/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myconfigrs_27119/mongod.conf

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/myconfigrs_27219/mongod.conf

6 初始化正本集和创立主节点

应用客户端命令连贯任意一个节点,但这里尽量要连贯主节点: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27219

执行命令:

# 初始化正本集
> rs.initiate()

# 查看正本集状况
myshardrs01:SECONDARY> rs.status()

# 主节点配置查看
myshardrs01:PRIMARY> rs.conf()

7 增加两个正本节点

# 增加从节点
myshardrs01:PRIMARY> rs.add("180.76.159.126:27119")
myshardrs01:PRIMARY> rs.add("180.76.159.126:27219")

# 查看配置状况
myshardrs01:PRIMARY> rs.conf()

路由节点的创立

第一个路由节点

1 筹备存放数据和日志的目录

#-----------mongos01
mkdir -p /mongodb/sharded_cluster/mymongos_27017/log

2 新建或批改配置文件:vi /mongodb/sharded_cluster/mymongos_27017/mongos.conf

systemLog: 
  #MongoDB 发送所有日志输入的指标指定为文件 
  destination: file
  #mongod 或 mongos 应向其发送所有诊断日志记录信息的日志文件的门路 
  path: "/mongodb/sharded_cluster/mymongos_27017/log/mongod.log" 
  #当 mongos 或 mongod 实例重新启动时,mongos 或 mongod 会将新条目附加到现有日志文件的开端。logAppend: true 
storage: 
  #mongod 实例存储其数据的目录。storage.dbPath 设置仅实用于 mongod。dbPath: "/mongodb/sharded_cluster/mymongos_27017/data/db" 
  journal: 
    #启用或禁用持久性日志以确保数据文件放弃无效和可复原。enabled: true 
processManagement: 
  #启用在后盾运行 mongos 或 mongod 过程的守护过程模式。fork: true 
  #指定用于保留 mongos 或 mongod 过程的过程 ID 的文件地位,其中 mongos 或 mongod 将写入其 PID 
  pidFilePath: "/mongodb/sharded_cluster/mymongos_27017/log/mongod.pid" 
net:
  #服务实例绑定所有 IP,有副作用,正本集初始化的时候,节点名字会主动设置为本地域名,而不是 ip 
  #bindIpAll: true 
  #服务实例绑定的 IP 
  bindIp: localhost,192.168.0.2 
  #bindIp 
  #绑定的端口 
  port: 27017 
sharding: 
  #指定配置节点正本集 
  configDB: myconfigrs/180.76.159.126:27019,180.76.159.126:27119,180.76.159.126:27219

3 启动 mongod 服务:

/usr/yltrcc/mongodb/bin/mongod -f /mongodb/sharded_cluster/mymongos_27017/mongos.conf

4 客户端登录 mongos: /usr/yltrcc/mongodb/bin/mongo --host 180.76.159.126 --port 27017

通过路由节点操作,当初只是连贯了配置节点,还没有连贯分片数据节点,因而无奈写入业务数据。

5 在路由节点上进行分片配置操作

增加分片sh.addShard("IP:Port")

# 增加第一套正本集
sh.addShard("myshardrs01/192.168.0.2:27018,180.76.159.126:27118,180.76.159.126:2 7218")

# 增加第二套正本集
sh.addShard("myshardrs02/192.168.0.2:27318,180.76.159.126:27418,180.76.159.126:2 7518")

提醒:如果增加分片失败,须要先手动移除分片,查看增加分片的信息的正确性后,再次增加分片。

移除分片参考(理解):

use admin 
db.runCommand({ removeShard: "myshardrs02"} )

开启分片性能: sh.enableSharding("库名")sh.shardCollection("库名. 汇合名",{"key":1})

在 mongos 上的 articledb 数据库配置 sharding

sh.enableSharding("articledb")

# 查看分片状态
 sh.status()

汇合分片:对汇合分片,你必须应用 sh.shardCollection() 办法指定汇合和分片键。

语法格局:sh.shardCollection(namespace, key, unique)

参数阐明:

Parameter Type Description
namespace string 要(分片)共享的指标汇合的命名空间,格局:<database>.<collection>
key document 用作分片键的索引标准文档。shard 键决定 MongoDB 如何在 shard 之间散发文档。除非汇合为空,否则索引必须在 shard collection 命令之前存在。如果汇合为空,则 MongoDB 在对汇合进行分片之前创立索引,前提是反对分片键的索引不存在。简略的说:由蕴含字段和该字段的索引遍历方向的文档组成。
unique boolean 当值为 true 状况下,片键字段上会限度为确保是惟一索引。哈希策略片键不反对惟一索引。默认是 false。

6 分片后插入数据测试

7 减少另一个路由节点

美文佳句

电影散场,影院里的观众皆唏嘘而去。我和太太看到最初,直到音乐的休止落下、字幕拉到最底部。我仿佛不能残缺记住险象环生的情节,但那印度电影的唯美音乐,和尽管处于隐线却素来没有放弃追赶的恋情,让我喜爱和回味。

你好,我是 yltrcc,日常分享技术点滴,欢送关注我的公众号:ylcoder

退出移动版