replcation set (复制集)配置过程 --mongodb
一,配置规划
复制集原理(
基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB) Paxos(mysql MGR 用的是变种))
如果发生主库宕机,复制集内部会进行投票选举,选择一个新的主库替代原有主库对外提供服务。同时复制集会自动通知
客户端程序,主库已经发生切换了。应用就会连接到新的主库。
)
多端口化: 28017、28018、28019、28020
配置多实例
mkdir -p /mongodb//conf /mongodb//data /mongodb//log
mkdir -p /mongodb//conf /mongodb//data /mongodb//log
mkdir -p /mongodb//conf /mongodb//data /mongodb//log
mkdir -p /mongodb//conf /mongodb//data /mongodb//log 多套配置文件 /mongodb//conf/mongod.conf
/mongodb//conf/mongod.conf
/mongodb//conf/mongod.conf
/mongodb//conf/mongod.conf 配置文件内容 vim /mongodb//conf/mongod.conf
systemLog:
destination: file
path: /mongodb//log/mongodb.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /mongodb//data
directoryPerDB: true
#engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB:
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port:
replication:
oplogSizeMB:
replSetName: my_repl cp /mongodb//conf/mongod.conf /mongodb//conf/
cp /mongodb//conf/mongod.conf /mongodb//conf/
cp /mongodb//conf/mongod.conf /mongodb//conf/ sed 's#28017#28018#g' /mongodb//conf/mongod.conf -i
sed 's#28017#28019#g' /mongodb//conf/mongod.conf -i
sed 's#28017#28020#g' /mongodb//conf/mongod.conf -i
启动所有实例
mongod -f /mongodb//conf/mongod.conf
mongod -f /mongodb//conf/mongod.conf
mongod -f /mongodb//conf/mongod.conf
mongod -f /mongodb//conf/mongod.conf


二, 复制集配置
一主两从
mongo --port admin
config = {_id: 'my_repl', members: [
{_id: , host: '10.0.0.53:28017'},
{_id: , host: '10.0.0.53:28018'},
{_id: , host: '10.0.0.53:28019'}]
}

重置所有
rs.initiate(config)

查看复制集状态
rs.status();

重新输入命令就能出来谁是主从了
一主一从一arb
搭建前添加节点
mongo -port admin
config = {_id: 'my_repl', members: [
{_id: , host: '10.0.0.51:28017'},
{_id: , host: '10.0.0.51:28018'},
{_id: , host: '10.0.0.51:28019',"arbiterOnly":true}]
}
rs.initiate(config)
搭建后添加节点
删除节点
my_repl:PRIMARY> rs.remove("10.0.0.53:28019")
添加ARB节点
s.addArb("10.0.0.53:28019")
____ 添加从节点______
my_repl:PRIMARY> rs.add("10.0.0.53:28019");
添加ARB节点后查看

三, 故障查看
故障主节点宕机:

查看状态:
[mongod@db03 ~]$ mongo --port admin
MongoDB shell version: 3.2.
connecting to: 127.0.0.1:/admin
Server has startup warnings:
--03T15::33.679+ I CONTROL [initandlisten]
--03T15::33.679+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
--03T15::33.679+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
--03T15::33.679+ I CONTROL [initandlisten]
--03T15::33.679+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
--03T15::33.679+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
--03T15::33.679+ I CONTROL [initandlisten]
my_repl:PRIMARY> db.stats()
{
"db" : "admin",
"collections" : ,
"objects" : ,
"avgObjSize" : ,
"dataSize" : ,
"storageSize" : ,
"numExtents" : ,
"indexes" : ,
"indexSize" : ,
"fileSize" : ,
"ok" :
}
my_repl:PRIMARY> rs.status()
{
"set" : "my_repl",
"date" : ISODate("2018-12-03T07:36:43.228Z"),
"myState" : ,
"term" : NumberLong(),
"heartbeatIntervalMillis" : NumberLong(),
"members" : [
{
"_id" : ,
"name" : "10.0.0.53:28017",
"health" : ,
"state" : ,
"stateStr" : "(not reachable/healthy)",
"uptime" : ,
"optime" : {
"ts" : Timestamp(, ),
"t" : NumberLong(-)
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2018-12-03T07:36:42.063Z"),
"lastHeartbeatRecv" : ISODate("2018-12-03T07:35:31.656Z"),
"pingMs" : NumberLong(),
"lastHeartbeatMessage" : "Connection refused",
"configVersion" : -
},
{
"_id" : ,
"name" : "10.0.0.53:28018",
"health" : ,
"state" : ,
"stateStr" : "PRIMARY",
"uptime" : ,
"optime" : {
"ts" : Timestamp(, ),
"t" : NumberLong()
},
"optimeDate" : ISODate("2018-12-03T07:35:42Z"),
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(, ),
"electionDate" : ISODate("2018-12-03T07:35:42Z"),
"configVersion" : ,
"self" : true
},
{
"_id" : ,
"name" : "10.0.0.53:28019",
"health" : ,
"state" : ,
"stateStr" : "ARBITER",
"uptime" : ,
"lastHeartbeat" : ISODate("2018-12-03T07:36:42.057Z"),
"lastHeartbeatRecv" : ISODate("2018-12-03T07:36:42.619Z"),
"pingMs" : NumberLong(),
"syncingTo" : "10.0.0.53:28018",
"configVersion" :
}
],
"ok" :
}
my_repl:PRIMARY>

启动故障节点
[mongod@db03 ~]$ mongod -f /mongodb//conf/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process:
child process started successfully, parent exiting

进入主节点再次查看状态

检测到存活自动生成为从节点
四, 特殊节点配置
添加隐藏节点
rs.conf()
"_id" : , ---------成员号
"host" : "10.0.0.53:28017", ----节点信息
"arbiterOnly" : false, ---- 是否为仲裁节点
"buildIndexes" : true,
"hidden" : false, --------是否为隐蔽节点
"priority" : , ----------------选主权重
"tags" : { },
"slaveDelay" : NumberLong(), ------延时的时间
"votes" :
首先添加一个新的节点
my_repl:PRIMARY> rs.add("10.0.0.53:28020")
{ "ok" : }
配置隐藏节点
my_repl:PRIMARY> cfg=rs.conf()
{
"_id" : "my_repl",
"version" : ,
"protocolVersion" : NumberLong(),
"members" : [
{
"_id" : ,
"host" : "10.0.0.53:28017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : ,
"tags" : { },
"slaveDelay" : NumberLong(),
"votes" :
},
{
"_id" : ,
"host" : "10.0.0.53:28018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : ,
"tags" : { },
"slaveDelay" : NumberLong(),
"votes" :
},
{
"_id" : ,
"host" : "10.0.0.53:28019",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : ,
"tags" : { },
"slaveDelay" : NumberLong(),
"votes" :
},
{
"_id" : ,
"host" : "10.0.0.53:28020",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : ,
"tags" : { },
"slaveDelay" : NumberLong(),
"votes" :
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : ,
"heartbeatTimeoutSecs" : ,
"electionTimeoutMillis" : ,
"getLastErrorModes" : { },
"getLastErrorDefaults" : {
"w" : ,
"wtimeout" :
},
"replicaSetId" : ObjectId("5c04d9f3892649e9da38101f")
}
}
my_repl:PRIMARY> cfg.members[].priority= my_repl:PRIMARY> cfg.members[].hidden=true
true
my_repl:PRIMARY> cfg.members[].slaveDelay= my_repl:PRIMARY> rs.reconfig(cfg)
{ "ok" : }
my_repl:PRIMARY>
配置取消出错后恢复
cfg=rs.conf()
cfg.members[].priority=
cfg.members[].hidden=false
cfg.members[].slaveDelay=
rs.reconfig(cfg)
五, 其他
--查看副本集的配置信息
admin> rs.config()
或者
admin> rs.conf() --查看副本集各成员的状态
admin> rs.status()
++++++++++++++++++++++++++++++++++++++++++++++++
--副本集角色切换(不要人为随便操作)
admin> rs.stepDown()
注:
admin> rs.freeze() //锁定从,使其不会转变成主库
freeze()和stepDown单位都是秒。
+++++++++++++++++++++++++++++++++++++++++++++
--设置副本节点可读:在副本节点执行
admin> rs.slaveOk() eg:
admin> use app
switched to db app
app> db.createCollection('a')
{ "ok" : , "errmsg" : "not master", "code" : } --查看副本节点(监控主从延时)
admin> rs.printSlaveReplicationInfo()
source: 192.168.1.22:
syncedTo: Thu May :: GMT+ (CST)
secs ( hrs) behind the primary
replcation set (复制集)配置过程 --mongodb的更多相关文章
- mongodb 3.4分片复制集配置
1:启动三个实例 mongod -f /home/mongodb/db27017/mongodb27017.conf mongod -f /home/mongodb/db27018/mongodb27 ...
- mongodb 3.4复制集配置
1:启动三个实例 /bin/mongod --config /home/mongodb/db27017/mongodb27017.conf /bin/mongod --config /home/mon ...
- spring mongodb 复制集配置(实现读写分离)
注:mongodb当前版本是3.4.3 spring连接mongodb复制集的字符串格式: mongodb://[username:password@]host1[:port1][,host2[: ...
- Windows 下MongoDB复制集配置
1.下载服务.https://www.mongodb.com/ 点击products 下拉第二列MongoDB server 选择 4.0.6 2.下载下来后 有限管理员运行 一路安装,可以不用 ...
- mongodb复制集配置
#more /opt/mongodb3.0/mongodb_im_conf_47020/mongodb3.0_im_47020.cnf dbpath = /opt/mongodb3.0/mongodb ...
- MySQL主主复制(双主复制)配置过程介绍
一.修改配置文件my.cnf服务器A(172.16.16.70)配置如下server_id = 70socket = /tmp/mysql.sockinnodb_buffer_pool_size = ...
- MongoDB for OPS 02:复制集 RS 配置
写在前面的话 对于生产环境而言,除非是非常不重要的业务,且该业务允许我们出现一定时间的停机,我们一般才会使用单节点,且该单节点必须要有完善的备份手段. RS 复制集 我们这里采取一主两从的方式搭建复制 ...
- MongoDB复制集原理、环境配置及基本测试详解
一.MongoDB复制集概述 MongoDB复制集实现了冗余备份和故障转移两大功能,这样能保证数据库的高可用性.在生产环境,复制集至少包括三个节点,其中一个必须为主节点,一个从节点,一个仲裁节点.其中 ...
- MongoDB之分片集群与复制集
分片集群 1.1.概念 分片集群是将数据存储在多台机器上的操作,主要由查询路由mongos.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
随机推荐
- java中interface 的特性
有时必须从几个类中派生出一个子类,继承它们所有的属性和方法.但是,Java不支持多重继承.有了接口,就可以得到多重继承的效果. 接口(interface)是抽象方法和常量值的定义的集合.从本质上讲,接 ...
- Java命名规范(简略)
1.包 全部小写,由域名定义前缀. 例如:teach.golddrem.javagroup 2.类 开头字母大写,后边每个单词的首字母都大写.如果有缩写,缩写部分全部大写. 例如:Informatio ...
- poj1065 Wooden Sticks[LIS or 贪心]
地址戳这.N根木棍待处理,每根有个长x宽y,处理第一根花费1代价,之后当处理到的后一根比前一根长或者宽要大时都要重新花费1代价,否则不花费.求最小花费代价.多组数据,N<=5000 本来是奔着贪 ...
- BZOJ3772:精神污染
浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...
- 洛谷 2585 [ZJOI2006]三色二叉树——树形dp
题目:https://www.luogu.org/problemnew/show/P2585 可以把不是绿色的记成一种.仔细一想不会有冲突.如果自己是绿色,孩子的不同颜色不会冲突:如果自己不是绿色,自 ...
- MVC之一、预备知识储备
自动属性 隐式类型 对象初始化器与集合初始化器 匿名类 扩展方法 Lambda表达式 (1).自动属性(Auto-Implemented Properties) C#自动属性可以避免原来这样我们手工声 ...
- 【转】Pro Android学习笔记(二):开发环境:基础概念、连接真实设备、生命周期
在Android学习笔记(二):安装环境中已经有相应的内容.看看何为新.这是在source网站上的Android架构图,和标准图没有区别,只是这张图颜色好看多了,录之.本笔记主要讲述Android开发 ...
- win7 64位搭建Mantis 缺陷管理系统(2)
建立Bug数据库 1. 右键Windows托盘的图标,选择“Local Web”,(或者在IE地址中输入“http://127.0.0.1/”)可看到如下页面: 2. 点击选择“mantis”,进入页 ...
- lwip 移植
一.源码目录结构 api . core.netif. include core下又有IPV4 . IPV6 . SNMP 和.c文件 include下又有IPV4.IPV6.LWIP.netif ne ...
- Source insight 支持汇编
把uboot代码添加到SI的项目里面,打开*.S的文件的时候,发现还是黑白色的,感觉很不舒服,我使用的SI的版本是: ver 3.50,通过百度,找到了解决的办法,方法如下: 1:想让*.s 或者 * ...