千家信息网

MongoDB中副本集的示例分析

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍了MongoDB中副本集的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:replication se
千家信息网最后更新 2025年02月02日MongoDB中副本集的示例分析

这篇文章主要介绍了MongoDB中副本集的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体如下:

replication set复制集,
复制集,多台服务器维护相同的数据副本,提高服务器的可用性。
MongoDB复制是将数据同步在多个服务器的过程。
复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
复制还允许您从硬件故障和服务中断中恢复数据。

设置过程:

(1)创建示例

假设创建三台,创建三个实例目录和日志目录:
mkdir /home/m17 /home/m18 /home/m19 /home/mlog
启动三个示例,端口分别为27017、27018、27019。

./mongod --dbpath=/home/m17 --logpath=/home/mlog/m17.log --fork --port=27017 --replSet=rs2 --smallfiles./mongod --dbpath=/home/m18 --logpath=/home/mlog/m18.log --fork --port=27018 --replSet=rs2 --smallfiles./mongod --dbpath=/home/m19 --logpath=/home/mlog/m19.log --fork --port=27019 --replSet=rs2 --smallfiles

说明:

参数--replSet设置一样,才能属于同一个复制集
参数--smallfiles可以节省空间,提高速度。

然后使用ps aux | grep mongo可以查看到启动起来的三个端口。

(2)配置

使用客户端连接mongo进行配置:

[test@localhost bin]$ ./mongo

要管理配置,所以切换到admin上:

>use admin

(配置是json格式)

var rsconf = {_id:'rs2',members:[{"_id":0,host:'192.168.8.172:27017'},{_id:1,host:'192.168.8.172:27018'},{_id:2,host:'192.168.8.172:27019'}]}

如果没有配置ip,使用127.0.0.1

var rsconf = {_id:'rs2',members:[{_id:0,host:'127.0.0.1:27017'},{_id:1,host:'127.0.0.1:27018'},{_id:2,host:'127.0.0.1:27019'}]}

执行后,使用 printjson(rsconf)查看刚才的配置。

然后执行初始化:

>rs.initiate(rsconf);> rs.initiate(rsconf);{"ok" : 1,"operationTime" : Timestamp(1539933041, 1),"$clusterTime" : {"clusterTime" : Timestamp(1539933041, 1),"signature" : {"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),"keyId" : NumberLong(0)}}}rs2:SECONDARY>

查看节点:

rs.status()

删除节点:

rs.remove('127.0.0.1:27019')

添加节点:

rs.add('127.0.0.1:27019')

切换节点:

默认是在27017端口,即rs2:PRIMARY>状态,
退出mongo客户端命令模式,
切换到另一个端口:

[test@localhost bin]$ ./mongo --port=27018,

即切换到rs2:SECONDARY>状态。

测试:

在主服务上,创建库和集合,

rs2:PRIMARY> use studentswitched to db studentrs2:PRIMARY> db.user.insert({uid:1,name:'zhang san'})WriteResult({ "nInserted" : 1 })rs2:PRIMARY> db.user.find();{ "_id" : ObjectId("5bc9889f85a0986431fd2499"), "uid" : 1, "name" : "zhang san" }

去从服务上查看

show dbs

然后看到有错误,具体错误信息是:

...
"errmsg" : "not master and slaveOk=false",
...

是因为slave默认不允许读写:

>rs.slaveOk();

然后就可以看到主服务器创建的库和集合了。

同理27019也需要执行这个命令才能自动同步和读写。

当主服务器27017停掉的时候,
第二个27018就自动变成主服务器master状态。
但是27019需要再次执行rs.slaveOk()才能自动同步读写。

shell脚本:

#!/bin/bashIP=127.0.0.1NA=rs2sudo mkdir -p /home/m17 /home/m18 /home/m19 /home/mlogsudo chmod -R 777 /home/m17 /home/m18 /home/m19 /home/mlog./mongod --dbpath=/home/m17 --logpath=/home/mlog/m17.log --fork --port=27017 --replSet=${NA} --smallfiles./mongod --dbpath=/home/m18 --logpath=/home/mlog/m18.log --fork --port=27018 --replSet=${NA} --smallfiles./mongod --dbpath=/home/m19 --logpath=/home/mlog/m19.log --fork --port=27019 --replSet=${NA} --smallfiles./mongo <

感谢你能够认真阅读完这篇文章,希望小编分享的"MongoDB中副本集的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

服务 数据 服务器 配置 副本 示例 端口 篇文章 节点 切换 三个 状态 同步 分析 参数 可用性 命令 多个 客户 客户端 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 力控转数据库 本地网站数据库密码怎么修改 洞口软件开发中专学校 信息系统产品发展数据库 南京网络安全集成商 国家关于网络安全的相关法律 雅虎邮箱接受服务器是什么 网络安全法规定国家网部门 软件开发行业不受地域限制 几大软件开发公司 昆明骑士网络技术有限公司 oracle中建立数据库 要求键入网络安全密钥 软件连接数据库有时候卡死 公安学习宣传网络安全法 石家庄市网络安全预警通报制度 网络安全专业求职意向 美国防部网络安全战略 计算机软件开发培训经营范围 北京哪里有软件开发电话 计算机网络技术表白 基于内容的网络安全 vs2022怎么用静态数据库 初创公司网络安全 江苏工控软件开发哪家实惠 互联网软件开发资费 微客森网络技术有限公司官网 网络安全四年级简单手抄报字少 网络安全管理技术是什么意思 广州今玖互联网科技有限公司
0