当前位置: 首页 > news >正文

《NoSQL数据库技术与应用》 MongoDB副本集

《NoSQL数据库技术与应用》
教学设计

课程名称:NoSQL数据库技术与应用
授课年级: 20xx年级
授课学期: 20xx学年第一学期
教师姓名: 某某老师

2020年5月6日

课题
名称 第4章 MongoDB副本集 计划学时 8课时
内容
分析 独立模式可以简单且快速的构建MongoDB数据库系统,然而独立模式存在弊端,即一旦MongoDB发生宕机,将会面临数据丢失的风险,这在生产环境中是不允许发生的,此时我们可以利用MongoDB提供的高可用机制,即复制。MongoDB支持两种复制类型:传统的主/从复制和副本集,副本集可以理解为传统主/从复制的一种复杂形式,支持自动故障恢复功能,拥有更高的可用性,是MongoDB部署中的一种推荐方法。因此,本章将针对MongoDB副本集进行详细介绍和部署。
教学目标及基本要求 1、了解MongoDB副本集
2、熟悉MongoDB副本集成员
3、掌握MongoDB副本集部署
4、掌握MongoDB副本集操作
5、理解副本集机制
教学
重点 1、副本集概述
2、副本集成员
3、部署副本集
4、查看副本集成员状态
5、同步副本文档
6、故障转移
7、配置副本集成员
8、安全认证
9、副本集机制
教学
难点 1、部署副本集
2、配置副本集成员
3、安全认证
教学
方式 教师课堂教学要以PPT讲授为主,并结合多媒体进行教学



第一课时
(副本集概述、副本集成员)
一、情景导入

  1. 教师通过举例,引出副本集
    副本集(Replica Set)是一组MongoDB实例保持其相同数据集的集群,由一个主(Primary)服务器和多个副本(Secondary)服务器构成。通过复制(Replication)将数据的更新由主服务器推送到其它副本服务器上,在一定的延迟之后,达到每个MongoDB实例维护相同的数据集副本。
  2. 明确学习目标
    (1)熟悉副本集概述
    (2)掌握副本集成员
    二、进行重点知识讲解
    1.副本集概述
    教师可以参考课件进行讲解副本集及副本集功能,对这些内容做重点介绍。
    2.副本集成员
    教师可以参考课件进行讲解副本集成员结构、副本集成员和oplog,对这些内容做重点介绍。
    三、归纳总结,随堂练习,布置作业
    对课堂上讲解的知识点进行总结,让学生叙述副本集概述和副本集成员的理解。

第二、三课时
(部署副本集)
一、回顾上节课内容,讲述部署副本集
1.对上节课留的作业进行答疑
2.回顾上节课内容,引出本节课的主题
上一节课,我们对MongoDB副本集有了初步认知。本节课,按照官方推荐方案,我们搭建一个三成员的副本集,这个副本集由一个主节点和两个副本节点组成。
3.明确学习目标
(1)熟悉部署MongoDB副本集的环境准备
(2)掌握副本集的安装与启动
(3)掌握副本集的初始化
二、进行重点知识的讲解
1. 环境准备
教师可以参考课件以讲演法的方式来讲述副本集部署前的环境准备。
(1)启动三台Linux虚拟机。
(2)介绍各服务器基本信息,规划副本集各服务器的角色分配。
(3)创建副本集相关目录并更改目录用户权限。
2. 副本集的安装与启动
教师可以参考课件以讲演法的方式来讲述副本集的安装与启动。
(1)讲解并操作安装副本集,首先将MongoDB安装包上传到服务器,修改安装包用户权限。接下来通过解压的方式安装MongoDB,然后重命名MongoDB安装目录,最终将MongoDB相关目录和安装目录分发到集群中其它服务器。
(2)讲解并操作启动副本集,首先进入三台服务器中MongoDB的bin目录,然后以命令行参数方式启动副本集模式的MongoDB实例,最终查看MongoDB实例是否成功启动。
3. 副本集的初始化
教师可以参考课件以讲演法的方式来讲述基于Linux平台MongoDB集合的操作。
(1)讲解并操作登录服务器nosql01的客户端
(2)讲解并操作副本集初始化操作
(3)讲解并操作将服务器nosql02和服务器nosql03以副本节点添加到副本集。
(4)讲解通过配置变量的方式初始化副本集。
三、归纳总结,随堂练习,布置作业
对课堂上讲解的知识点进行总结,让学生叙述副本集安装与初始化的步骤。

第四课时
(查看副本集成员状态、同步副本文档、故障转移)
一、回顾上节课内容,讲述本节课学习内容
1.对上节课留的作业进行答疑
2.回顾上节课内容,引出本节课的主题
上一节课,我们完成副本集的部署并成功启动副本集,本节课,我们将讲解如何查看副本集成员状态、验证副本集文本同步及故障自动转移。
3.明确学习目标
(1)掌握查看副本集成员状态
(2)了解如何验证同步副本文档
(3)了解如何验证自动故障转移
二、进行重点知识的讲解

  1. 查看副本集成员状态
    教师可以参考课件以讲演法的方式来讲述查看副本集成员状态操作。
    (1)讲解副本集成员状态。
    (2)讲解和操作如何在副本集主节点的MongoDB客户端查看副本集成员状态。
    (3)讲解副本集成员状态信息中的参数。
    (4)简要讲解副本集成员状态的回滚。
  2. 同步副本文档
    教师可以参考课件以讲演法的方式来讲述验证同步副本文档操作。
    (1)讲解并操作在服务器nosql01的MongoDB客户端写入一条文档。
    (2)讲解并操作在服务器nosql02的MongoDB客户端中是否可以查看到相同的文档内容,并对副本节点无法查看副本集内容做详细讲解。
  3. 故障转移
    教师可以参考课件以讲演法的方式来讲述故障自动转移操作操作。
    (1)讲解并操作服务器nosql01中副本集主节点的MongoDB实例。
    (2)讲解并操作登录服务器nosql02和服务器nosql03中的MongoDB客户端,验证是否启动一台服务器变更为主节点。
    三、归纳总结,随堂练习,布置作业
    对课堂上讲解的知识点进行总结,让学生叙述副本集成员状态都有哪些,以及如何验证副本同步与自动故障转移。

第五课时
(配置副本集成员)
一、回顾上节课内容,讲述配置副本集成员
1.对上节课留的作业进行答疑
2.回顾上节课内容,引出本节课的主题
实际使用过程中,随着需求的变化我们会对副本集成员的配置进行更改,例如修改成员优先级、选举权和更改成员角色等操作。本节课,我们将详细讲解如何修改副本集成员。
3.明确学习目标
(1)掌握获取副本集成员配置信息
(2)掌握调整副本集成员优先级
(3)掌握配置隐藏节点和延迟节点
(4)掌握配置副本集成员投票权
(5)掌握将副本节点转为仲裁节点
二、进行重点知识的讲解

  1. 获取副本集成员配置信息
    教师可以参考课件以讲演法的方式来讲述获取副本集成员配置信息操作。
    (1)讲解和操作如何在副本集主节点的MongoDB客户端获取副本集成员配置信息并赋值到变量便于后续配置副本集成员。
    (2)讲解副本集成员配置信息中的参数。
  2. 调整副本集成员优先级
    教师可以参考课件以讲演法的方式来讲述调整副本集成员优先级操作。
    (1)讲解成员优先级的作用。
    (2)讲解并操作调整服务器nosql01中副本集成员的优先级。
    (3)讲解并操作将调整操作应用到副本集,查看服务器nosql01中副本集成员角色状态是否发生变化。
  3. 配置隐藏节点和延迟节点
    教师可以参考课件以讲演法的方式来讲述配置隐藏节点和延迟节点操作。
    (1)讲解隐藏节点和延迟节点的作用。
    (2)讲解并操作将服务器nosql02中的副本集成员配置为隐藏节点。
    (3)讲解并操作将服务器nosql03中的副本集成员配置为延迟节点。
  4. 配置副本集成员投票权
    教师可以参考课件以讲演法的方式来讲述配置副本集成员投票权操作。
    (1)讲解成员投票权的作用。
    (2)操作并演示配置服务器nosql02中副本集成员的投票权。
  5. 将副本节点转为仲裁节点
    教师可以参考课件以讲演法的方式来讲述基于Linux平台MongoDB按条件查询操作。
    (1)讲解并演示如何将服务器nosql02中的副本成员更换为仲裁节点。
    三、归纳总结,随堂练习,布置作业
    对课堂上讲解的知识点进行总结,让学生叙述优先级和投票权的作用,如何配置隐藏和延迟节点。

第六课时
(安全认证)
一、回顾上节课内容,讲述聚合操作
1.对上节课留的作业进行答疑
2.回顾上节课内容,引出本节课的主题
默认情况下部署的MongoDB副本集不会开启安全认证功能,这样会对副本集的安全带来一定影响,任何人都可以操作副本集,这在生产环境中是不允许发生的。MongoDB 副本集之间通信有两种安全认证机制,一种是通过KeyFile,另外一种是通过证书x.509,官网推荐使用证书的方式,不过我们这里搭建测试和开发环境没必要去弄证书,因此我们直接通过配置KeyFile就可以实现安全通信,不过在生产环境中推荐使用证书x.509。
3.明确学习目标
(1)了解副本集安全认证机制
(2)掌握开启副本集安全认证
(3)掌握副本集安全认证操作
二、进行重点知识的讲解

  1. 副本集安全认证机制
    教师可以参考课件进行讲解副本集两种安全认证的机制并对KeyFile密钥文件做详细介绍。
  2. 开启副本集安全认证
    教师可以参考课件以讲演法的方式来讲述开启副本集安全认证操作。
    (1)讲解并操作创建KeyFile文件并写入密钥内容。
    (2)讲解并操作在各服务器间同步KeyFile文件。
    (3)讲解并操作在开启副本集安全认证前创建全局管理用户。
    (4)讲解并操作重启副本集,分别不指定用户和指定全局管理用户来验证安全认证是否启动成功。
    (5)讲解root权限用户对开启安全认证的副本集作用。
    三、归纳总结,随堂练习,布置作业
    对课堂上讲解的知识点进行总结,让学生叙述聚合管道操作的表达式和语法以及Map-Reduce操作流程。

第七课时
(副本集机制)
一、回顾上节课内容,讲述副本集机制
1.对上节课留的作业进行答疑
2.回顾上节课内容,引出本节课的主题
本节课将讲解副本集的几个重要机制,分别是同步机制、选举机制和心跳检测机制。
3.明确学习目标
(1)了解同步机制
(2)了解选举机制
(3)了解心跳检测机制
二、进行重点知识的讲解

  1. 同步机制
    教师可以参考课件讲解副本集同步机制。
  2. 选举机制
    教师可以参考课件讲解副本集选举机制。
  3. 心跳检测机制
    教师可以参考课件讲解副本集心跳检测机制。
    三、归纳总结,随堂练习,布置作业
    对课堂上讲解的知识点进行总结,让学生叙述对同步机制、选举机制和心跳检测机制的理解。

第八课时
(上机练习)
上机一:副本集部署
请按照教材中4.3小节的内容,独立完成。
上机二:副本集操作
请按照教材中4.4小节的内容,独立完成。

思考题
和习题




相关文章:

《NoSQL数据库技术与应用》 MongoDB副本集

《NoSQL数据库技术与应用》 教学设计 课程名称:NoSQL数据库技术与应用 授课年级: 20xx年级 授课学期: 20xx学年第一学期 教师姓名: 某某老师 2020年5月6日 课题 名称 第4章 MongoDB副本集 计划学时 8课时 内容 分析 独立模式可…...

Flutter 中的 DropdownButtonFormField 小部件:全面指南

Flutter 中的 DropdownButtonFormField 小部件:全面指南 在Flutter中,DropdownButtonFormField是一个特殊的表单字段小部件,它结合了下拉选择框(DropdownButton)和表单字段(FormField)的功能。…...

哈希算法教程(个人总结版)

背景 哈希算法(Hash Algorithm)是一种将任意长度的输入(也称为消息)转换为固定长度的输出(也称为哈希值、散列值、摘要)的算法。哈希算法在计算机科学中有着广泛的应用,包括数据存储、数据检索…...

Nocobase快速上手 -第一个collection

本文记录Nocobase中如何创建collection,以及如何将collection展示到页面中,并且配置CRUD相应的操作. Collection 在NocoBase中,collection(集合)是用来组织和存储各种数据的容器,如订单、产品、用户、评论…...

吴恩达2022机器学习专项课程C2W2:2.19 sigmoid函数的替代方案 2.20如何选择激活函数 2.21 激活函数的重要性

这里写目录标题 引言sigmoid激活函数的局限1.回顾需求案例2.ReLU激活函数 常用的激活函数1.线性激活函数的解释 如何选择激活函数?1.选择输出层的激活函数2.选择隐藏层的激活函数 选择激活函数的总结1.输出层总结2.隐藏层总结3.TensorFlow设置激活函数 激活函数多样…...

循序渐进Docker Compose

文章目录 1.概述1.1 Docker Compose 定义1.2 Docker Compose背景1.3 Docker Compose核心概念 2.安装2.1 Official Repos2.2 Manual Installation2.3 v1.x 兼容性 3. YAML 配置说明3.1 Services3.2 Volumes & Networks 4. 解析 Service4.1 Pulling一个Image4.2 Building一个…...

怎样查看JavaScript中没有输出结果的数组值?

在JavaScript中,可以方便地定义和使用数组,对于已经定义的数组,怎样查看其值呢? 看下面的示例,并运行它。 上面的示例中,标签不完整,请补充完整再试运行。你知道少了什么标签么? 注…...

强化学习学习笔记-李宏毅

Policy Gradient actorenvreward function,env和reward是不能控制的,唯一可以变的是actor,Policy π \pi π是一个网络,参数为 θ \theta θ,输入是当前的观察,输出是采取的行为,例如游戏中输…...

吴恩达深度学习笔记:超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架(Hyperparameter tuning)3.8-3.9

目录 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第三周: 超 参 数 调 试 、 Batch 正 则 化 和 程 序 框 架(Hyperparameter …...

SQL 语言:数据控制

文章目录 概述授权(GRANT)销权(REVOKE)总结 概述 SQL语言中的数据控制权限分配是数据库管理的重要组成部分,它涉及到如何合理地为用户分配对数据库资源的访问和使用权限。 权限类型:在SQL中,权限主要分为…...

『ZJUBCA Weekly Feed 07』MEV | AO超并行计算机 | Eigen layer AVS生态

一文读懂MEV:区块链的黑暗森林法则 01 💡TL;DR 这篇文章介绍了区块链中的最大可提取价值(MEV)概念,MEV 让矿工和验证者通过抢先交易、尾随交易和三明治攻击等手段获利,但也导致网络拥堵和交易费用增加。为了…...

正点原子延时函数delay_ms延时失效的原因

1、问题陈述 今天在测试小车程序的时候使用了如下代码,发现延时并没有达到期望的4s,而是仅仅延时了0.4s左右,本来以为少加了个0,最后在我多次测试下来,发现在延时大约超过2s的时候就会失效。 while(1){Set_Pwm(6000,60…...

MySQL 满足条件函数中使用查询最大值函数

在实际的数据库操作中,我们常常需要根据某些条件找到最大值并据此进行下一步的操作。例如,在一个包含订单信息的表中,可能需要找到特定客户的最大订单金额,并据此进行某些统计或决策。MySQL 提供了多种函数和查询方法,…...

Java | Leetcode Java题解之第101题对称二叉树

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isSymmetric(TreeNode root) {return check(root, root);}public boolean check(TreeNode u, TreeNode v) {Queue<TreeNode> q new LinkedList<TreeNode>();q.offer(u);q.offer(v);while (!q.…...

【区块链】智能合约漏洞测试

打开Ganache vscode打开智能合约漏洞工程 合约内容 pragma solidity >0.8.3;contract EtherStore {mapping(address > uint) public balances;function deposit() public payable {balances[msg.sender] msg.value;emit Balance(balances[msg.sender]);}function with…...

大模型主流 RAG 框架TOP10

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接…...

第八次javaweb作业

我们小组课程设计的题目是&#xff1a;超市管理系统&#xff0c;我认领的模块是&#xff1a;商品信息管理 controller package com.example.supermarker.controller;import com.example.supermarker.pojo.MerchInfo; import com.example.supermarker.pojo.PageBean; import c…...

js积累四 (读json文件)

function ReadRadioJson() {var url "../radio.json" //json文件url&#xff0c;本地的就写本地的位置&#xff0c;如果是服务器的就写服务器的路径var request new XMLHttpRequest();request.open("get", url, false); //设置请求方法与路径request.sen…...

关于我转生从零开始学C++这件事:升级Lv.25

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载&#xff0c;请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主&#xff0c;代码兴国&#xff01;❤❤❤ OK了老铁们&#xff0c;又是一个周末&#xff0c;大伟又来继续给大家更新我们的C的内容了。那么根据上一篇博…...

mysql中text,longtext,mediumtext区别

文章目录 一.概览二、字节限制不同三、I/O 不同四、行迁移不同 一.概览 在 MySQL 中&#xff0c;text、mediumtext 和 longtext 都是用来存储大量文本数据的数据类型。 TEXT&#xff1a;TEXT 数据类型可以用来存储最大长度为 65,535(2^16-1)个字符的文本数据。如果存储的数据…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

React核心概念:State是什么?如何用useState管理组件自己的数据?

系列回顾&#xff1a; 在上一篇《React入门第一步》中&#xff0c;我们已经成功创建并运行了第一个React项目。我们学会了用Vite初始化项目&#xff0c;并修改了App.jsx组件&#xff0c;让页面显示出我们想要的文字。但是&#xff0c;那个页面是“死”的&#xff0c;它只是静态…...

13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析

LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...

初探用uniapp写微信小程序遇到的问题及解决(vue3+ts)

零、关于开发思路 (一)拿到工作任务,先理清楚需求 1.逻辑部分 不放过原型里说的每一句话,有疑惑的部分该问产品/测试/之前的开发就问 2.页面部分(含国际化) 整体看过需要开发页面的原型后,分类一下哪些组件/样式可以复用,直接提取出来使用 (时间充分的前提下,不…...