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 student
switched to db student
rs2: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/bash IP=127.0.0.1 NA=rs2sudo mkdir -p /home/m17 /home/m18 /home/m19 /home/mlog sudo 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 admin var rsconf = { _id:'rs2', members:[ {_id:0,host:'${IP}:27017'}, {_id:1,host:'${IP}:27018'}, {_id:2,host:'${IP}:27019'} ] }rs.initiate(rsconf)
转载于:https://www.cnblogs.com/gyfluck/p/9816943.html
MongoDB 复制(副本集)学习相关推荐
- MongoDB之副本集
MongoDB之副本集 一.简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...
- MongoDB的副本集
文章目录 1.副本集-Replica Sets 2.副本集的三个角色 3.副本集架构目标 4.故障测试 1.副本集-Replica Sets MongoDB中的副本集(Replica Set)是一组维 ...
- MongoDB配置副本集(含Arbiter)
MongoDB配置副本集(含Arbiter) 集群模式为:一主一副一仲裁 安装依赖 yum install net-snmp lsof -yyum install net-snmp -y 配置数据节点 ...
- SpringBoot整合MongoDB以及副本集、分片集群的搭建
整合springboot应用 说明: 这里主要以 springboot 应用为基础应用进行整合开发. Spring Data : Spring 数据框架 JPA .Redis.Elasticsearc ...
- MongoDB副本集学习(一):概述和环境搭建
MongoDB副本集概述 以下图片摘自MongoDB官方文档:http://docs.mongodb.org/manual/core/replication-introduction/ Primary ...
- MongoDB 搭建副本集
副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的更新由Primary ...
- MongoDB部署副本集
本页包含内容 概览 系统需求 部署一个基于Key文件实现访问控制的副本集 x.509 内部身份验证 概述 首发于sf.gg. 原文翻译自MongoDB官方文档.我一直认为,与其从网上随便扒一些教程,不 ...
- mongodb系列~mongodb的副本集搭建和原理
一 简介: mongodb副本集 二 复制方式: 1 全量复制 2 增量复制 三 同步检测过程: 一 正常情况下: 1 master执行语句,并将所有的修改数据库的操作以日志Op ...
- MongoDB之副本集配置
MongoDB主从复制 主从复制是 MongoDB 最早使用的复制方式, 该复制方式易于配置,并且可以支持任意数量的从节点服务器,与使用单节点模式相比有如下优点: 在从服务器上存储数据副本,提高了数据 ...
- MongoDB之副本集创建
目录 一 复制 1 复制简介 2 建立副本集 3 网络注意事项 4 安全注意事项 5 观察副本集 6 更改副本集操作 7 如何设计副本集 8 如何进行选举 9 成员变量配置 10 创建索引 二 同步 ...
最新文章
- Linux-CAN Bus
- python正则表达式语法
- 几个WinCE开发的网址
- as3 内容自适应容器大小
- 普通用户Mysql 5.6.13 主从,主主及nagios的mysql slave监控
- 汇编 --- 从磁盘(扇区2到18)上读取数据到内存中
- 【zblog模板】随然响应式导航网址目录主题
- nginx 4层代理配置
- 关于java.lang.ClassNotFoundException: org.git.mm.mysql.Driver的解决办法
- dubbo源码解析-spi(二)
- SushiSwap MISO 遭软件供应链攻击,价值300万美元的以太坊被盗
- day6常用模块,数据库操作
- 计算机硬盘驱动是什么,电脑重装系统时提示缺少硬盘驱动该怎么解决
- Guass消元 poj 1830
- cppcheck 自定义规则_Cppcheck 用法-编码规范
- ubuntu16.04的WPS不识别jpeg图片格式
- c语言结构体应用例程:输入今天日期,输出明天日期
- windows下choco 安装helm
- 基于jsp+java+ssm的大学生缴费系统
- 如何做好软文推广?软文推广有哪些宣传平台值得推荐