MongoDB搭建高可用集群的完整步骤(3个分片+3个副本)

下面是MongoDB搭建高可用集群的完整步骤(3个分片+3个副本)攻略及两条示例说明:

1. 准备工作

在开始搭建高可用的MongoDB集群之前,你需要先完成以下准备工作:

  • 安装MongoDB的版本号为3.6及以上的版本;
  • 确定你要选择的分片和副本集的数量;
  • 确认服务器防火墙的设置;
  • 确认MongoDB集群服务器能够相互之间进行网络通讯。

2. 建立MongoDB集群

步骤 1:创建多个路由

创建多个路由(mongoS):在集群中创建多个路由,每个路由都是由mongos进程构建而成的。它们负责将客户端请求和MongoDB节点交互。

以下是创建3个路由的示例配置文件:

net:
  bindIp: 127.0.0.1
  port: 27017
sharding:
  configDB: cfg0/localhost:27017,localhost:27018,localhost:27019
systemLog:
  destination: file
  path: /var/log/mongos/mongos.log
  logAppend: true

将以上配置文件保存为cfg0.conf、cfg1.conf和cfg2.conf,然后使用以下命令启动每个配置文件的路由进程:

mongos --config cfg0.conf
mongos --config cfg1.conf
mongos --config cfg2.conf

步骤 2:建立Shard节点

为MongoDB集群建立分片Shard节点,具体步骤如下:

  1. 创建一个配置文件。
sharding:
  clusterRole: shardsvr
  replSetName: shard1
net:
  bindIp: "${IP}"
  port: 27018
systemLog:
  destination: file
  path: /var/log/mongodb/shard1.log
  logAppend: true
storage:
  dbPath: /data/db/shard1

将配置文件保存在/etc/mongod.d/shard1.cfg文件中,并重复上述操作以创建更多的分片节点。

  1. 运行配置文件来启动一个mongod进程。
mongod -f /etc/mongod.d/shard1.cfg
  1. 创建一个副本集。
rs.initiate({_id: "shard1", members: [{_id: 0, host: "127.0.0.1:27018"},{_id: 1, host: "127.0.0.1:27019"},{_id: 2, host: "127.0.0.1:27020",arbiterOnly:true}]})

注意:上述示例中,其中一台机器标记为“arbiter”,因为它仅负责投票而没有数据。

执行以上操作,即可为你的MongoDB集群建立充足的分片Shard节点。

步骤 3:构建副本集(Replica Set)

MongoDB副本集是一组运行同一个数据集的mongod进程。从副本集中的一个节点拷贝数据,保证可以在副本集中的其他成员出现故障时,进行切换。

  1. 安装MongoDB的准备工作。
yum install -y mongodb-org-server 
  1. 配置MongoDB的初始化脚本。
storage:
  dbPath: /data/mongodb/data
  journal:
    enabled: true
systemLog:
  destination: file
  path: /data/mongodb/log/mongodb.log
  logAppend: true
processManagement:
  fork: true
  pidFilePath: /data/mongodb/mongod.pid
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27017
  bindIp: 0.0.0.0
replication:
  replSetName: mogo

将以上配置文件保存在/etc/mongod.d/mogor.vm.com.cfg文件中。

  1. 启动MongoDB并初始化ReplSet
mongod -f /etc/mongod.d/mogor.vm.com.cfg --replSet mogo
  1. 初始化一个ReplSet
rs.initiate({_id: "mogo", members: [{_id: 0, host: "192.168.17.3:27017"}, {_id: 1, host: "192.168.17.3:27018"}, {_id: 2, host: "192.168.17.3: 27019", arbiterOnly:true}]})

现在,你的MongoDB集群应该已经成功构建起来了。

示例说明

示例 1:如何通过MongoDB驱动程序连接并操作集群

from pymongo import MongoClient
from pymongo.errors import ConnectionFailure
import ssl

def conn_mongo():
    uri = "mongodb://"
    username = "USERNAME"
    password = "PASSWORD"
    authSource = "AUTHSOURCE"
    sslRequired = True
    cert_reqs = ssl.CERT_NONE
    uri += username + ":" + password + "@" + LOADBALANCER  + "/?authSource=" + authSource + "&sslRequired=" + str(sslRequired)
    ssl_context = ssl.create_default_context()
    ssl_context.check_hostname = False
    ssl_context.verify_mode = cert_reqs

    try:
        client = MongoClient(uri, ssl=ssl_context)
        client.admin.command('ping')
        return client
    except ConnectionFailure:
        print("Connection to the MongoDB Instance Failed")

这个例子展示了如何通过Python中的MongoDB驱动程序连接到一个MongoDB集群。请注意,我们使用了SSL/TLS保证安全性。

示例 2:如何使用MongoDB中的sh.status()方法检查集群状态

sh.status()

要检查你的集群状态是否正常,可以在MongoDB shell中运行上面的命令。如果你的集群状态正常,它将返回一个包含有关运行正常的Shard节点和副本集的信息。否则,它将返回有关集群状态错误的信息。

希望这篇攻略能够对你建立MongoDB集群有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MongoDB搭建高可用集群的完整步骤(3个分片+3个副本) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 什么是数据库索引 有哪些类型和特点

    下面是关于“什么是数据库索引,有哪些类型和特点”的详细讲解。 什么是数据库索引? 数据库索引是一种数据结构,用于快速查找数据库中的记录。它类似于图书馆的书目索引,可以快速定位到需要查询的书籍。 在数据库中,数据通常以表格的形式存储。每个表格都包含多行数据,每行数据包含多个字段。当我们需要查询数据库时,DBMS会扫描整个表来检索相关数据。如果表中数据量非常大,…

    MongoDB 2023年5月16日
    00
  • 提升MongoDB性能的方法

    提升 MongoDB 性能的方法主要包括以下几个方面: 1. 选择合适的硬件设备 合适的硬件设备包括CPU、内存、磁盘、网络等等。其中,CPU 和内存是 MongoDB 最为关键的硬件设备,CPU 负责计算并响应请求,内存则用于存储数据、索引和一些运行时的数据结构,磁盘则用于永久存储数据。网络也很重要,尤其是对于分布式的 MongoDB 集群而言。 2. 优…

    MongoDB 2023年5月16日
    00
  • 关于MongoDB索引管理-索引的创建、查看、删除操作详解

    关于MongoDB索引管理-索引的创建、查看、删除操作详解 索引简介 MongoDB是个面向文档的数据库,而非关系型数据库,它提供了一些基本的存储操作,如插入(insert)、查询(query)、更新(update)和删除(delete)。为了提高查询效率,MongoDB 建议在执行查询操作前,先建立合适的数据索引。 索引是一种存储在MongoDB集合中的特…

    MongoDB 2023年5月16日
    00
  • MongoDB 学习笔记(一)-MongoDB配置

    我会给出完整的MongoDB配置攻略,并包含两个示例说明。 MongoDB 学习笔记(一)-MongoDB配置 简介 MongoDB是一种基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。 在这篇学习笔记中我们将学习如何配置MongoDB。我们将需要安装MongoDB、创建数据库目录以及启动MongoDB服务。…

    MongoDB 2023年5月16日
    00
  • C# 操作 MongoDB的示例demo

    C# 操作 MongoDB 的示例 Demo 主要涉及以下两个方面: 安装 MongoDB.Driver 包 编写代码示例 下面为您详细介绍这两个步骤: 安装 MongoDB.Driver 包 为了在 C# 中操作 MongoDB 数据库,需要下载 MongoDB.Driver 包。可以通过 NuGet 包管理器来下载安装这个包。具体安装步骤如下: 打开 V…

    MongoDB 2023年5月16日
    00
  • SpringBoot整合redis及mongodb的详细过程

    下面是讲解 “Spring Boot整合Redis及MongoDB的详细过程” 的攻略: 1. 确保环境配置 在开始之前,您需要确保您的开发环境中存在Redis和MongoDB,并且您已经在pom.xml文件中添加了相应的依赖。 在pom.xml文件中添加以下Redis和MongoDB依赖: <!– Redis Dependencies –>…

    MongoDB 2023年5月16日
    00
  • 关于NoSQL之MongoDB的一些总结

    关于NoSQL之MongoDB的一些总结 什么是NoSQL? NoSQL是“Not only SQL”的缩写,表示非关系型数据库,它不像传统的关系型数据库(SQL)那样有严格的表结构和数据类型限制,相对灵活。 MongoDB是什么? MongoDB是一款比较流行的NoSQL数据库,它是一种文档存储数据库,可以存储各种复杂的文档类型,并且支持分布式部署。 Mo…

    MongoDB 2023年5月16日
    00
  • 深入了解MongoDB是如何存储数据的

    MongoDB是一个基于文档存储的NoSQL数据库管理系统。在深入了解MongoDB是如何存储数据之前,需要先了解MongoDB的基本概念和术语。 MongoDB中的基本概念: 数据库:是一组数据的容器,相当于关系型数据库中的“数据库”概念。 集合:是一个存储文档的容器,相当于关系型数据库中的“表”概念。 文档:是MongoDB中的基本数据单元,相当于关系型…

    MongoDB 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部