时间:2021-05-24
本文实例讲述了MongoDB 复制(副本集)。分享给大家供大家参考,具体如下:
replication set复制集,
复制集,多台服务器维护相同的数据副本,提高服务器的可用性。
MongoDB复制是将数据同步在多个服务器的过程。
复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。
复制还允许您从硬件故障和服务中断中恢复数据。
设置过程:
(1)创建示例
假设创建三台,创建三个实例目录和日志目录:
mkdir /home/m17 /home/m18 /home/m19 /home/mlog
启动三个示例,端口分别为27017、27018、27019。
说明:
参数--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客户端命令模式,
切换到另一个端口:
即切换到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 <<EOFuse adminvar rsconf = {_id:'rs2',members:[{_id:0,host:'${IP}:27017'},{_id:1,host:'${IP}:27018'},{_id:2,host:'${IP}:27019'}]}rs.initiate(rsconf)希望本文所述对大家MongoDB数据库程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Mongodb3.0.5副本集搭建及spring和java连接副本集配置详细介绍一、基本环境:mongdb3.0.5数据库spring-data-MongoDB
前言MongoDB副本集默认会创建local、admin数据库,local数据库主要存储副本集的元数据,admin数据库则主要存储MongoDB的用户、角色等信
在MongoDB副本集的测试中发现了一个丢数据的案例。1.概要描述测试场景为:一主一从一验证测试案例step1:关闭从副本;step2;向主副本中插入那条数据;
背景:由于历史原因,某个MongoDB副本集只有一主一从双节点,无法满足自动故障转移要求,需要配置一个仲裁节点。原有节点192.168.10.20:27017,
MongoDB是一个开源的non-SQL数据库引擎。MongoDB是可扩展的,是标准关系数据库管理系统(RDBMS)的替代品。副本集可以使在节点发生故障时还能提