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.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
随机推荐
- Linux-NoSQL之memcached
1.memcached安装 yum search memcached yum install -y libevent memcached libmemcached 启动:/etc/init.d/mem ...
- 前端多媒体(4)—— video标签全面分析
测试地址:https://young-cowboy.github.io/gallery/html5_video/index.html 属性 一些属性是只读的,一些属性是可以修改从而影响视频播放的. a ...
- 【boost】ptree 读写中文的问题
最经项目中使用到了boost property_tree,却在中文问题上遇到大问题. 直接使用ptree读写存储于窄字符(如string)类型的中文字符串时,程序可以运行,但由于XML默认使用UTF- ...
- android自定义控件(三) 自定义属性
书接上回 在xml里建立属性,然后java代码里用typedArray获得这些属性,得到属性后,利用属性做一些事.例:得到xml里的color,赋给paint. 1.在res/values/下新建at ...
- windows 查看物理内存有几条以及查看电脑系统版本号的命令(dxdiag)
- python爬虫知识点详解
python爬虫知识点总结(一)库的安装 python爬虫知识点总结(二)爬虫的基本原理 python爬虫知识点总结(三)urllib库详解 python爬虫知识点总结(四)Requests库的基本使 ...
- BZOJ2329:[HNOI2011]括号修复
浅谈\(splay\):https://www.cnblogs.com/AKMer/p/9979592.html 浅谈\(fhq\)_\(treap\):https://www.cnblogs.com ...
- poj3422K方格取数——最大费用最大流
题目:http://poj.org/problem?id=3422 最大费用最大流: 拆点,在自点之间连两条边,一条容量为1,边权为数字:一条容量为k-1,边权为0:表示可以走k次,只有一次能取到数字 ...
- WCF IIS部署
创建WCFHost应用程序 Iservice.cs using System; using System.Collections.Generic; using System.Linq; using S ...
- win32常用代码整理
1.ShellExecute [Use ShellAPI] ShellExecute(Handle, 'open', 'http://www.cnblogs.com/lovelp/', nil, ni ...