Mongodb 副本集分片(二)---mongodb副本集部署脚本详解
分享下,最近做的一主一从一仲裁的示例,如有需要,大家可以扩展成一主两从一仲裁。
大家可以看到 我的集群名字沿用了默认的neunnm,如果是其他的话 大家注意修改。
需要辅助文件hosts.conf放置在与脚本相同的路径下。
[root@server mongodb]# cat hosts.conf
127.0.0.1 27017
127.0.0.1 28017
127.0.0.1 29017
示例,大家可以安心的用#或者空行。
下面是replset的脚本,在mongodb中可以调用外部json文件执行脚本,也可以用--eval参数来带一定的json串。
[root@ntp-server mongodb]# cat replset_config.sh
#!/bin/bash
for i in `seq 1 2` //如果一主2从1仲裁的话,此处可以写成for i in `seq 1 3`即可
do
HOST=`cat hosts.conf | grep -v ^# | grep -v ^$ | sed -n ${i}p | awk '{print $1}'`
PORT=`cat hosts.conf | grep -v ^# | grep -v ^$ | sed -n ${i}p | awk '{print $2}'`
NUM=`expr ${i} - 1`
INTO="{_id: ${NUM}, host: '${HOST}:${PORT}'},"
if [ -z "${MOUT}" ]; then
MOUT="config={_id: 'neunnm', members:[" //此处可以修改集群名字(_id: 'neunnm')。
fi
MOUT=${MOUT}${INTO}
done
HOST3=`cat hosts.conf | grep -v ^# | grep -v ^$ | sed -n 3p | awk '{print $1}'` //一主2从1仲裁的话 此处3p改成4p
PORT3=`cat hosts.conf | grep -v ^# | grep -v ^$ | sed -n 3p | awk '{print $2}'` //一主2从1仲裁的话 此处3p改成4p
INTO3="{_id: 2, host: '${HOST3}:${PORT3}', arbiterOnly:true}]}" //一主2从1仲裁的话 此处_id: 2改成_id: 3
MCONFIG=${MOUT}${INTO3}
mongo --host=127.0.0.1:27017 --eval "$MCONFIG" //查看配置是否ok
mongo --host=127.0.0.1:27017 --eval "$MCONFIG;rs.initiate(config)" //初始化集群
sleep 10s
mongo --host=127.0.0.1:27017 --eval "rs.status()" //可以查看集群状态
查看集群状态如下:
neunnm:PRIMARY> rs.status()
{
"set" : "neunnm",
"date" : ISODate("2016-03-22T06:26:46.867Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "127.0.0.1:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 5328,
"optime" : {
"ts" : Timestamp(1458627964, 2),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2016-03-22T06:26:04Z"),
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1458627964, 1),
"electionDate" : ISODate("2016-03-22T06:26:04Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "127.0.0.1:28017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 57,
"optime" : {
"ts" : Timestamp(1458627964, 2),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2016-03-22T06:26:04Z"),
"lastHeartbeat" : ISODate("2016-03-22T06:26:46.198Z"),
"lastHeartbeatRecv" : ISODate("2016-03-22T06:26:45.361Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:27017",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "127.0.0.1:29017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 57,
"lastHeartbeat" : ISODate("2016-03-22T06:26:46.198Z"),
"lastHeartbeatRecv" : ISODate("2016-03-22T06:26:45.314Z"),
"pingMs" : NumberLong(0),
"configVersion" : 1
}
],
"ok" : 1
}
Mongodb 副本集分片(二)---mongodb副本集部署脚本详解的更多相关文章
- t持久化与集群部署开发详解
Quartz.net持久化与集群部署开发详解 序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- Faster RCNN原理分析(二):Region Proposal Networks详解
Faster RCNN原理分析(二):Region Proposal Networks详解 http://lib.csdn.net/article/deeplearning/61641 0814: A ...
- “全栈2019”Java第六十二章:接口与常量详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第五十二章:继承与初始化详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 2017.3.31 spring mvc教程(二)核心流程及配置详解
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- MongoDB复制集原理、环境配置及基本测试详解
一.MongoDB复制集概述 MongoDB复制集实现了冗余备份和故障转移两大功能,这样能保证数据库的高可用性.在生产环境,复制集至少包括三个节点,其中一个必须为主节点,一个从节点,一个仲裁节点.其中 ...
- 2、Redis 底层原理:Cluster 集群部署与详解
Redis 简介 Redis 提供数据缓存服务,内部数据都存在内存中,所以访问速度非常快. 早期,Redis 单应用服务亦能满足企业的需求.之后,业务量的上升,单机的读写能力满足不了业务的需求,技术上 ...
- kafka之二:Kafka 设计与原理详解
一.Kafka简介 本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料. 转载请注明出处 : 本文链接 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索. ...
随机推荐
- sql查看锁与解锁
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran ...
- Bug跟踪方法
Bug跟踪函数调用方法 StackTraceElement mSte = new Exception().getStackTrace()[1]; Log.e("mmm", mSt ...
- c#实现邮件发送链接激活
2016-08-24 10:09:52 public void MailSend(string email) { MailMessage MyMail = new MailMessage(); MyM ...
- ML-分类与逻辑回归
布尔分类(binary classification)问题: 训练集:$S=\{(x^{(i)}, y^{(i)})\}$ 输入:特征向量$x$ 期望输出:$y\in\{0, 1\}$ 这里使用的假设 ...
- build.gradle文件详解<转> 推荐
apply plugin: 'com.android.application'//说明module的类型,com.android.application为程序,com.android.library为 ...
- Linux之RHEL6的开机流程分析
开机——很多人觉得很简单的事情,只要按下电源开关,然后系统就会自然启动,没有什么需要学习的.其实不然,如果系统没有什么问题,可以正常登陆的时候,当然开机很简单.但更多的时候,我们需要知道当机子不能正常 ...
- Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0
maven构建项目的时候遇到这个错误: 一.直接原因 制定路径下确实没有sqljdbc4.jar文件. 二.根本原因 微软不允许以maven的方式直接下载该文件. 三.解决办法 3.1 手动下载相关库 ...
- 关于phpcms 万一忘记密码怎么破?
莫慌~海洋小生教你~我也是偷偷学来的,呀哈哈哈! first:............................你就认命吧!哈哈哈... 开玩笑开玩笑! LOOK HERE ↓: 1.在没有安装 ...
- DataTables 自定义
自定义取的参数方法 getQueryCondition = function(data) { var param = {}; ]) { param.order =data.columns[data.o ...
- -/bin/sh: ./led: not found的解决办法
环境介绍: 开发板:qq2440 交叉编译器:arm-linux-gcc 3.4.1 内核版本:2.6.13 一.针对该类问题从两个方面入手: 1.从权限出发,权限不够会出现此问题 2.从库文件出发, ...