MongoDB部署高可用集群

embedded/2024/12/26 20:40:40/

一、准备工作

  1. 修改3台服务器的hostname为mongodb0、mongodb1和mongodb2
        vim /etc/hostname  
        vim /etc/hosts 分别配置3个节点的域名  
            10.5.30.19 mongodb0
            10.5.30.14 mongodb1
            10.5.30.18 mongodb2
  2. 关闭防火墙
  3. 下载mongodb安装包并解压:mongodb-linux-aarch64-ubuntu1804-4.2.7.tgz
        tar zxvf mongodb-linux-aarch64-ubuntu1804-4.2.7.tgz
        名称太长,修改名称  mv mongodb-linux-aarch64-ubuntu1804-4.2.7 mongodb
  4. 安装mongo: 配置环境变量,vim /etc/profile
          export PATH=/opt/mongodb/mongodb-4.2.7/bin:$PATH
    使配置生效:source /etc/profile
  5. 用户及用户组:按需要设置用户和用户组,本环境中统一使用root:root

二、集群架构

  1. 概述
    1.1 MongoDB的集群目前有3种方式主从模式、副本集模式、sharding分片模式),副本集和sharding分片模式是最广泛使用的方案,这2种方案的选择通过数据量和并发数来权衡:GB级别采用副本集方案,TB级别或以上采用sharding模式,解决单机容量和单机并发能力;
    1.2 sharding模式分片越多,性能自然下降越多
  2. 组件及概念说明

序号

组件

说明

1

Mongos Server

1数据库集群请求的入口,所有请求都通过mongos进行协调,不需在应用程序添加路由选择器,mongos自己就是一个请求分发中心,它负责把数据请求请求转发到对应的shard服务器上。
2、在生产环境通常设置多mongos作为请求入口,防止其中一个挂掉所有的mongodb请求都没法操作。

2

config server

1配置服务器存储所有数据库元信息(路由、分片)的配置。
2、mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。mongos第一次启动或者关掉重启就会从 config server 加载配置信息,以后如果配置服务器信息变化会通知到所有的mongos更新自己的状态,这样mongos就能继续准确路由。
3、在生产环境通常设置多个 config server ,因为它存储了分片路由的元数据,防止单点数据丢失!

3

shard server

1、分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。
2、基本思想就是将集合切成小块,这些块分散到若干片里,每个片只负责总数据的一部分,最后通过一个均衡器来对各个分片进行均衡(数据迁移)。

4

replica set

1、副本集其实就是shard的备份,防止shard挂掉之后数据丢失。
2、复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

5

仲裁者(Arbiter)

1、是复制集中的一个MongoDB实例,它并不保存数据。
2、仲裁节点使用最小的资源并且不要求硬件设备,
不能将Arbiter部署在同一个数据集节点中,可以部署在其他应用服务器或者监视服务器中,也可部署在单独的虚拟机中
3、为了确保复制集中有奇数的投票成员(包括primary),需要添加仲裁节点做为投票,否则primary不能运行时不会自动切换primary。


http://www.ppmy.cn/embedded/148991.html

相关文章

arcface

GitHub - bubbliiiing/arcface-pytorch: 这是一个arcface-pytorch的源码,可以用于训练自己的模型。 https://github.com/deepinsight/insightface/tree/master/recognition/arcface_torch 参考博客 Arcface部署应用实战-CSDN博客 https://zhuanlan.zhihu.com/p/16…

威尔克斯(Wilks)分布

内容来源 应用多元统计分析 北京大学出版社 高惠璇编著 威尔克斯 Λ \Lambda Λ 分布 回顾一元统计中的 F F F 分布 设 ξ ∼ χ 2 ( m ) , η ∼ χ 2 ( n ) \xi\sim\chi^2(m),\eta\sim\chi^2(n) ξ∼χ2(m),η∼χ2(n),且相互独立,则 F ξ / m η…

游戏引擎学习第59天

回顾并计划接下来的一天 在处理实体的空间划分时,遇到了一些问题。例如,虽然树和玩家应该在某些情况下被排除在外,但目前的系统仍然会出现不合逻辑的渲染结果,这在视觉上并不符合预期。尽管这些问题主要是渲染上的,并…

nacos-服务发现注册

服务发现注册分为三个角色:服务注册中心、服务提供者、服务消费者 服务注册中心:为服务提供者和消费者提供一个空间,服务提供者将自身服务注册到注册中心,仅对外暴露接口,服务消费者在将自身注册到注册中心的时候也会获…

C语言从入门到放弃教程

C语言从入门到放弃 1. 介绍1.1 特点1.2 历史与发展1.3 应用领域 2. 安装2.1 编译器安装2.2 编辑器安装 3. 第一个程序1. 包含头文件2. 主函数定义3. 打印语句4. 返回值 4. 基础语法4.1 注释4.1.1 单行注释4.1.2 多行注释 4.2 关键字4.2.1 C语言标准4.2.2 C89/C90关键字&#xf…

地理数据库Telepg面试内容整理-数据库设计与性能优化

在开发和维护 Telepg 地理数据库时,合理的数据库设计与性能优化是确保系统稳定、高效运行的关键。以下是针对数据库设计与优化的详细指南。 数据库设计原则 (1) 明确需求 ● 数据类型分析: ○ 确定需要存储的空间数据类型࿰

2. Kafka入门-开发环境准备

Kafka入门-开发环境准备 1. 环境准备2. Centos7安装2.1 镜像安装2.2 初始化配置2.3 JDK1.8安装 ---------------------------------------------------------------------------------------------- 1. 环境准备 2. Centos7安装 2.1 镜像安装 2.2 初始化配置 设置系统时区 …

嵌入式学习-QT-Day07

嵌入式学习-QT-Day07 七、文件IO 1、QFileDialog文件对话框 2、QFileInfo文件信息类 3、QFile文件读写类(重点) 4、UI与耗时操作 5、QThread线程类 5.1 复现程序未响应 5.2 创建并启动一个子线程 5.3 异步刷新 5.4 线程停止 6、数据持久化 七、文件IO 1、…