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.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
随机推荐
- 联系E-R:学生选课系统
- listen 78
Struggling Young Readers Like Kindles Kindles, Nooks and other e-readers catch flack for threatening ...
- 使用top命令查看系统状态
Linux系统可以通过top命令查看系统的CPU.内存.运行时间.交换分区.执行的线程等信息.通过top命令可以有效的发现系统的缺陷出在哪里.是内存不够.CPU处理能力不够.IO读写过高? 使用SSH ...
- 集训Day8
旧试题Day2... bzoj3436 有若干个集合和一些信息 信息有3种: I.集合A比集合B至少多C个元素 II.集合A比集合B至多多C个元素 III.集合A和集合B元素一样多 求这些信息是否有矛 ...
- Can't load AMD 64-bit .dll on a IA 32-bit platform错误
将tomcat的bin目录下的tcnative-1.dll文件删除.就可以了.
- ACM学习历程——HDU5017 Ellipsoid(模拟退火)(2014西安网赛K题)
---恢复内容开始--- Description Given a 3-dimension ellipsoid(椭球面) your task is to find the minimal distanc ...
- WPF 中 UserControl作为另一个Process宿主到Window里, ErrorTemplate的默认红框没有出现
最近做WPF项目遇到一个问题, 我有2个process, 一个Process里只有Usercontrol, 另一个Process获取前一个Process中Usercontrol并host到当前的win ...
- Hadoop安装全教程 Ubuntu14.04+Java1.8.0+Hadoop2.7.6
最近听了一个关于大数据的大牛的经验分享,在分享的最后大牛给我们一个他之前写好的关于大数据和地理应用demo.这个demo需要在Linux环境上搭建Hadoop平台.这次就简单的分享一下我关于在 Lin ...
- jmp $
in intel x86 instruction set, "jmp $" means jump to this instruction location, thus fallin ...
- Linux 系统初始化和服务
系统的初始化和服务 1. Linux 系统启动流程 打开计算机,从主板 BIOS(Basic Input/Out System)读取其中所存储的程序,引导你找到存储系统的硬件(如光盘.硬盘等) 接下来 ...