Centos7 搭建Mongodb 分片集群4.0/ PSA(三成员副本集)

MongoDB

    • 简介:
      • 1、优点和缺点:
      • 2、MongoDB适用的业务场景:
    • Centos7 搭建Mongodb 分片集群
      • 一、安装MongoDB社区版4.0
        • 1、配置程序包管理系统(`yum`)
        • 2、安装对应版本的MongoDB软件包。
        • 3、创建运行mongodb的目录并禁用SELinux
        • 4、修改文件打开数
        • 5、初始化系统
          • 5.1、创建config配置服务器,配置文件mongoconfig.conf,并启动
          • 5.2、创建shard服务器,shard 配置 mongd.conf
            • 1)leojiang124、leojiang126 配置shard1
            • 2)leojiang125、leojiang127 配置shard2副本集,shard.config配置文件修改<replication.replSetName>即可
            • 3)arbiter :
            • 4)启动副本集:
            • 5)配置三成员副本集
          • 5.3、创建mongos客户端指定配置服务器,配置mongos.conf
        • 6、数据库添加内部安全认证
          • 6.1、创建密钥文件
          • 6.2、把生成的mongodb-keyfile文件拷贝到每个需要keyfile的服务器上,开启配置文件的注释
          • 6.3、重启集群并生效:
    • Data flow:

简介:

MongoDB是一个分布式非关系型数据库管理系统

1、优点和缺点:

优点:
1. 灵活的数据模型:MongoDB是面向文档的数据库,使用JSON格式存储数据,因此可以轻松地存储各种类型的数据,而不需要遵循严格的模式。
2. 可扩展性:MongoDB支持水平扩展,可以通过添加更多的服务器来处理大量的数据和流量,从而实现高可扩展性。
3. 高性能:MongoDB具有快速的读写速度,特别是在大型数据库和高并发访问的情况下。
4. 强大的查询功能:MongoDB支持丰富的查询功能,包括复杂的聚合查询、全文搜索等。
5. 自动故障转移:MongoDB具有自动故障转移功能,可以在主服务器故障时自动切换到备用服务器,提高了系统的可用性。缺点:
1. 内存消耗较大:MongoDB在处理大规模数据时需要大量的内存来维护索引和缓存,这可能导致服务器成本较高。
2. 数据一致性问题:由于MongoDB的分布式特性,可能会存在数据一致性的问题,特别是在网络分区或节点故障时。
3. 复杂的查询:MongoDB的复杂查询性能可能不如传统的关系型数据库。

2、MongoDB适用的业务场景:

MongoDB适合许多不同类型的业务,特别是那些需要处理灵活数据模型、大规模写入、高性能读取和无需复杂事务支持的应用。1. 内容管理系统(CMS):CMS通常需要处理多种类型的内容,如文章、图片、视频等,而这些内容的结构可能会经常变化。MongoDB的灵活的文档数据模型使其成为存储和管理此类内容的理想选择。2. 实时分析和日志处理:MongoDB可以处理大规模的写入操作,因此非常适合存储实时生成的日志数据或其他实时事件数据。它还具有良好的读取性能,可以支持实时分析和查询。3. 物联网(IoT)应用:物联网应用通常需要处理大量的传感器数据和设备数据,并且这些数据的结构可能是不确定的。MongoDB的灵活性和水平扩展性使其成为存储和处理物联网数据的良好选择。4. 用户分析和个性化推荐:对于需要存储和分析大量用户数据,并基于这些数据进行个性化推荐或用户行为分析的应用程序,MongoDB是一个强大的工具。它可以轻松存储用户配置文件、行为数据等,并支持复杂的查询和分析。

Centos7 搭建Mongodb 分片集群

一、安装MongoDB社区版4.0

该集群由mongos、配置服务器config和两个三成员shard副本集组成。
在这里插入图片描述

组件分布:

ip组件
leojiang123arbiter(shard1)、arbiter(shard2)
leojiang124mongos、config、shard1(副)
leojiang125mongos、config、shard2(副)
leojiang126mongos、config、shard1(主)
leojiang127mongos、shard2(主)

端口选择:

组件端口选择
mongos20000
config27000
shard27001
arbiter27026、27027
1、配置程序包管理系统(yum

创建一个/etc/yum.repos.d/mongodb-org-4.0.repo文件,以便您可以使用yum以下命令直接安装MongoDB

  • 分别在leojiang123~leojiang127服务器上执行
cat > /etc/yum.repos.d/mongodb-org-4.0.repo << EOF
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
EOF
2、安装对应版本的MongoDB软件包。
  • 分别在leojiang123~leojiang127服务器上执行
sudo yum install -y mongodb-org-4.0.9 mongodb-org-server-4.0.9 mongodb-org-shell-4.0.9 mongodb-org-mongos-4.0.9 mongodb-org-tools-4.0.9

为防止意外升级,请固定包装。

echo 'exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools'>>/etc/yum.conf
3、创建运行mongodb的目录并禁用SELinux
  • 根据自身情况分别在leojiang123~leojiang127服务器上执行
mkdir -p /var/opt/mongodb/config
mkdir -p /var/opt/mongodb/mongos
mkdir -p /var/opt/mongodb/shard
mkdir -p /var/opt/mongodb/arbiter
chown -R mongod:mongod /var/opt/mongodb

禁用SELinux

vim /etc/sysconfig/selinux
SELINUX=disabledsetenforce 0
4、修改文件打开数
  • 分别在leojiang123~leojiang127服务器上执行

4.1、修改系统文件打开数

# 直接生效
ulimit -n 1000000

4.2、修改mongo最大文件打开数

cat > /etc/security/limits.d/99-mongodb.conf << LEO
#Default limit for number of user’s processes to prevent
# accidental fork bombs.
# # See rhbz #432903 for reasoning.
# #
# # * soft nproc 4096
# # root soft nproc unlimited
* soft nofile 1000000
* hard nofile 1000000
* soft fsize unlimited
* hard fsize unlimited
* soft cpu unlimited
* hard cpu unlimited
* soft nproc 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 学习笔记(七):介绍 Dockerfile 相关知识,使用 Dockerfile 构建自己的 centos 镜像

一、前言 记录时间 [2024-4-12] 系列文章简摘&#xff1a; Docker学习笔记&#xff08;二&#xff09;&#xff1a;在Linux中部署Docker&#xff08;Centos7下安装docker、环境配置&#xff0c;以及镜像简单使用&#xff09; Docker 学习笔记&#xff08;三&#xff09;&#x…

C++ this指针的使用与详解

在C编程中&#xff0c;类和对象是核心概念。当我们定义一个类并且创建它的对象时&#xff0c;每个对象都有自己的成员变量和成员函数。那么&#xff0c;如何让这些成员函数能够访问对象自身的成员变量呢&#xff1f;这就需要引入一个特殊的指针——this指针。 this指针的概念 …

【数据结构(五)】栈

❣博主主页: 33的博客❣ ▶️文章专栏分类:数据结构◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你学更多数据结构知识 目录 1.前言2.概念3.栈的使用4.栈的应用场景4.1有效的括号4.2逆波兰表达式4.3栈的压入弹…

es6对于变量的解构赋值(数组解构,对象解构,字符串解构,函数解构等)解析(2024-04-12)

1、数组的解构赋值 [ ] 1.1 数组解构的基本用法 ES6 允许按照一定模式&#xff0c;从数组和对象中提取值&#xff0c;对变量进行赋值&#xff0c;这被称为解构&#xff08;Destructuring&#xff09;。本质上叫模型匹配&#xff0c;等号两边的模型相同就可以对应上。 //以前…

VUE_H5页面跳转第三方地图导航,兼容微信浏览器

当前项目是uniapp项目&#xff0c;若不是需要替换uni.showActionSheet选择api onMap(address , organName , longitude 0, latitude 0){var ua navigator.userAgent.toLowerCase();var isWeixin ua.indexOf(micromessenger) ! -1;if(isWeixin) {const mapUrl_tx "…

synchronized的优化策略

synchronized的优化策略 一:synchronized 的"自适应"1.1:偏向锁 二:锁消除三:锁粗化 一:synchronized 的"自适应" 锁升级的过程: (1)未加锁的状态(无锁) 当代码中开始调用执行synchronized (2)偏向锁 遇到锁冲突 (3)轻量级锁 冲突进一步提升 (4)重量级锁 …

【示例】MySQL-事务控制示例:账户转账-savepoint关键字

前言 本文讲述MySQL中的事务&#xff0c;以账户转账为例&#xff0c;体会事务的概念&#xff0c;并讲解事务相关的一个关键字用法&#xff1a;savepoint 示例 数据准备 drop table if exists account;create table account(id int primary key AUTO_INCREMENT comment ID,n…

metrology

* draw_line (3600, Row11, Column11, Row21, Column21) Row11:1168.63385826772 Column11:934.322404371585 Row12:1280.58267716535 Column12:1233.27322404372 * draw_rectangle2 (3600, Row8, Column8, Phi1, Length11, Length21) *画矩形区域 Row3:1102.91534391534 Colum…

在Windows下面的vscode配置cmake使用vcpkg包管理器

安装 vscode下载地址 cmake下载地址 vcpkg下载地址 创建CMake项目 // main.cpp #include <fmt/core.h>int main() {fmt::print("Hello World!\n");return 0; }// CMakeLists.txtcmake_minimum_required(VERSION 3.10)project(HelloWorld)find_package(fmt…

没有公网IP怎么办?

在网络通信中&#xff0c;公网IP是指可以直接访问互联网的IP地址。由于各种原因&#xff0c;有一些用户可能没有自己的公网IP地址。那么没有公网IP的情况下&#xff0c;我们应该怎么办呢&#xff1f; 局域网的限制 我们需要了解局域网的概念。局域网是指在一个相对较小的范围内…

LAMMPS如何识别多孔结构的孔隙及其大小

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material

redis 数据迁移到rds2214(TongRDS-2.2.1.3.Load版 by lqw)

​ 文章目录 一.备份redis文件 vi redis.conf &#xff0c;看看有没有这两行设置&#xff0c;有的话改成跟下面的一致&#xff1a; appendonly yes appendfilename “appendonly.aof” 之后连接redis客户端&#xff0c;输入INFO persistence&#xff0c;如图所示即为开启成功…

生产环境一些十分有用的JVM参数

-Xms{x}m &#xff1a;初始化堆内存大小 -Xmx{x}m : 最大堆内存大小 一般将Xms Xmx 这两个参数值设为相同值&#xff0c;防止反复GC、导致内存抖动。 -Xloggc:{path}_%p_%t.log: GC日志文件&#xff0c;这对垃圾回收器的调整和内存问题诊断有重要作用。其中%p表示进程号占位符…

【C++学习】C++智能指针:提高代码安全与性能的利器

文章标题 智能指针的提出智能指针概念及使用RAII 智能指针的原理C库多种智能指针详解版本一&#xff1a;std::auto_ptr&#xff08;C98&#xff09;1. std::auto_ptr 使用2. std::auto_ptr 原理3. std::auto_ptr 模拟实现 版本二&#xff1a;unique_ptr (C11)1. unique_ptr 的使…

算法—分治

分而治之:指的是当主问题可以被分解为一个相同次级问题加相同基本问题时&#xff0c;采用这种思想&#xff0c;基本问题指问题规模最小时的情况&#xff0c;次级问题是指主问题的n级降低n-1级的问题。 具体实现&#xff1a;多数采用递归操作分解&#xff0c;然后递归操作&#…

【Linux】编写一个 shell 脚本执行

在Linux中编写和执行脚本相对简单。下面是一个基本的步骤指南&#xff0c;帮助你创建一个简单的bash脚本并运行它&#xff1a; 1. 创建脚本文件 首先&#xff0c;你需要使用文本编辑器创建一个新的文件。这个文件通常会有 .sh 的扩展名&#xff0c;以表明它是一个shell脚本。…

Android 纵向双选日历

这个日历的布局分两部分&#xff0c;一部分是显示星期几的LinearLayout&#xff0c;另外就是一个RecyclerView&#xff0c;负责纵向滚动了。 工具类&#xff1a; implementation com.blankj:utilcode:1.17.3上activity_calendar代码&#xff1a; <?xml version"1.0&…

研究了一款Vue2开发的Markdown编辑器

最近突然喜欢开始写作了&#xff0c;写笔记&#xff0c;写日记&#xff0c;写总结&#xff0c;各种写。所以&#xff0c;想要打造一个自己喜欢的编辑器&#xff0c;于是开始研究。 首先来看看我从Github丄扒拉到的这个开源的代码&#xff1a; 运行起来以后效果是这样的&…

探究C++20协程(1)——C++协程概览

什么是协程&#xff1f; 协程就是一段可以挂起&#xff08;suspend&#xff09;和恢复&#xff08;resume&#xff09;的程序&#xff0c;一般而言&#xff0c;就是一个支持挂起和恢复的函数。 一般情况下&#xff0c;函数一旦开始&#xff0c;就无法暂停。如果一个函数能够暂…

用于扩展Qt自身的插件(下)

扩展Qt自身的插件 引言必须满足项创建插件示例代码生成插件配置加载插件的环境创建使用插件的项目配置库和头文件依赖的步骤:应用程序代码运行结果总结引言 本文继上篇的扩展Qt自身的插件,接着记录Qt自身的插件,只不过本文提及的用于扩展Qt自身的插件是可以在QtCreator的设…