MongoDB复制集之将现有的单节点服务器转换为复制集
服务器情况:
现有的单节点 Primary 192.168.126.9:27017
新增的节点 Secondry 192.168.126.8:27017
仲裁节点 ARBITER 192.168.126.8:27018
mongo 版本 3.2.4
1.停止单节点Primary的Mongo服务
- > use admin;
- switched to db admin
- > db.shutdownServer()
2.重新启动Primary节点,使用--replSet的选项加上新复制集的名字 repl1
- /usr/local/mongodb/bin/mongod -dbpath /sdb1/mongodb/data --fork --port 27017 --logpath /sdb1/mongodb/log/mongo.log --replSet repl1 --logappend
3.连接Primary数据库
4. 创建复制集配置信息对象
- config = { _id:"repl1", members:[
- {_id:0,host:"192.168.126.9:27017"}
- ]
- }
5.初始化复制集并查看复制集的运行状态
- > rs.initiate(config)
- { "ok" : 1 }
- repl1:SECONDARY> rs.status()
- {
- "set" : "repl1",
- "date" : ISODate("2016-06-23T16:05:10.228Z"),
- "myState" : 1,
- "term" : NumberLong(1),
- "heartbeatIntervalMillis" : NumberLong(2000),
- "members" : [
- {
- "_id" : 0,
- "name" : "192.168.126.9:27017",
- "health" : 1,
- "state" : 1,
- "stateStr" : "PRIMARY",
- "uptime" : 3524,
- "optime" : {
- "ts" : Timestamp(1466697870, 1),
- "t" : NumberLong(1)
- },
- "optimeDate" : ISODate("2016-06-23T16:04:30Z"),
- "infoMessage" : "could not find member to sync from",
- "electionTime" : Timestamp(1466697868, 2),
- "electionDate" : ISODate("2016-06-23T16:04:28Z"),
- "configVersion" : 1,
- "self" : true
- }
- ],
- "ok" : 1
6.启动 Secondry Mongo节点服务
- root@linux-mongo2:/home/ubuntu# /usr/local/mongodb/bin/mongod -dbpath=/sdb1/mongodb/data --fork --port 27017 --logpath=/sdb1/mongodb/log/mongo.log --logappend --replSet repl1
- about to fork child process, waiting until server is ready for connections. forked process: 2848 child process started successfully, parent exiting
7.在Primary节点将 Secondry Mongo节点添加到复制集里
- repl1:PRIMARY> rs.add("192.168.126.8:27017")
- { "ok" : 1 }
8.启动 ARBITER Mongo仲裁节点
- root@linux-mongo2:/home/ubuntu# mkdir -p /sdb1/mongodb/arb
- root@linux-mongo2:/home/ubuntu# /usr/local/mongodb/bin/mongod -dbpath=/sdb1/mongodb/arb --fork --port 27018 --logpath=/sdb1/mongodb/arb/mongo.log --logappend --relpSet replSet repl1
- Error parsing command line: unrecognised option '--relpSet'
- try '/usr/local/mongodb/bin/mongod --help' for more information
- root@linux-mongo2:/home/ubuntu# /usr/local/mongodb/bin/mongod -dbpath=/sdb1/mongodb/arb --fork --port 27018 --logpath=/sdb1/mongodb/arb/mongo.log --logappend -replSet repl1
- about to fork child process, waiting until server is ready for connections.
- forked process: 3229
- child process started successfully, parent exiting
9.在主节点将仲裁节点添加在复制集中,并查看最终的复制集状态
- repl1:PRIMARY> rs.addArb("192.168.126.8:27018")
- { "ok" : 1 }
- repl1:PRIMARY> rs.status()
- {
- "set" : "repl1",
- "date" : ISODate("2016-06-23T16:27:55.358Z"),
- "myState" : 1,
- "term" : NumberLong(1),
- "heartbeatIntervalMillis" : NumberLong(2000),
- "members" : [
- {
- "_id" : 0,
- "name" : "192.168.126.9:27017",
- "health" : 1,
- "state" : 1,
- "stateStr" : "PRIMARY",
- "uptime" : 4889,
- "optime" : {
- "ts" : Timestamp(1466699268, 1),
- "t" : NumberLong(1)
- },
- "optimeDate" : ISODate("2016-06-23T16:27:48Z"),
- "electionTime" : Timestamp(1466697868, 2),
- "electionDate" : ISODate("2016-06-23T16:04:28Z"),
- "configVersion" : 3,
- "self" : true
- },
- {
- "_id" : 1,
- "name" : "192.168.126.8:27017",
- "health" : 1,
- "state" : 5,
- "stateStr" : "STARTUP2",
- "uptime" : 1005,
- "optime" : {
- "ts" : Timestamp(0, 0),
- "t" : NumberLong(-1)
- },
- "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
- "lastHeartbeat" : ISODate("2016-06-23T16:27:54.499Z"),
- "lastHeartbeatRecv" : ISODate("2016-06-23T16:27:54.561Z"),
- "pingMs" : NumberLong(0),
- "syncingTo" : "192.168.126.9:27017",
- "configVersion" : 3
- },
- {
- "_id" : 2,
- "name" : "192.168.126.8:27018",
- "health" : 1,
- "state" : 7,
- "stateStr" : "ARBITER",
- "uptime" : 6,
- "lastHeartbeat" : ISODate("2016-06-23T16:27:54.499Z"),
- "lastHeartbeatRecv" : ISODate("2016-06-23T16:27:53.632Z"),
- "pingMs" : NumberLong(1),
- "configVersion" : 3
- }
- ],
- "ok" : 1
- }
注意: 这里副本集 192.168.126.8 的状态是 "STARTUP2" ,是由于Primary库的数据很大,导致一直处于初始化的同步数据阶段。
详细说明如下
- "_id" : #集群中节点编号
- "name" : #成员服务器名称及端口
- "health" : #表示成员中的健康状态(0:down;1:up)
- "state" : #为1~11,表示成员的当前状态
- "stateStr" : #描述该成员是主库(PRIMARY)还是备库(SECONDARY)
- "uptime" : #该成员在线时间(秒)
- "optime" : #成员最后一次应用日志(oplog)的信息
- "optimeDate" : #成员最后一次应用日志(oplog)的时间
- "electionTime" : #当前primary从操作日志中选举信息
- "electionDate" : #当前primary被选定为primary的日期
- "configVersion" : #mongodb版本
- "self" : #为true 表示当前节点
- 其中 state 复制集状态:
复制集状态:
STARTUP:刚加入到复制集中,配置还未加载
STARTUP2:配置已加载完,初始化状态
RECOVERING:正在恢复,不适用读
ARBITER: 仲裁者
DOWN:节点不可到达
UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构,脑裂
REMOVED:移除复制集
ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态
FATAL:出错。查看日志grep "replSet FATAL"找出错原因,重新做同步
PRIMARY:主节点
SECONDARY:备份节点
MongoDB复制集之将现有的单节点服务器转换为复制集的更多相关文章
- Kafka 单节点多Kafka Broker集群
Kafka 单节点多Kafka Broker集群 接前一篇文章,今天搭建一下单节点多Kafka Broker集群环境. 配置与启动服务 由于是在一个节点上启动多个 Kafka Broker实例,所以我 ...
- windows单节点下安装es集群
linux下的es的tar包,拖到windows下,配置后,启动bin目录下的bat文件,也是可以正常运行的. 从linux下拷的tar包,需要修改虚拟机的内存elasticsearch.in.bat ...
- KingbaseES V8R6集群维护案例之--单实例数据迁移到集群案例
案例说明: 生产环境是单实例,测试环境是集群,现需要将生产环境的数据迁移到集群中运行,本文档详细介绍了从单实例环境恢复数据到集群环境的操作步骤,可以作为生产环境迁移数据的参考. 适用版本: Kingb ...
- redhat6.5 redis单节点多实例3A集群搭建
在进行搭建redis3M 集群之前,首先要明白如何在单节点上完成redis的搭建. 单节点单实例搭建可以参看这个网:https://www.cnblogs.com/butterflies/p/9628 ...
- Hadoop单节点启动分布式伪集群
emm~ 写这篇博客只是手痒,因为开发环境用单节点就够了,生产环境肯定是真实集群,所以这个伪分布式纯属娱乐而已. 配置HDFS1. 安装好一台hadoop,可以参考这篇博客.2. 在hadoop目录下 ...
- 将 master 节点服务器从 k8s 集群中移除并重新加入
背景 1 台 master 加入集群后发现忘了修改主机名,而在 k8s 集群中修改节点主机名非常麻烦,不如将 master 退出集群改名并重新加入集群(前提是用的是高可用集群). 操作步骤 ssh 登 ...
- 利用shell脚本[带注释的]部署单节点多实例es集群(docker版)
文章目录 目录结构 install_docker_es.sh elasticsearch.yml.template 没事写写shell[我自己都不信,如果不是因为工作需要,我才不要写shell],努力 ...
- ORACLE RAC集群硬件资源管理与单节点的区别
硬件资源是由OS kernel管理的,应用软件是不能直接访问硬件的,必须通过OS kernel提供的API接口间接访问,OS kernel 除了要完成用户的请求,还通过进程调度等机制来控制多进程对资源 ...
- Hadoop集群搭建:用三台云服务器搭建HA集群(过程记录和分享)
该文主要记录了自己用云服务器搭建集群的过程,也分享一些自己遇到的问题和解决方法.里面可能提及一些自己的理解,可能不够准确,希望大家能够指正我,谢谢. 1.什么是HA集群 HA :High Availa ...
随机推荐
- php CI 实战教程:如何去掉index.php目录
Windows下自由创建.htaccess文件的N种方法 .htaccess是apache的访问控制文件,apache中httpd.conf的选项配合此文件,完美实现了目录.站点的访问控制,当然最多的 ...
- OPENCV形态学算法-2
一.漫水填充算法 该算法通过一个指定的种子点,来分析整张图片上的像素,并设置像素差异阈值,在阈值类的点,最后变成相同的颜色.该方法通过上下限和连通方式来达到不同的连通效果. 该方法常用与标记和分离图像 ...
- OPENCV图像变换-2
一.经典霍夫变换 霍夫变换是图像处理中的一种特征提取技术,该方法通过在一个参数空间中通过计算累计结果的局部最大值来得到一个符合该特定形状的集合,作为结果. 运用两个坐标空间之间的变换,将一个空间中具有 ...
- photoshop如何快速切图
作为业余爱好,之前都是用比较笨的方法切图,甚至用裁剪工具一张一张的切. 后来知道用切片工具,但也仅限于互不重叠的图片. 在工作中实际使用时才发现实在是太慢了,慢到上级自己说你不用做了,我来吧. 其实, ...
- 10.8.5如何升级(app store 出错 请稍后重试 100)
出现问题:苹果以前的老版本,OS X 10.8或是10.8.5在当年提示你升级,你又任性没升级的时候,拖过那阵,你再想升级,就是各种报复.进app store下载或是更新东西都是弹出app stpre ...
- Keil MDK从未有过的详细使用讲解
转自博客:http://blog.csdn.net/zhzht19861011/article/details/5846510 这博主关于MDK 的使用的文章,写的得TM的好 TM的实用! 真心收藏 ...
- 【转】25个Git用法技巧
Andy Jeffries 给 Git 中级用户总结分享的 25 个小贴士.你不需要去做大量搜索,或许这些小贴士对你就很有帮助的. 我从开始使用git到现在已经差不多18个月了,以为自己已经很懂git ...
- 我的java信息
Java的运行环境版本: 1.7.0_07Java的运行环境供应商: Oracle CorporationJava供应商的URL: http://java.oracle.com/Java的安装路径: ...
- MySQL——数据类型
MySQL中定义数据字段的类型对你数据库的优化是非常重要的.MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 一.字符串类型: 字符串类型指CHAR.VARCHAR.B ...
- OC--类型为ID 的类的名称
NSString *str = [[view class] description];