Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何部署 MongoDB 集群

如何部署 MongoDB 集群

原创
作者头像
Mr.Crypto
修改于 2018-11-01 06:53:44
修改于 2018-11-01 06:53:44
3.3K00
代码可运行
举报
运行总次数:0
代码可运行

MongoDB是一个领先的非关系型数据库管理系统,也是NoSQL运动的重要成员。MongoDB不是使用关系数据库管理系统(RDBMS)的表和固定模式,而是在文档集合中使用键值存储。它还支持许多在大型生产环境中进行水平扩展的选项。

本文将带您构建MongoDB的集群。您需要至少六个节点,需要在每一个节点上安装MongoDB。并在每个服务器上进行保护措施。如果您还没有腾讯云的服务器,可以先点击这里进行免费套餐的试用。免费套餐包含企业版和个人版,超过11款热门产品和42款长期免费的云产品可以供您选择。如果您有长期搭建服务器的需求的话,可以点击这里进行服务器的购买,现在的促销力度很大哦。

集群架构

在开始之前,让我们回顾一下我们将要创建的设置的组件:

  • 配置服务器 - 存储群集其余部分的元数据和配置设置。在本指南中,为简单起见,我们将使用一个配置服务器,但在生产环境中,这应该是至少三个节点的副本集。
  • 查询路由器 - mongos守护程序充当客户端应用程序和集群分片之间的接口。由于数据分布在多个服务器之间,因此需要将每个查询路由到存储给定信息的分片。查询路由器在应用程序服务器上运行。在本指南中,我们将只使用一个查询路由器,您应该在群集中的每个应用程序服务器上放置一个。
  • 碎片 - 碎片只是一个包含部分数据的数据库服务器。数据库中的项目通过范围或散列分割为碎片,我们将在本指南的后面部分进行说明。为简单起见,我们将在示例中使用两个单服务器分片。

此配置中的问题是,如果其中一个分片服务器遇到停机,则部分数据将变为不可用。为避免这种情况,您可以为每个分片使用副本集以确保高可用性。

配置主机文件

如果您的Linode都位于同一个数据中心,我们建议为每个节点添加一个私有IP地址,并避免通过公共互联网传输数据。如果您不使用私有IP地址,请务必使用腾讯云 SSL证书加密数据。

在群集中的每个CVM上,将以下内容添加到/etc/hosts文件中:

  • / etc / hosts文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
192.0.2.1    mongo-config-1
192.0.2.2    mongo-config-2
192.0.2.3    mongo-config-3
192.0.2.4    mongo-query-router
192.0.2.5    mongo-shard-1
192.0.2.6    mongo-shard-2

将上面的IP地址替换为每个CVM的IP地址。还要在群集中使用CVM的主机名替换上面的主机名。

注意 您还可以为每个主机配置DNS记录,而不是使用主机文件条目。但请注意,公共DNS服务器仅支持公共IP地址。

设置MongoDB身份验证

在本节中,您将创建一个密钥文件,用于保护副本集成员之间的身份验证。虽然在此示例中您将使用生成的密钥文件openssl,但MongoDB建议使用X.509证书来保护生产系统之间的连接。

创建管理用户

  1. 在您打算用作配置服务器副本集的主要成员的Linode 上,登录到mongoshell:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mongo
  1. 连接admin数据库:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use admin
  1. 创建具有root权限的管理用户。将“密码”替换为您选择的强密码:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.createUser({user: "mongo-admin", pwd: "password", roles:[{role: "root", db: "admin"}]})

生成密钥文件

  1. 发出此命令以生成密钥文件:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
openssl rand -base64 756 > mongo-keyfile

生成密钥后,将其复制到副本集的每个节点上。

  1. 应该在副本集的每个成员上执行本节中的其余步骤,以便它们都具有位于同一目录中的密钥文件,具有相同的权限。创建/opt/mongo存储密钥文件的目录:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mkdir /opt/mongo
  1. 假设您的密钥文件位于用户的主目录下,请将其移至/opt/mongo,并为其分配正确的权限:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo mv ~/mongo-keyfile /opt/mongo
sudo chmod 400 /opt/mongo/mongo-keyfile
  1. 更新密钥文件的所有权,以使其属于MongoDB用户。使用适当的命令进行分发:

Ubuntu / Debian:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chown mongodb:mongodb /opt/mongo/mongo-keyfile

CentOS的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo chown mongod:mongod /opt/mongo/mongo-keyfile
  1. 添加密钥文件后,取消注释每个Linode上Security/etc/mongod.conf文件部分,并添加以下值:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
security:
keyFile: /opt/mongo/mongodb-keyfile

要应用更改,请重新启动mongod

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl restart mongod

您可以在查询路由器上跳过此步骤,因为您将在本指南的后面为其创建单独的配置文件。请注意,密钥文件身份验证会自动启用基于角色的访问控制,因此您需要创建用户并为其分配访问数据库所需的权限。

初始化配置服务器

在本节中,我们将创建一组配置服务器副本。配置服务器存储数据的状态和组织的元数据。这包括有关数据块位置的信息,这很重要,因为数据将分布在多个分片中。

我们将使用副本集来确保元数据的完整性,而不是使用单个配置服务器。这样可以在三台服务器之间进行主从(主 - 从)复制,并自动进行故障转移,这样,如果主配置服务器关闭,将选出一个新服务器并继续处理请求。

除非另有说明,否则应在每个配置服务器上单独执行以下步骤。

  1. 在每个配置服务器上,修改以下值/etc/mongod.conf
  • /etc/mongod.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
port: 27019
bindIp: 192.0.2.1

bindIp地址应与您在上一节中为hosts文件中的每个配置服务器配置的IP地址相匹配。除非您已配置SSL / TLS加密,否则这应该是专用IP地址。

  1. 取消注释该replication部分,并在其replSetName下添加指令以为配置服务器创建副本集:
  • /etc/mongod.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
replication:
  replSetName: configReplSet

configReplSet是要配置的副本集的名称。可以修改此值,但我们建议您使用描述性名称来帮助您跟踪副本集。

  1. 取消注释该sharding部分并将主机在集群中的角色配置为配置服务器:
  • /etc/mongod.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sharding:
  clusterRole: "configsvr"
  1. 完成mongod这些更改后重新启动服务:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl restart mongod
  1. 其中一个配置服务器CVM上,通过端口27019与管理用户连接到MongoDB shell:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mongo mongo-config-1:27019 -u mongo-admin -p --authenticationDatabase admin

如果您使用与我们的示例不同的命名约定,请修改主机名以匹配您自己的主机名。mongo在此示例中,我们将连接到第一个配置服务器上的shell,但您可以连接到群集中的任何配置服务器,因为我们将从同一连接添加每个主机。

  1. mongoshell中,初始化副本集:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rs.initiate( { _id: "configReplSet", configsvr: true, members: [ { _id: 0, host: "mongo-config-1:27019" }, { _id: 1, host: "mongo-config-2:27019" }, { _id: 2, host: "mongo-config-3:27019" } ] } )

您可以替换您自己的主机名。您应该看到一条消息,指示操作成功:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ "ok" : 1 }
  1. 请注意,MongoDB shell提示符现在已更改为configReplSet:PRIMARY>configReplSet:SECONDARY>,具体取决于您用于运行先前命令的Linode。要进一步验证是否已将每个主机添加到副本集:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rs.status()

如果已正确配置副本集,您将看到类似于以下内容的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
configReplSet:SECONDARY> rs.status()
{
    "set" : "configReplSet",
    "date" : ISODate("2016-11-22T14:11:18.382Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "configsvr" : true,
    "heartbeatIntervalMillis" : NumberLong(2000),
    "members" : [
        {
            "_id" : 0,
            "name" : "mongo-config-1:27019",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 272,
            "optime" : {
                "ts" : Timestamp(1479823872, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2016-11-22T14:11:12Z"),
            "infoMessage" : "could not find member to sync from",
            "electionTime" : Timestamp(1479823871, 1),
            "electionDate" : ISODate("2016-11-22T14:11:11Z"),
            "configVersion" : 1,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "mongo-config-2:27019",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 17,
            "optime" : {
                "ts" : Timestamp(1479823872, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2016-11-22T14:11:12Z"),
            "lastHeartbeat" : ISODate("2016-11-22T14:11:17.758Z"),
            "lastHeartbeatRecv" : ISODate("2016-11-22T14:11:14.283Z"),
            "pingMs" : NumberLong(1),
            "syncingTo" : "mongo-config-1:27019",
            "configVersion" : 1
        },
        {
            "_id" : 2,
            "name" : "mongo-config-3:27019",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 17,
            "optime" : {
                "ts" : Timestamp(1479823872, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2016-11-22T14:11:12Z"),
            "lastHeartbeat" : ISODate("2016-11-22T14:11:17.755Z"),
            "lastHeartbeatRecv" : ISODate("2016-11-22T14:11:14.276Z"),
            "pingMs" : NumberLong(0),
            "syncingTo" : "mongo-config-1:27019",
            "configVersion" : 1
        }
    ],
    "ok" : 1
}

配置查询路由器

在本节中,我们将设置MongoDB查询路由器。查询路由器从配置服务器获取元数据,对其进行缓存,并使用该元数据将读取和写入查询发送到正确的分片。

此处的所有步骤都应该从您的查询路由器CVM执行(这将与您的应用程序服务器相同)。由于我们只配置一个查询路由器,因此我们只需要执行一次。但是,也可以使用副本集查询路由器。如果您使用多个(即,在高可用性设置中),请在每个查询路由器Linode上执行这些步骤。

  1. 创建一个名为/etc/mongos.conf的新配置文件,并提供以下值:
  • /etc/mongos.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongos.log
​
# network interfaces
net:
port: 27017
bindIp: 192.0.2.4security:
keyFile: /opt/mongo/mongodb-keyfile
​
sharding:
configDB: configReplSet/mongo-config-1:27019,mongo-config-2:27019,mongo-config-3:27019

替换192.0.2.4路由器CVM的专用IP地址,并保存文件。

  1. 使用以下信息为mongos被调用创建新的systemd单元文件/lib/systemd/system/mongos.service
  • /lib/systemd/system/mongos.service
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Unit]
Description=Mongo Cluster Router
After=network.target
​
[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongos --config /etc/mongos.conf
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false[Install]
WantedBy=multi-user.target

请注意,上面的示例使用的mongodb是MongoDB在Ubuntu和Debian上默认运行的用户。如果您使用的是CentOS,请在文件Service部分下面替换以下值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Service]
User=mongod
Group=mongod
  1. mongos服务需要获得与冲突的数据锁mongod,所以一定要mongod在继续之前停止:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl stop mongod
  1. 启用mongos.service以便在重新启动时自动启动,然后初始化mongos
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl enable mongos.service
sudo systemctl start mongos
  1. 确认mongos正在运行:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl status mongos

您应该看到与此类似的输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Loaded: loaded (/lib/systemd/system/mongos.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2017-01-31 19:43:05 UTC; 10s ago
Main PID: 3901 (mongos)
CGroup: /system.slice/mongos.service
    └─3901 /usr/bin/mongos --config /etc/mongos.conf

将碎片添加到群集

现在查询路由器能够与配置服务器通信,我们必须启用分片,以便查询路由器知道哪些服务器将托管分布式数据以及任何给定数据所在的位置。

  1. 登录每个分片服务器并更改MongoDB配置文件中的以下行:
  • /etc/mongod.conf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bindIp: 192.0.2.5

此行中的IP地址应更改为与hosts文件中的IP地址对应的地址(因为在我们的设置中将进行地址解析)。例如,如果您使用专用IP地址将分片连接到查询路由器,请使用您的专用IP地址。如果您已配置SSL / TLS加密并计划使用公共IP地址,请使用加密。

  1. 从您的一个分片服务器,连接到我们在上面配置的查询路由器:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mongo mongo-query-router:27017 -u mongo-admin -p --authenticationDatabase admin

如果查询路由器具有不同的主机名,请在命令中替换它。

  1. mongos界面中,单独添加每个分片:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh.addShard( "mongo-shard-1:27017" )
sh.addShard( "mongo-shard-2:27017" )

这些步骤都可以通过单一mongos连接完成; 您不需要单独登录每个分片并建立连接以添加新分片。如果您使用的是两个以上的分片,则可以使用此格式添加更多分片。如果合适,请务必在上面的命令中修改主机名。

  1. (可选)如果为每个分片而不是单个服务器配置了副本集,则可以在此阶段使用类似命令添加它们:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh.addShard( "rs0/mongo-repl-1:27017,mongo-repl-2:27017,mongo-repl-3:27017" )

在此格式中,rs0是第一个分片的副本集mongo-repl-1的名称,是分片中第一个主机的名称(使用端口27017),依此类推。您需要为每个单独的副本集分别运行上述命令。

注意 在将副本集添加为分片之前,必须先自行配置副本集。

配置分片

在此阶段,群集的组件都已连接并相互通信。最后一步是启用分片。由于MongoDB中的数据组织,启用分片会分阶段进行。要了解数据的分发方式,让我们简要回顾一下主要的数据结构:

  • 数据库 - MongoDB中最广泛的数据结构,用于保存相关数据组。
  • 集合 - 类似于传统关系数据库系统中的表,集合是包含数据库的数据结构
  • 文档 - MongoDB中最基本的数据存储单元。文档使用JSON格式使用可由应用程序查询的键值对来存储数据

在数据库级别启用分片

首先,我们将在数据库级别启用分片,这意味着给定数据库中的集合可以分布在不同的分片中。

  1. 访问查询路由器上的mongosshell。这可以从群集中的任何服务器完成:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mongo mongo-query-router:27017 -u mongo-admin -p --authenticationDatabase admin

如果适用,请替换您自己的查询路由器的主机名。

  1. mongosshell中,创建一个新数据库。我们称之为exampleDB
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use exampleDB
  1. 在新数据库上启用分片:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh.enableSharding("exampleDB")
  1. 要验证分片是否成功,请先切换到config数据库:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use config

接下来,find()在您的数据库上运行一个方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.databases.find()

这将返回所有数据库的列表,其中包含有关它们的一些信息。在我们的例子中,我们刚创建的exampleDB数据库应该只有一个条目:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{ "_id" : "exampleDB", "primary" : "shard0001", "partitioned" : true }

分片策略

在为集合启用分片之前,我们需要决定分片策略。当数据在分片之间分配时,MongoDB需要一种方法对其进行排序并知道哪些数据在哪个分片上。为此,它使用分片mongos查询路由器可以接收到给定数据的存储位置。两种最常见的分片策略是基于范围和基于散列的。

有关更多信息,请参阅MongoDB关于分片的文档

在收集级别启用分片

现在数据库可用于分片,我们需要在收集级别启用分片。这允许集合中的文档在分片中分发。为简单起见,我们将使用基于散列的分片策略。

注意 并不总是需要对数据库中的每个集合进行分片。根据每个集合包含的数据,将某些集合存储在一个位置可能更有效,因为对单个分片的数据库查询更快。在对集合进行分片之前,请仔细分析其预期内容以及应用程序将使用的方式。

  1. 请连接到查询路由器上的mongoshell:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mongo mongo-query-router:27017 -u mongo-admin -p --authenticationDatabase admin
  1. 切换到我们之前创建的exampleDB数据库:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use exampleDB
  1. 创建一个名为exampleCollection的新集合并哈希其_id密钥。该_id键已经被默认创建为新文档的基本指标:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.exampleCollection.ensureIndex( { _id : "hashed" } )
  1. 最后,分片集合:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sh.shardCollection( "exampleDB.exampleCollection", { "_id" : "hashed" } )

测试集群

此部分是可选的。为了确保您在上面配置的示例数据库和集合中均匀分布数据,您可以按照以下步骤生成一些基本测试数据,并查看它在分片之间的划分方式。

  1. 请连接到查询路由器上的mongoshell:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mongo mongo-query-router:27017 -u mongo-admin -p --authenticationDatabase admin
  1. 切换到您的exampleDB数据库:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
use exampleDB
  1. mongoshell中运行以下代码以生成500个简单文档并将其插入exampleCollection
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (var i = 1; i <= 500; i++) db.exampleCollection.insert( { x : i } )
  1. 检查您的数据分布:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.exampleCollection.getShardDistribution()

这将输出类似于以下内容的信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Shard shard0000 at mongo-shard-1:27017
 data : 8KiB docs : 265 chunks : 2
 estimated data per chunk : 4KiB
 estimated docs per chunk : 132

Shard shard0001 at mongo-shard-2:27017
 data : 7KiB docs : 235 chunks : 2
 estimated data per chunk : 3KiB
 estimated docs per chunk : 117

Totals
 data : 16KiB docs : 500 chunks : 4
 Shard shard0000 contains 53% data, 53% docs in cluster, avg obj size on shard : 33B
 Shard shard0001 contains 47% data, 47% docs in cluster, avg obj size on shard : 33B

Shard开头的部分提供有关群集中每个分片的信息。由于我们只添加了两个分片,因此只有两个分区,但如果您向群集添加更多分片,它们也会显示在此处。该Totals部分提供有关整个集合的信息,包括其在分片中的分布。请注意,分布并不完全相同。散列函数不保证绝对均匀分布,但是它通常会非常接近。

  1. 完成后,删除测试数据:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.dropDatabase()

结论

至此,您已经部署了一个完整的MongoDB集群。若您觉得部署过程过于复杂,推荐您试用腾讯云数据库 MongoDB,腾讯云数据库 MongoDB(TencentDB for MongoDB) 是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100% 完全兼容 MongoDB 协议,同时高度兼容 DynamoDB 协议,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,使您无需自建灾备体系及控制管理系统。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MongoDB的集群模式–Sharding(分片)
分片是数据跨多台机器存储,MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作的部署。
星哥玩云
2022/08/18
1.4K0
MongoDB的集群模式–Sharding(分片)
使用MongoDB构建数据库集群
MongoDB是一个领先的非关系型数据库管理系统,也是NoSQL运动的重要成员。MongoDB不是使用关系数据库管理系统(RDBMS)的表和固定模式,而是在文档集合中使用键值存储。它还支持许多在大型生产环境中进行水平扩展的选项。在本指南中,我们将解释如何为高可用性分布式数据集设置分片集群。
杜逸先
2018/09/06
2.8K0
使用MongoDB构建数据库集群
Mongodb7.0.14集群分片部署
MongoDB 集群分片是一种水平扩展数据库的方法,通过将数据分布在多个物理服务器上,提高系统的性能和可扩展性。分片的核心思想是将数据分成多个部分(称为“分片”),每个分片存储在不同的服务器上,从而分散负载,提高查询和写入性能。
DBA实战
2024/10/10
3650
Mongodb7.0.14集群分片部署
MongoDB教程(七):mongoDB分片
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
用户11147438
2024/07/20
5280
mongodb4.0.2分片集群部署
2018年11月14日 11:05:50 Full Stack Developer 阅读数 331
拓荒者
2019/09/18
6370
mongodb4.0.2分片集群部署
Mongodb集群部署(下)
先启动配置服务器和分片服务器,后启动路由实例启动路由实例:(mongo1,mongo2,mongo3)
陈不成i
2021/06/17
6360
MongoDB之分片集群(Sharding)
分片(sharding)是一个通过多台机器分配数据的方法。MongoDB使用分片支持大数据集和高吞吐量的操作。大数据集和高吞吐量的数据库系统挑战着单一服务的性能。例如:高查询率将耗尽CPU的性能。大于系统RAM的工作集将给磁盘的IO很大的压力。
小忽悠
2018/08/27
1.1K0
MongoDB分片集群部署(三)
四、shard1安装配置 4.1、创建目录 mkdir -p /work/mongo-cluster/shard1/{bin,data,conf,logs,keys} 4.2、编辑启动脚本 vim /work/mongo-cluster/shard1/bin/start.sh 内容 docker run -d --name shard1 \ --network=host \ --log-opt max-size=10m \ -v /etc/timezone:/
堕落飞鸟
2022/02/24
2940
Mongodb主从复制/ 副本集/分片集群介绍
前面的文章介绍了Mongodb的安装使用,在 MongoDB 中,有两种数据冗余方式,一种 是 Master-Slave 模式(主从复制),一种是 Replica Sets 模式(副本集)。 Mongodb一共有三种集群搭建的方式: Replica Set(副本集)、 Sharding(切片) Master-Slaver(主从)【目前已不推荐使用了!!!】 其中,Sharding集群也是三种集群中最复杂的。 副本集比起主从可以实现故障转移!!非常使用! mongoDB目前已不推荐使用主从模式,取而代之的
洗尽了浮华
2018/01/22
17.9K2
Mongodb主从复制/ 副本集/分片集群介绍
Mongodb 分片集群搭建
一、MongoDB分片介绍 一般的像小型企业和业务量不是太大的集群架构,我们使用MongoDB分片就可以足够满足业务需求,或者随着业务的不断增长我们多做些副本集也是可以解决问题,多搞几个主从就可以了。还有一种情况是,类似于腾讯或者阿里有着庞大的集群以及业务量和数据量,不可能一个库分成多个库,其实MongoDB也有这种功能叫做分片,也就是今天所用到的!如下: 分片就是将数据库进行拆分,将大型集合分隔到不同服务器上。比如,本来100G的数据,可以分割成10份存储到10台服务器上,这样每台机器只有10G的数据。
老七Linux
2018/05/09
1.9K0
听说MongoDB你很豪横?-------------MongoDB 部署分片群集以及管理分片
主从复制和副本集区别 主从集群和制本集最大的区别就是副本集没有固定的“主节点";整个集群会选出一个主节点当其挂掉后,又在剩下的从节点中选中其他节点为"主节点"。副本集总有一个活跃点(主primary和一 个或多个备份节点(从secondary)。
不吃小白菜
2020/09/15
6920
MongoDB 4.0 Sharded Cluster部署
针对MongoDB的监控除了使用第三方软件外,强烈推荐是官方提供的Ops Manager,如下图所示:
星哥玩云
2022/08/17
3500
MongoDB 4.0 Sharded Cluster部署
MongoDB集群架构之分片+副本集架构
在热门的NoSQL数据库MongoDB中,还支持一种分片+副本集架构的集群。本文将介绍分片+副本集架构的集群的相关概念以及环境搭建工作,同时介绍了标签分片在这种架构中的应用。
星哥玩云
2022/08/17
1.3K0
MongoDB集群架构之分片+副本集架构
【最佳实践】高可用mongodb集群(1分片+3副本):规划及部署
结合我们的生产需求,本次详细整理了最新版本 MonogoDB 7.0 集群的规划及部署过程,具有较大的参考价值,基本可照搬使用。
雪人
2023/10/11
2.6K1
MongoDB 分片集群部署
在生产环境中,通常情况使用副本集就够了(使用配置文件部署副本集可跳转:5.x 副本集部署,使用命令行部署副本集可参考这篇文章)。除非容量非常大,并发访问非常高,副本集已经无法正常提供服务时,才建议考虑使用分片。这一节内容就来聊聊 MongoDB 分片。
数据库交流
2022/04/25
1.6K0
MongoDB 分片集群部署
MongoDB集群架构之分片架构
本文介绍了热门的NoSQL数据库Mongodb的分片架构模式的相关概念以及分片环境搭建方法。分片就是在分布式数据架构中常见的Sharding这个词。Mongodb分片的方式包括范围分片、哈希分片和标签分片三种。
星哥玩云
2022/08/17
1.3K0
MongoDB集群架构之分片架构
MongoDB分片集群
MongoDB是一个开源的NoSQL文档数据库,它支持水平扩展,其中一种水平扩展方法是通过分片集群。在这篇文章中,我们将详细介绍如何搭建MongoDB分片集群,并提供相关示例。
玖叁叁
2023/04/14
7810
MongoDB分片集群部署(六)
创建用户,该用户在集群环境中可见(相当于单机版root用户,用于创建用户,数据库等操作)
堕落飞鸟
2022/02/24
4240
搭建 MongoDB分片(sharding) / 分区 / 集群环境
分别在每台机器建立conf、mongos、config、shard1、shard2、shard3六个目录,因为mongos不存储数据,只需要建立日志文件目录即可。
程序员鹏磊
2018/02/02
3.5K0
linux安装MongoDB分片集群
在开始部署MongoDB分片集群之前,需要在每台服务器上安装MongoDB。您可以按照MongoDB官方文档提供的指南来安装MongoDB。这里提供一个简单的步骤:
玖叁叁
2023/04/14
1.4K0
相关推荐
MongoDB的集群模式–Sharding(分片)
更多 >
LV.3
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档