副本集合数据的读写操作|学习笔记

简介: 快速学习副本集合数据的读写操作

开发者学堂课程【MongoDB精讲课程(下)副本集合数据的读写操作】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/727/detail/12975


副本集合数据的读写操作

 

内容介绍

一、副本集的搭建

二、主节点的写入和读取数据

三、从主节点的写入和读取数据

四、设置读操作权限

 

一、副本集的搭建

查看一下副本集当前的一个状态,输入 is.status,主要看 Mars 成员,这个成员现在看到的就不是一个了,一共是三个,看 ID 就知道了,一共是三个成员,这三个成员分别是一主一从一仲裁。即一开始初始化的时候主的27017,然后副本节点就是从节点是27018,然后还有一个仲裁节点是27019,

副本集都搭建完了,搭建完了之后,主要是来看一下数据的读写操作。搭建副本集也是为了完成咱们数据的一个存储,包括一些增删改查的操作。

 

二、主节点的写入和读取数据

目标:测试三个不同角色的节点的数据读写情况。

登录主节点27017,写入和读取数据:

还是用之前的小 demo,先创建一个库,直接在这里面插入一条数据:

[root@bobohost ~]#/usr/1oca1/mongodb/bin/mongo --host 180.76.159.126 --port 27017

myrs:PRIMARY> use articledb

switched to db articledb

myrs:PRIMARY> db

articledb

myrs:PRIMARY> db.comment.insert({"articleid":"100000","content":"今天天气真好,阳光明媚","userid" :"1001","nickname" : "Rose","createdatetime":new Date()}) WriteResult({"nInserted":1 }) myrs:PRIMARY> db.comment.find){"id":objectid("5d4d2ae3068138b4570f53bf"),"articleid”:"100000","content”:"今天天气真好。阳光明媚" "userid":"1001" "nickname":"Rose" "createdatetime" . Isodate("2019-08-09T08:12:19.427Z")}

 

三、从主节点的写入和读取数据

主要是测试一下副本集的一些数据操作。

主节点的读写没问题,副本节点,从节点用另一个窗口来演示,登录就看出来区别了,副本节点是 secondary,主节点是 primary。

登录从节点27018

[root@bobohost ~]#/usr/1oca1/mongodb/bin/mongo --host 180.76.159.126 --port 27018

myrs:SECONDARY> show dbs:

2019-09-10T10:56:51.953+0800 E QUERY[is]

Error: 1istDatabases failed:{

"operationTime":Timestamp(1568084204,1)."ok":0,

"errmsg" : "not master and slaveok=false""code": 13435,

"codeName": "NotMasterNoslaveok","$clusterTime" :{

"clusterTime":Timestamp(1568084204,1),"signature" :{

"hash":BinData(O,"AAAAAAAAAAAAAAAAAAAAAAAAAAA=")

"keyId" :NumberLong(0)

_getErrorwithcode@src/mongo/she11/utils.js:25:13

Mongo.prototype.getDBs@src/mongo/she11/mongo.is:139:1 she11He1per.show@src/mongo/she11/utilsjs:882:13 she11He1per@src/mongo/she11/utilsjs:766:15@(she11he1p2):1:1

发现,不能读取集合的数据。当前从节点只是一个备份,不是奴隶节点,无法读取数据。

因为默认情况下,从节点是没有读写权限的,可以增加读的权限,但需要进行设置。

 

四、设置读操作权限

说明:

设置为奴隶节点,允许在从成员上运行读的操作

语法:

rs.slaveok()#或

rs.slaveok(true)

提示:

该命令是 db.getMongo().sets1aveok() 的简化命令。

示例

在27018上设置作为奴隶节点权限,具备读权限:

rs:SECONDARY> rs.s1aveok()

此时,在执行查询命令,运行成功!

但仍然不允许插入。

myrs:SECONDARY> rs.sTaveok()

myrs:SECONDARY> show dbs;

admin 0.000GB

articledb 0.000GB

config 0.000GB

1oca1 0.000GB

myrs:SECONDARY> use articledb switched to db articledb

switched to db articledb

myrs:SECONDARY> show collections comment

myrs:SECONDARY> db.comment.find()

{"_id": objectid("5d7710c04cfd7eee2e3cdabe"),"articleid" : "100000","content”:"今天天气真好,阳光明媚","userid”:"1001","nickname":"Rose","createdatetime" : IsoDate("2019-09-10T02:56:00.467Z")}

myrs:SECONDARY> db.comment.insert({"id":"1" "articleid":"100001" "content":"我们不应该把清晨浪费在手机上,健康很重要,k一杯温水幸福你我他。""userid":"1002","nickname":"相忘于江湖" "createdatetime":new Date("2019-08-

05T22:08:15.5222"),"7ikenum":NumberInt(1000),"state":"1"}) WriteCommandError({

"operationTime":Timestamp(1568084434,1)."ok":0,

"errmsg" : "not master","code": 101Ú7,

"codeName":"NotMaster""$clusterTime":{

"clusterTime":Timestamp(1568084434.1)"signature":{

"hash": BinData(O."AAAAAAAAAAAAAAAAAAAAAAAAAAA=")"keyId":NumberLong

现在可实现了读写分离,让主插入数据,让从来读取数据。

如果要取消作为奴隶节点的读权限:

myrs:SECONDARY> rs.slaveok(false) myrs:SECONDARY> db.comment.find() Error: error:{

"operationTime":Timestamp(1568084459,1),"ok": 0,

"errmsg" : "not master and slaveok=false"."code": 13435.

"codeName":"NotMasterNoslaveok",

"clusterTime" :{

"clusterTime":Timestamp(1568084459,1),"signature":{

"hash": BinData(O,"AAAAAAAAAAAAAAAAAAAAAAAAAAA=")"keyId": NumberLong(0)

数据它是会自动同步的,因为现在处在同一个副本集里面,这就是副本的操作,副本操作最主要的是需要设置一下 sliver ok,设置 level ok之后,就可以去查询刚刚在主节点里面插入的数据了,数据会自动的同步,当然现在是一条数据,如果数据很多的话可能需有一个延时。

相关文章
|
NoSQL Cloud Native MongoDB
分片集群中的分片集合
分片集群中的分片集合
|
1月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
42 1
|
5月前
|
存储 NoSQL 算法
Redis集群,集群的概念 三种主流分片方式1.哈希求余 一致性哈希算法:方案三:哈希槽分区算法问题一Redis集群是最多有16384个分片吗问题二:为什么是16384个,集群扩容:1.新的主节点
Redis集群,集群的概念 三种主流分片方式1.哈希求余 一致性哈希算法:方案三:哈希槽分区算法问题一Redis集群是最多有16384个分片吗问题二:为什么是16384个,集群扩容:1.新的主节点
|
6月前
|
存储 缓存 负载均衡
软件体系结构 - 数据分片(2)一致性哈希分片
【4月更文挑战第20天】软件体系结构 - 数据分片(2)一致性哈希分片
202 21
|
6月前
|
存储 缓存 NoSQL
软件体系结构 - 数据分片(1)哈希分片
【4月更文挑战第20天】软件体系结构 - 数据分片(1)哈希分片
170 8
|
6月前
|
消息中间件 存储 缓存
Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
【2月更文挑战第20天】Kafka【基础知识 02】集群+副本机制+数据请求+物理存储+数据存储设计(图片来源于网络)
132 1
|
6月前
|
存储 分布式计算 数据管理
HDFS中的数据一致性是如何保证的?请解释数据一致性的概念和实现方式。
HDFS中的数据一致性是如何保证的?请解释数据一致性的概念和实现方式。
257 0
|
消息中间件 存储 关系型数据库
PostqreSQL 表级复制-Londiste3多节点数据同步合 并到单节点|学习笔记
快速学习 PostqreSQL 表级复制-Londiste3多节点数据同步合并到单节点
PostqreSQL 表级复制-Londiste3多节点数据同步合 并到单节点|学习笔记
38MyCat - 分片规则(自然月分片)
38MyCat - 分片规则(自然月分片)
56 0
|
存储 负载均衡 数据中心
带你读《存储漫谈:Ceph原理与实践》——3.2.5 元数据 / 数据同步
带你读《存储漫谈:Ceph原理与实践》——3.2.5 元数据 / 数据同步
下一篇
无影云桌面