MongoDB副本集的在线迁移

查看当前集群的状态:

{
"setName" : "gechongrepl",
"setVersion" : 11,
"ismaster" : true,
"secondary" : false,
"hosts" : [
"192.168.91.135:27017",
"192.168.91.133:27017"
],
"arbiters" : [
"192.168.91.144:27017"
],
"primary" : "192.168.91.135:27017",
"me" : "192.168.91.135:27017",
"maxBsonObjectSize" : 16777216,
"maxMessageSizeBytes" : 48000000,
"maxWriteBatchSize" : 1000,
"localTime" : ISODate("2015-06-17T02:29:52.582Z"),
"maxWireVersion" : 2,
"minWireVersion" : 0,
"ok" : 1
}

当前的副本集的状态为:

Primary:192.168.91.135:27017

Arbiters:192.168.91.144:27017

Secondary:192.168.91.133:27017

需求1:在副本集正常工作的情况下再添加一个节点。

1:模拟业务数据

gechongrepl:PRIMARY> db.test.count()
109000

  

gechongrepl:PRIMARY> for (i=0;i<10000;i++) db.test.insert({uid:i,uname:'testmoveonline'+i});
WriteResult({ "nInserted" : 1 })
gechongrepl:PRIMARY> db.test.count()
119000
gechongrepl:PRIMARY>

查看从节点的状态:

gechongrepl:SECONDARY> rs.slaveOk()
gechongrepl:SECONDARY> db.test.count()
119000

2:把从节点关掉  

gechongrepl:SECONDARY> use admin
switched to db admin
gechongrepl:SECONDARY> db.shutdownServer() #查看当前的副本集的状态 gechongrepl:PRIMARY> rs.status() #再次插入数据 gechongrepl:PRIMARY> for (i=0;i<10000;i++) db.test.insert({uid:i,uname:'testmoveonline12345'+i});
WriteResult({ "nInserted" : 1 })
gechongrepl:PRIMARY> db.test.count()
129000

  

3:根据配置文件的配置,scpdata目录到新节点上。新节点IP为:192.168.91.132

[root@localhost mongodb]# scp -r ./data/ root@192.168.91.132:/root/software/mongodb/
root@192.168.91.132's password:
local.0 100% 64MB 21.3MB/s 00:03
local.1 100% 2047MB 21.8MB/s 01:34
test.0 100% 64MB 21.3MB/s 00:03
test.ns 100% 16MB 16.0MB/s 00:00
mongod.lock 100% 0 0.0KB/s 00:00
local.ns 100% 16MB 16.0MB/s 00:00
[root@localhost mongodb]# ls
bin data GNU-AGPL-3.0 log mongod.conf README THIRD-PARTY-NOTICES
[root@localhost mongodb]# scp -r ./log/ root@192.168.91.132:/root/software/mongodb/
root@192.168.91.132's password:
mongod 100% 1101KB 1.1MB/s 00:00
[root@localhost mongodb]#

查看192.168.91.132主机上的MongoDB目录已经存在scp过来的文件

[root@localhost mongodb]# ls
bin data GNU-AGPL-3.0 log mongod.conf README THIRD-PARTY-NOTICES

 

4:用scp过来的物理文件启动新节点

[root@localhost mongodb]# cd bin/
[root@localhost bin]# ./mongod --config /root/software/mongodb/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 30944
child process started successfully, parent exiting

  

5:在集群几点中加入新节点即可

gechongrepl:PRIMARY> rs.add("192.168.91.132:27017")

{
"_id" : 6,
"name" : "192.168.91.132:27017",
"health" : 1,
"state" : 6,
"stateStr" : "UNKNOWN",
"uptime" : 9,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2015-06-17T02:49:43Z"),
"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "still initializing"
}

  

6:remove刚才关掉的节点即可

gechongrepl:PRIMARY> rs.remove("192.168.91.133:27017")

  

如此再次重复这样的步骤即可把集群慢慢的转移到其他服务器上。

 

  

MongoDB副本集配置系列五:副本集的在线迁移的更多相关文章

  1. MongoDB副本集配置系列三:副本集的认证方式

    1:副本集配置参考这篇博客: http://www.cnblogs.com/xiaoit/p/4478951.html 2:副本集的认证 假设有两台机器已经配置好了副本集(副本集罪一般最少3台机器,这 ...

  2. MongoDB副本集配置系列二:配置MongoDB副本集

    接上一篇博客: http://www.cnblogs.com/xiaoit/p/4479066.html 1:首先创建3台虚拟机作为配置环境 IP1:192.168.91.128 IP2:192.16 ...

  3. MongoDB副本集配置系列十一:MongoDB 数据同步原理和自动故障转移的原理

    1:数据同步的原理: 当Primary节点完成数据操作后,Secondary会做出一系列的动作保证数据的同步: 1:检查自己local库的oplog.rs集合找出最近的时间戳. 2:检查Primary ...

  4. MongoDB副本集配置系列十:MongoDB local库详解和数据同步原理

    1:local库是MongoDB的系统库,记录着时间戳和索引和复制集等信息 gechongrepl:PRIMARY> use local switched to db local gechong ...

  5. MongoDB副本集配置系列七:MongoDB oplog详解

    1:oplog简介 oplog是local库下的一个固定集合,Secondary就是通过查看Primary 的oplog这个集合来进行复制的.每个节点都有oplog,记录这从主节点复制过来的信息,这样 ...

  6. MongoDB副本集配置系列九:MongoDB 常见问题

    What is a namespace in MongoDB? If you remove a document, does MongoDB remove it from disk? When doe ...

  7. MongoDB副本集配置系列八:MongoDB监控

    1:Mongostat MongoDB2.6版本 MongoDB3.0版本 2:db.setProfilingLevel(2):打开profiler 类似于MySQL的slow log Profile ...

  8. MongoDB副本集配置系列六:定位MongoDB慢的原因

    1:想知道哪些操作拖慢了MongoDB的速度,首先需要检查当前正在执行哪些操作. gechongrepl:PRIMARY> db.currentOp() "opid" : 7 ...

  9. MongoDB副本集配置系列一:安装MongoDB

    1:下载MongoDB 2.6版本 https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.9.zip 2:解压 tar ...

随机推荐

  1. Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)

    中文通过Java后台进行Base64编码后传到前台,通过JS进行Base64解码时会出现中文乱码的问题,被这个问题也是困扰了几天,使用jquery.base64.js只能转码非中文字符,经过搜集各种方 ...

  2. 《Excel效率手册:早做完,不加班》

    <Excel效率手册:早做完,不加班> 基本信息 作者: 陈锡卢    杨明辉 出版社:清华大学出版社 ISBN:9787302350743 上架时间:2014-5-8 出版日期:2014 ...

  3. Keras教程

    In this step-by-step Keras tutorial, you’ll learn how to build a convolutional neural network in Pyt ...

  4. Newtonsoft.Json高级用法,json序列号,model反序列化,支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity,字符串

    原文地址:https://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口 ...

  5. PyTorch保存模型与加载模型+Finetune预训练模型使用

    Pytorch 保存模型与加载模型 PyTorch之保存加载模型 参数初始化参 数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了da ...

  6. centos 下 mysql+keepalived实现双主自由切换

    目录 ip规划 mysql双主配置 keepalived配置 mysql1中keepalived的配置 mysql2中keepalived的配置 VIP漂移检测 本文的目的是搭建一个互为主从的mysq ...

  7. Proguard使用最新,最全教程,亲自试验

    最近公司有一个项目,是外包项目,由于对方也有技术人员,出于技术上的保密,需要对class文件进行二次处理,于是网上找了好久,只发现Proguard是用的最广泛而且网上资料最多的.由于不是纯JAVA项目 ...

  8. Js计算指定日期加上多少天,加多少月,加多少年的日期

    function DateAdd(interval,number,date) { /* * 功能:实现VBScript的DateAdd功能. * 参数:interval,字符串表达式,表示要添加的时间 ...

  9. C#,深入浅出全接触(一)

    一.什么是 C#? C# 是由Microsoft开发的一种新型编程语言,由于它是从C和C++ 中派生出来的,因此具有C++的功能.同时,由于是Microsoft公司的产品,它又同 VB一样简单.对于w ...

  10. 手把手实现腾讯qq拖拽删去效果(二)

    这节,就一个任务如何把上节自定义的翻页动画控件整进下拉列表中去. 由于是自定义的下拉列表控件,我们需要自定义能够上啦下滑的listview,这势必会造成这个问题,上拉刷新要响应相应touch事件,拖拽 ...