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.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
随机推荐
- LinkedList_1.打印两个有序链表的公共部分
思路: 实例化出两个链表($link_a, $link_b),比较连个链表当前元素的大小,谁小谁执行next()方法继续比较,当出现相当的时候把相等的值塞入数组$common里,当两个链表有一个元素比 ...
- 机器学习 scikit-learn 图谱
scikit-learn 是机器学习领域非常热门的一个开源库,基于Python 语言写成.可以免费使用. 网址: http://scikit-learn.org/stable/index.html 上 ...
- hdu 3625 Examining the Rooms —— 第一类斯特林数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3625 学习斯特林数:https://blog.csdn.net/qq_33229466/article/d ...
- Java中的数组和方法
3.1 数组的定义和使用 数组(Array)是用来存储一组相同数据类型数据的集合.数组中的每个数据称为一个元素(element),数组可以分为一维数组,二维数组和多维数组.我们 主要讲解一维数组和二维 ...
- Windows下caffe安装详解(仅CPU)
本文大多转载自 http://blog.csdn.net/guoyk1990/article/details/52909864,加入部分自己实战心得. 1.环境:windows 7\VS2013 2. ...
- Web 字体的选择和运用
首先来看一则设计师和前端小白的日常,这是使用 Mac OS 的设计师给的效果图 这是使用 Windows 开发的实际产品页面 我跟你们说,设定字体要按照基本法! (PS: 以上截图不代表网站真实面貌, ...
- metasploit msfconsole 命令
metasploit msfconsole 命令 msf > help db_autopwn Commands =================== Command Description - ...
- 一文带你认识Java8中接口的默认方法
Java8是Oracle于2014年3月发布的一个重要版本,其API在现存的接口上引入了非常多的新方法. 例如,Java8的List接口新增了sort方法.在Java8之前,则每个实现了List接口的 ...
- org.apache.commons.httpclient和org.apache.http.client区别(转)
官网说明: http://hc.apache.org/httpclient-3.x/ Commons HttpClient项目现已结束,不再开发.它已被其HttpClient和HttpCore模块中的 ...
- TSubclassOf的一些说明
注:补充下SpawnActor的用法 TSubclassOf<AActor> TS = LoadClass<AActor>(NULL, TEXT("Blueprint ...