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.分片.配置服务器组成. ●查询路由根据配置服务器上的元数据将请求分发到相应的分片上,本身不存储集群的元数据, ...
随机推荐
- logback备注
<?xmlversion="1.0"encoding="UTF-8"?> <!-- <configuration>包含的属性 sc ...
- DLL进一步讲解:extern "C" __declspec(dllexport)
一.__declspec(dllexport): 将一个函数声名为导出函数,就是说这个函数要被其他程序调用,即作为DLL的一个对外函数接口. 通常它和extern "C" ...
- python 案例之老王开枪
- 【Lintcode】119.Edit Distance
题目: Given two words word1 and word2, find the minimum number of steps required to convert word1 to w ...
- nginx 轮询模式 nginx_upstream_jvm_route 插件安装
使用nginx_upstream_jvm_route插件的目的是为了保证在轮询机制下的session的共享 前提:源码方式安装nginx.patch命令 1.下载nginx_upstream_jvm_ ...
- JAVA,MYSQL,ORACLE的数据类型对比
MySQL Data Type Oracle Data Type Java BIGINT NUMBER(19, 0) java.lang.Long BIT RAW byte[] BLOB BLOB, ...
- CAS单点登录学习(一):服务端搭建
下载先在网上下载cas-server-3.5.2,将里面的cas-server-webapp-3.5.2.war放到tomcat的webapps目录下. https设置cas单点登默认使用的是http ...
- web.xml中的<jsp-config>的用法详解
<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素. 其中<taglib>元素在JSP 1.2时就已 ...
- 面试题: 数据库笔试 sql操作 已看 上课的练习题50sql
2018/5/31 oracle数据库面试笔试试题总结http://www.yjbys.com/qiuzhizhinan/show-308759.html 1/4Oracle数据库1.基础测试选择在部 ...
- Google Analytics添加到网站
把Google Analytics添加到网站的具体方式 https://developers.google.com/analytics/devguides/collection/analyticsjs ...