replication set复制集

replicattion set 多台服务器维护相同的数据副本,提高服务器的可用性.一台是服务器出问题了另外2台还可以接收干,secondary平时保持只读状态,专心读取primary只做备份(类似于mysql数据库的主从分离),2台secondary相互也通信, 看看谁更健康,

副本集:是一组保持着相同数据集合的mongod实例.
其中1个mongod为primary,接收全部写操作,其余secodary只负责读操作
primary instance打开oplog, secendary读取oplog,并产生相同的数据集 Replication set 设置全过程( SecureCRT连接linux )
0:创建目录
mkdir -p /data/r0 /data/r1 /data/r2 1:启动3个实例,且声明实例属于某复制集(3个进程都属于相同的复制集rsa)
./bin/mongod --port 27017 --dbpath /data/r0 --smallfiles --replSet rsa --fork --logpath /data/r0/mongo17.log //rsa 是复制集,smallfiles 减小文件
./bin/mongod --port 27018 --dbpath /data/r1 --smallfiles --replSet rsa --fork --logpath /data/r1/mongo18.log
./bin/mongod --port 27019 --dbpath /data/r2 --smallfiles --replSet rsa --fork --logpath /data/r2/mongo19.log netstat –aon | findstr "27017" //进入/d/mongodb/bin开启gitbush
mongod --dbpath ../data/r0 --logpath ../data/r0/r17.log --port 27017 --replSet rsa --smallfiles mongod --dbpath ../data/r1 --logpath ../data/r1/r18.log --port 27018 --replSet rsa --smallfiles mongod --dbpath ../data/r2 --logpath ../data/r2/r19.log --port 27019 --replSet rsa --smallfiles //以下在cmd中操作
$ mongo
use admin //管理application set
//直接运行下面代码
var rsconf = { //2:配置文件(mongo都是js语言)
_id:'rsa', //复制集的id叫rsa
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'
} ]
}
//3: 根据配置做初始化
rs.initiate(rsconf);
{
"OK":1
}
5:查看状态
rs.status();
//已经配置成功了 4: 添加节点,rsconf的members中添加,后期添加节点,
rs.add('192.168.1.201:27018');
rs.add('192.168.1.201:27019'); 6:删除节点
rs.remove('192.168.1.201:27019'); 7:主节点插入数据
>use test
>db.user.insert({uid:1,name:'lily'}); 8:连接secondary查询同步情况
./bin/mongo --port 27019,rs.slaveOk();
>use test
>show tables
>db.user.find() rsa:SECONDARY> show tables;
Sat Aug 17 16:03:55.786 JavaScript execution failed: error: { "$err" : "not master and slaveOk=false", "code" : 13435 } 8.1 出现上述错误,是因为secondary默认不许读写,只能secondary只和primary说话,不润许人和secondary说话
>rs.slaveOk(); //
>show tables
>db.user.find()
#看到与primary 一致的数据 use admin
db.shutdoenServer() //断开primary,查看rs.status();可以看到secondary服务器自动变成primary,secondary不能insert,只能primary能写,现在连到primary(原来的secondary变成的primary)就能够写了。 //原来17端口是主节点,18.19端口是次节点(次节点不能人来insert,只能与主节点同步),17down了后18自动变成了主节点(查看rs.status();),19仍然是次节点,18端口就可以人来写了,19仍然不能写(因为是次端口)。18插入新值之后19次节点就自动同步了,(17活了之后应该能同步新值) /////////写自动化脚本 //清理现场
if[$1 == 'reset']; then //如果要重置环境,就杀掉进程,重置环境
pkill -9 mongo //遗留的mongo进程杀掉
rm -rf /data/r* //遗留的文件夹删掉
fi if[$1 == 'repl'];then IP=192.168.1.202
NA=rs2 //集群名称
mkdir -p /data/r0 /data/r1 /data/r2 //创建目录 //启动3个复制集的实例
/usr/local/mongodb/bin/mongod --dbpath /data/r0 --logpath /data/r0/r17.log --port 27017 --fork --smallfile --replSet ${NA}
/usr/local/mongodb/bin/mongod --dbpath /data/r1 --logpath /data/r0/r18.log --port 27018 --fork --smallfile --replSet ${NA}
/usr/local/mongodb/bin/mongod --dbpath /data/r2 --logpath /data/r0/r19.log --port 27019 --fork --smallfile --replSet ${NA} //配置
/usr/local/mongodb/bin/mongod <<EOF
use admin
var rsconf = { //2:配置文件(mongo都是js语言)
_id:'rsa', //复制集的id叫rsa
members: //复制集的成员
[
{_id:0,
host:'${IP}:27017'
},
{_id:1,
host:'${IP}:27018'
},
{_id:2,
host:'${IP}:27019'
}
]
}
rs.initiate(rsconf);
<< //最后执行sh文件:
sh start.sh 添加仲裁 :
mongod --port 30000 --dbpath /the/path --replSet rs
rs.addArb("m1.example.net:30000")

副本集与仲裁

mongodb09----replicattion set--健壮性的更多相关文章

  1. 安装第三方Python模块,增加InfoPi的健壮性

    这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet    自动检测文本编码 2.lxml    用于解析 ...

  2. 基于 fuzz 技术验证移动端 app 的健壮性

    问题定义 app发布后经常容易出现各种诡异的crash, 这些crash固然可以通过各种崩溃分析服务去定位. 但是的确很影响用户体验. 在crash分类中有一类是后端接口引发的. 比如常见的引发app ...

  3. strcpy之代码的健壮性与可维护性

    strcpy   函数的原型是: char * strcpy(char * strDest,const char * strSrc);    功能:把从strSrc地址开始且含有NULL结束符的字符串 ...

  4. bug:论用例健壮性的重要

    最近出了2个类似问题,此处写下,以作为警醒 问题1: 背景:电商类网站,为了增加用户回流,增加用户购买力度,做了一个和用户等级相关活动 需求:用户等级为g0 -g5,现在有一批代金券有等级领取限制.用 ...

  5. TestOps - 最健壮性的测试角色

    一十一 发表于 2018-03-02 09:10:08 TestOps   最具影响力的测试运维一体化综合平台. DevOps实现了从代码到服务的快速落地,而TestOps集成了DevOps效率,更是 ...

  6. 使用 const 提高函数的健壮性

    使用 const  提高函数的健壮性 看到 const 关键字,C++程序员首先想到的可能是 const 常量.这可不是良好的条件 反射.如果只知道用 const 定义常量,那么相当于把火药仅用于制作 ...

  7. java鲁棒性(健壮性)

    java能检测编译和运行时的错误 java自己操作内存减少了内存出错的可能 java实现了真数组,避免了覆盖数据的可能 Java不支持指针操作,大大减少了错误发生的可能性 ... 备注: Java能运 ...

  8. 程序try-catch的绝对健壮性之嵌套

    写程序的过程中,我们对try-catch在熟悉不过了,捕获异常进行处理,以保证程序的健壮性. 今日突发一想,如果我们catch中的代码异常了怎么办?我们做以下一种假设 static void Main ...

  9. 使用moneykey对APP进行健壮性测试

    注意:moneykey对app按钮伪随机点击,只能测试app稳定性和健壮性,无法进行常规测试 1.安装 A.jdk(不详细介绍) B.安装配置android配置环境:Android Studio 此环 ...

  10. dubbo设计实现的健壮性

    Dubbo 作为远程服务暴露.调用和治理的解决方案,是应用运转的经络,其本身实现健壮性的重要程度是不言而喻的. 这里列出一些 Dubbo 用到的原则和方法. 日志 日志是发现问题.查看问题一个最常用的 ...

随机推荐

  1. manjaro xfce 18.0 踩坑记录

    manjaro xfce 18.0 踩坑记录 1 简介1.1 Manjaro Linux1.2 开发桌面环境2 自动打开 NumLock3 系统快照3.1 安装timeshift3.2 使用times ...

  2. MyISAM和InnoDB索引实现对比

    MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.如图:  这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引 ...

  3. react 语法细节总结说明

    1.当要获取某个数据列表中的某个字段时,用“.”附加的形式.例如:获取user中的balance字段,用this.props.user.balance 来表示. 2.当要打印某个数据或字段结果时,co ...

  4. HDU3183A Magic Lamp,和NYOJ最大的数一样

    A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  5. Linux vi替换字符串

    1. 基本的替换 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sky/ ...

  6. [POJ2594] Treasure Exploration(最小路径覆盖-传递闭包 + 匈牙利算法)

    传送门 引子: 有一个问题,是对于一个图上的所有点,用不相交的路径把他们覆盖,使得每个点有且仅属于一条路径,且这个路径数量尽量小. 对于这个问题可以把直接有边相连的两点 x —> y,建一个二分 ...

  7. POJ3041:Asteroids【二分图匹配】

    二分图的最大匹配=最小顶点覆盖(Konig定理)=最大独立集的补集最大匹配经典的三种模型  这题就是最小顶点覆盖,顺便这题留给我的经验就是调试的时候一定要细心细心再细心对模板的各个细节都要熟!! #i ...

  8. 【bzoj1090】 [SCOI2003]字符串折叠

    [bzoj1090] [SCOI2003]字符串折叠 2014年3月9日3,1140 Description 折叠的定义如下: 1. 一个字符串可以看成它自身的折叠.记作S  S 2. X(S)是X ...

  9. typeof、constructor和instanceof

    在JavaScript中,我们经常使用typeof来判断一个变量的类型,使用格式为:typeof(data)或typeof data.typeof返回的数据类型有六种:number.string.bo ...

  10. ***iOS学习之Table View的简单使用和DEMO示例(共Plain普通+Grouped分组两种)

    Table View简单描述: 在iPhone和其他iOS的很多程序中都会看到Table View的出现,除了一般的表格资料展示之外,设置的属性资料往往也用到Table View,Table View ...