MongoDB主从复制,一文打尽!

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.MongoDB概述
    • 📣 2.MongoDB特点
    • 📣 3.MongoDB主从复制
      • ✨ 3.1 架构介绍
      • ✨ 3.2 MongoDB副本集
    • 📣 4.主从集群部署
      • ✨ 4.1 yum源配置
      • ✨ 4.2 yum安装mongodb
      • ✨ 4.3 启动MongoDB服务
      • ✨ 4.4 相关配置
    • 📣 5.配置MongoDB主从
      • ✨ 5.1 用户认证
      • ✨ 5.2 配置副本集
    • 6.主从切换

前言

MongoDB的宗旨是构建更快速,构建更智能。借助基于领先的现代数据库构建的应用程序数据平台,更快地将您的想法推向市场。

📣 1.MongoDB概述

MongoDB的宗旨是构建更快速,构建更智能。
借助基于领先的现代数据库构建的应用程序数据平台,
更快地将您的想法推向市场。支持事务性、搜索、分析和移动使用案例,
同时采用通用查询接口和开发人员喜爱的数据模型。
官网:https://www.mongodb.com/zh-cn

📣 2.MongoDB特点

面向文档的数据模型:MongoDB是一种面向文档的数据库,这意味着它使用文档来存储数据,文档是一个键值对集合,是非常灵活的数据模型。

分布式
高性能
强大的查询语言
灵活的数据模型
可扩展性
可视化管理工具

📣 3.MongoDB主从复制

✨ 3.1 架构介绍

MongoDB主从复制是一种数据同步机制,通过该机制可以将一个 MongoDB 实例的数据复制到其他多个实例中,以提高数据的可靠性和可用性。在主从复制中,有一个主节点(也称为主服务器),负责接收写入请求并将数据同步到从节点(也称为从服务器)。从节点只能处理读操作,而不允许写入操作。

✨ 3.2 MongoDB副本集

副本集在mongodb中是是一组 mongod保持相同的数据集过程,副本集提供冗余和高可用性,并且是所有生产部署的基础。

📣 4.主从集群部署

✨ 4.1 yum源配置

首先我们需要配置yum源,这里我们使用清华源,3台服务器均安装
vi /etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el7/
gpgcheck=0
enabled=1检查yum仓库各镜像源状态
[root@master /]# yum repolist all |grep enable
base/7/x86_64                       CentOS-7 - Base               enabled: 10072
extras/7/x86_64                     CentOS-7 - Extras             enabled:   518
mongodb                             MongoDB Repository            enabled:   380
updates/7/x86_64                    CentOS-7 - Updates            enabled:  5527

✨ 4.2 yum安装mongodb

yum install -y mongodb-org-server mongodb-org

✨ 4.3 启动MongoDB服务

systemctl start mongod.service
systemctl enable mongod.service
systemctl status mongod

✨ 4.4 相关配置

1.master节点配置
--进入mongodb数据库
[root@master /]# mongo           
MongoDB shell version v5.0.23
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("d3869e61-4337-4a2f-bce1-bd8a04a0987b") }
MongoDB server version: 5.0.23
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttps://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forumshttps://community.mongodb.com
---
The server generated these startup warnings when booting: 2023-12-25T22:57:34.147+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted2023-12-25T22:57:34.147+00:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'2023-12-25T22:57:34.147+00:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
---
> --在mongodb内创建用户管理员admin账号
db.createUser({user: "admin",pwd: "admin",roles: [{role: "userAdminAnyDatabase",db: "admin"}]
}
)> db.createUser({
...   user: "admin",
...   pwd: "admin",
...   roles: [
...   {role: "userAdminAnyDatabase",db: "admin"}
...   ]
... }
... )
Successfully added user: {"user" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}]
}--进入admin数据库内,使用admin账号验证登录。
>  use admin;
switched to db admin
> db.auth("admin","admin")--使用admin账号连接mongodb
[root@master /]# mongo -uadmin -padmin --authenticationDatabase admin
MongoDB shell version v5.0.23
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("793c88ab-0bcc-4e54-a1f2-94a04cea0c28") }
MongoDB server version: 5.0.23
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
---
The server generated these startup warnings when booting: 2023-12-26T11:31:44.677+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted2023-12-26T11:31:44.677+00:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'2023-12-26T11:31:44.677+00:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
---在mongodb内创建huawei用户,用户角色权限为"mongo"
db.createUser({user: "mongo", pwd: "Root#123", roles: [{role: "root", db: "admin"}]})2.在主节点创建key文件
--在主节点创建key文件
mkdir -p /data/mongodb/
openssl rand -base64 666 > /data/mongodb/mongodb.key--在两个从节点创建目录
mkdir -p /data/mongodb/--将key文件发送两个从节点
scp  /data/mongodb/mongodb.key root@192.168.12.57:/data/mongodb/
scp  /data/mongodb/mongodb.key root@192.168.12.58:/data/mongodb/3.所有节点配置工作
以下步骤,三个节点都需要执行。
--目录及文件授权
在三个节点服务器中,执行以下命令,对相关目录及文件进行授权操作·。chown mongod:mongod -R /data/mongodb/
chmod 600 /data/mongodb/mongodb.key--编辑/etc/mongod.conf文件
在三个节点服务器中,编辑/etc/mongod.conf文件。systemLog:destination: filelogAppend: truepath: /var/log/mongodb/mongod.log
storage:dbPath: /var/lib/mongojournal:enabled: true
processManagement:fork: true  # fork and run in backgroundpidFilePath: /var/run/mongodb/mongod.pid  # location of pidfiletimeZoneInfo: /usr/share/zoneinfo
net:port: 27017bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
security:authorization: enabledkeyFile: /data/mongodb/mongodb.keyclusterAuthMode: keyFile
replication:replSetName: rs0oplogSizeMB: 5000--重启mongodb服务
三个节点服务器,重启mongodb服务。
systemctl restart mongod

📣 5.配置MongoDB主从

✨ 5.1 用户认证

--连接master节点的mongodb。
[root@master /]# mongo
MongoDB shell version v5.0.23
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("fc6ec2e8-d047-41bd-876b-9011cbc7bce1") }
MongoDB server version: 5.0.23
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
> --使用mongo账号进行认证
> use admin;
switched to db admin
> db.auth("mongo","Root#123")
1

✨ 5.2 配置副本集

执行以下命令,配置副本集。
rs.initiate({
_id : “rs0”,
members: [
{ _id: 0, host: “172.18.12.56:27017” },
{ _id: 1, host: “172.18.12.57:27017” },
{ _id: 2, host: “172.18.12.58:27017” }
]
})

6.主从切换

--停止主库的mongodb服务
systemctl stop mongod.service--查看从库状态
其他从节点登录mongodb,查看mongodb的角色,发现auxiliary01节点已经切换为主库。auxiliary01节点:
systemctl status mongod.service[root@auxiliary01 /]# mongo
MongoDB shell version v5.0.23
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("613255c0-6d43-439e-bec8-1adb653c308f") }
MongoDB server version: 5.0.23
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttps://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forumshttps://community.mongodb.comauxiliary02节点:
systemctl status mongod.service[root@auxiliary02 /]# mongo
MongoDB shell version v5.0.23
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("a99a3533-94c2-45c8-9dda-400e3093b619") }
MongoDB server version: 5.0.23
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, seehttps://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forumshttps://community.mongodb.com注:此时启动节点1,我们发现原来的主库已经成为备库了

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot学习随笔- Jasypt加密数据库用户名和密码以及解密

学习视频:【编程不良人】2021年SpringBoot最新最全教程 第十九章、Jasypt加密 Jasypt全称是Java Simplified Encryption,是一个开源项目。 Jasypt与Spring Boot集成,以便在应用程序的属性文件中加密敏感信息,然后在应用程序运行…

mac下jd-gui提示没有找到合适的jdk版本

mac下jd-gui提示jdk有问题 背景解决看一下是不是真有问题了方法一:修改启动脚本方法二:设置launchd环境变量 扩展动态切jdk脚本(.bash_profile) 背景 配置了动态jdk后,再次使用JD-GUI提示没有找到合适的jdk版本。 解决 看一下是不是真有问题…

《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类

平衡搜索树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用? AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…

gzip引入后node_modules中.cache compression-webpack-plugin占用内存过多

1.Gzip Gzip(GNU zip)是一种常见的文件压缩格式和压缩算法,通常用于在 Web 服务器上对静态资源文件进行压缩,以减小文件大小并加快文件传输速度。在前端开发中,经常会使用 Gzip 压缩来优化网站的性能。 Gzip 压缩通过…

云计算:OpenStack 配置云主机实例的资源实现内网互通

目录 一、实验 1. 环境 2.配置项目及用户 3.配置规格实例与镜像 4.配置VPC 5. 配置安全组 6. 创建云主机 cs_01 (cirros系统) 7.创建云主机 cs_02 (cirros系统) 8.创建云主机 cs_03 (cirros系统) …

AI大模型引领未来智慧科研暨丨ChatGPT在地学、GIS、气象、农业、生态、环境等领域中的高级应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

第十三章 Nacos服务注册和配置中心

Nacos服务注册和配置中心 gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信&#…

Python搭建代理IP池实现存储IP的方法

目录 前言 1. 介绍 2. IP存储方法 2.1 存储到数据库 2.2 存储到文件 2.3 存储到内存 3. 完整代码示例 总结 前言 代理IP池是一种常用的网络爬虫技术,可以用于反爬虫、批量访问目标网站等场景。本文介绍了使用Python搭建代理IP池,并实现IP存储的…

25、商城系统(七):商城项目基础功能pom.xml(重要),mybatis分页插件

截止这一章,我们就不把重心放在前端,后台的基础代码,因为后面都是业务层面的crud。 前端直接替换这两个文件夹即可,后台代码也直接复制: 一、重新更新一下所有的pom.xml 这个地方我踩了好多坑,最后得到一个完整的pom.xml,建议大家直接用我的pom.xml替换即可。 1.comm…

STM32 CubeMX工具在TSL2561驱动开发中的快速集成与调试技巧

在STM32 CubeMX工具中快速集成和调试TSL2561驱动的开发技巧,可以大大提高开发效率和减少调试时间。下面将为您介绍如何在CubeMX中进行快速集成和调试TSL2561驱动的技巧和步骤。 1. 创建新工程和选择芯片型号 打开STM32 CubeMX工具,点击“New Project”…

高光回眸:阿里云容器服务如何全面助力精彩亚运

作者:刘佳旭 谢乘胜 贤维 引言 2023 年,第 19 届杭州亚运会在杭州成功举办。在亚运之光和科技之光的交相辉映下,这届亚运会成为亚运史上首届“云上亚运”,用云计算创造了历史,赛事核心系统和转播全面上云&#xff0c…

deepin系统安装达梦数据库

deepin系统安装达梦数据库 1.下载安装包和执行可执行文件2.解压缩可执行文件3.运行安装程序 2.初始化3.达梦管理工具 deepin系统安装达梦数据库 1.下载安装包和执行可执行文件 进入deepin系统桌面, 打开终端, 输入命令uname -a 检查cpu架构,前往达梦官网下载合适的安装包, 目前…

将正规文法转化为正规式

将正规文法转化为正规式有以下几个规则: 通过一道例题来讲解: ①A-->aC|bA ②C-->bD ③D-->aC|bD| (1)首先将②带入③(不能将自身带入自身例如D-->aC|bD|,文法中带D,不能带入D) DabD|bD|(…

设计模式-多例模式

设计模式专栏 模式介绍多例模式和单例模式的区别应用场景Spring中多例模式的优缺点代码示例Java实现多例模式Python实现多例模式 多例模式在spring中的应用 模式介绍 多例模式是一种创建型设计模式,属于对象创建类型。多例模式的特点是允许一个类有多个实例&#x…

多模态大模型-CogVLm 论文阅读笔记

多模态大模型-CogVLm 论文阅读笔记 COGVLM: VISUAL EXPERT FOR LARGE LANGUAGEMODELS 论文地址 :https://arxiv.org/pdf/2311.03079.pdfcode地址 : https://github.com/THUDM/CogVLM时间 : 2023-11机构 : zhipuai,tsinghua关键词: visual language model效果:(2023…

HLS 2017.4 导出 RTL 报错:ERROR: [IMPL 213-28] Failed to generate IP.

软件版本:HLS 2017.4 在使用 HLS 导出 RTL 的过程中产生如下错误: 参考 Xilinx 解决方案:https://support.xilinx.com/s/article/76960?languageen_US 问题描述 DESCRIPTION As of January 1st 2022, the export_ip command used by Vivad…

旧衣回收小程序搭建,稳占回收市场

近几年我国大众的消费水平不断提升,闲置物品也相应增加了不少,尤其是闲置衣服,为了减少资源浪费,旧衣服回收回收行业受到了大众的关注。 目前我国旧衣服回收行业的市场规模达到了300多亿元,旧衣回收行业的商业价值非常…

AI绘图软件,科技之旅绘画

科技与艺术的碰撞总能产生令人惊叹的火花,现在小编要给大家介绍一款引领未来艺术潮流的AI绘图软件——首助编辑高手。这是一款将人工智能与创意绘画完美结合的软件,它将为你打开一扇全新的创意之门。 所需工具: 一个【首助编辑高手】软件 …

跨境电商卖家一般用海外云手机做什么?

近些年,海外云手机在跨境电商领域已经逐渐流行开来,但是对于许多人来说海外云手机还是比较陌生,它有什么作用?它可以用于哪些场景?在本文中,我们将详细跨境电商卖家一般是怎样使用海外云手机的。 1. 海外网…

Windows搭建RTMP视频流服务(Nginx服务器版)

文章目录 引言1、安装FFmpeg2、安装Nginx服务器3、实现本地视频推流服务4、使用VLC或PotPlayer可视化播放器播放视频5、RTSP / RTMP系列文章 引言 RTSP和RTMP视频流的区别 RTSP (Real-Time Streaming Protocol)实时流媒体协议。 RTSP定义流格式&#xff…