一个是以主模式启动,另一个属于从模式启动。

1.主从结构配置


主服务器:192.168.110.71
备服务器:192.168.100.90
2.安装mongodb
wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.8.tgz
tar -zxvf mongodb-linux-x86_64-2.6.8.tgz 
mv mongodb-linux-x86_64-2.6.8 mongodb-2.6.8
cd mongodb-2.6.8/
mkdir data
mkdir logs
mkdir conf
两台机器相同。

3.配置mongodb
主服务器:conf/mongodb.conf
master=true
fork=true
bind_ip=192.168.110.71
port=10111
dbpath=/home/slim/mongodb-2.6.8/data/
logpath=/home/slim/mongodb-2.6.8/logs/master.log
pidfilepath=/home/slim/mongodb-2.6.8/data/master.pid
logappend=true
oplogSize=10000

备服务器:conf/mongodb.conf

slave=true
fork=true
source=192.168.110.71:10111
bind_ip=192.168.100.90
port=10111
dbpath=/home/slim/mongodb-2.6.8/data/
logpath=/home/slim/mongodb-2.6.8/logs/master.log
pidfilepath=/home/slim/mongodb-2.6.8/data/master.pid
logappend=true
oplogSize=10000
slavedelay=5

4.启动服务
./bin/mongod -f conf/mongodb.conf &

5.测试服务
在主节点使用客户端命令mongo登录,添加数据

./bin/mongo -host 192.168.110.71 -port 10111
> use testuse test
switched to db test
> db.user.insert({_id:1,name:'samlee',age:80});db.user.insert({_id:1,name:'samlee',age:80});
WriteResult({ "nInserted" : 1 })
> db.user.find();db.user.find();
{ "_id" : 1, "name" : "samlee", "age" : 80 }

登录从节点:

./bin/mongo -host 192.168.100.90 -port 10111
> use testuse test
switched to db test
> db.user.find();db.user.find();
{ "_id" : 1, "name" : "samlee", "age" : 80 }

可以看到数据已经同步。
在 slave 数据库服务器上执行如下操作:

> db.user.insert({_id:2,name:'Jack',age:23});
WriteResult({ "writeError" : { "code" : undefined, "errmsg" : "not master" } })

提示 not master ,所以 slave 服务器只可以执行读操作,不可以执行写操作。

6.相关配置参数

Master
--master master 模式
--oplogSize arg size limit (in MB) for op log
Slave
--slave slave 模式
--source arg source 指定 master 位置
--only arg 单独指定备份某一 database
--slavedelay arg 指定与 Master 延迟时间(秒)
--autoresync 当 Slave 数据过时后自动重连

7.Slave 顶替 Master
如果上面的主服务器A宕了, 此时需要用B机器来顶替 master 服务,
步骤如下:

1)停止B 进程(mongod)
2)删除B 数据目录中的 local.*
3)以--master 模式启动 B

8.切换 Master/Slave 角色
a) 假设已经具备主机 A 和从机 B,此时想切换它们的角色,步骤如下:(假设 A 是健康的)
b) 用 fsync 命令暂停 A 上的写操作,
c) 确定 B 是从机,关闭 B 上的服务
d) 清空 B 上的 local.*文件
e) 用 -master 选项重启 B 服务
f) 在 B 上执行一次写操作,初始化 oplog,获得一个同步起始点
g) 关闭 B 服务,此时 B 已经有了新的 local.*文件
h) 关闭 A 服务,并且用 B 上新的 local.*文件来代替 A 上的 local.*文件(拷贝之前,记得先
压缩,因为文件可能很大)
i) 用 -master 选项重启 B 服务
j) 在平时的 slave 选项上加一个-fastsync 选项来重启 A 服务
如果 A 不是健康的,但是硬件是健康的,那么跳过上面的前两步,并且用 B 上所有文件去
替换 A 上的文件,重启服务。

9.更新主服务器位置
假设现有从机启动方式如下:
$ mongod --slave --source 192.168.110.71:10111
此时如果想更换主机的位置,可以通过以下的步骤来完成:
重启 mongod 服务,不要加-slave 和 –source 选项:
$ mongod
启动 shell,执行如下操作:
> use local
switched to db local
> db.sources.update({host : "192.168.110.71:10111"},{$set : {host : "192.168.110.100:10111"}})
接着重启从机上的服务:
$ ./mongod --slave --source 192.168.110.100:10111
$ # or
$ ./mongod --slave

MongoDB Master-Slaver集群部署相关推荐

  1. Kubernetes------二进制双master节点集群部署

    前文环境中完成k8s单master节点集群架构部署,两个node节点都已加入集群中,完成与master节点的通信.本文在前文基础下,再加入一个master节点,同时加入nginx负载均衡+keepal ...

  2. Linux下MongoDB的安装,通过配置文件启动Mongodb的方式研究,mongodb自启动脚本(Linux),Windows下安装MongoDB服务,集群部署,数据导出和恢复

    关于MongoDB的windows的 安装,可以参考: http://www.runoob.com/mongodb/mongodb-window-install.html 关于Linux的安装可以参考 ...

  3. kubernetes-1.11.0集群部署之master集群 (二)

    kubernetes-1.11.0集群部署之master集群 (二) Master master 的组件有以下: 1. API ServerApi server提供HTTP/HTTPS RESTful ...

  4. RocketMQ初探(五)之RocketMQ4.2.6集群部署(单Master+双Master+2m+2s+async异步复制)

    以下部署方式结合众多博友的博客,经过自己一步一步实际搭建,如有雷同,侵权行为,请见谅...其中遇到不少的坑,希望能帮到更多的人,现在很少能找到一份完整版4.2.6版本的搭建教程了,如果你有幸遇见,那么 ...

  5. MongoDB 3.2.7 for rhel6.4 副本集-分片集群部署

    今天,一同事反映,他安装部署mongodb副本集--分片集群,初始化分片时遇到问题:初始化分片必须使用主机名(也就是必须有相当于DNS服务的解析),这样以来,mongo副本集--分片集群就 会出现DN ...

  6. mongodb副本集+分片集群部署 step by step

    mongodb副本集+分片集群部署step by step 本文只讲述mongodb副本集+分片集群的部署,关于mongdb shading & replica set原理优点等不在本文讨论范 ...

  7. Kubernetes 集群部署 之 多Master节点 实现高可用

    目录 前言 一.K8s Master 高可用架构 二.在单Master节点基础上搭建 多Master集群架构 2.1 环境准备 与 搭建步骤 2.2 首先部署 Master02 节点 2.2.1 从 ...

  8. MongoDB集群部署模式

    MongoDB 有三种集群部署模式,分别为主从复制(Master-Slaver).副本集(Replica Set)和分片(Sharding)模式. Master-Slaver 是一种主从副本的模式,目 ...

  9. flink启动命令参数_Flink集群部署

    部署方式 一般来讲有三种方式: Local Standalone Flink On Yarn/Mesos/K8s- 单机模式 参考上一篇Flink从入门到放弃(入门篇2)-本地环境搭建&构建第 ...

  10. Mycat集群部署(基于HAProxy + Mycat)

    Mycat集群部署(基于HAProxy + Mycat) 1. 背景 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从 ...

最新文章

  1. 改变自己,YT,吵架,和好,感冒,烦,新的项目,旧的垃圾,呵呵呵。。
  2. 死脑筋要活用(我只放贴图)01
  3. Tornado做鉴权服务性能实践
  4. matlab中并行用不了,请教matlab在linux下的并行问题 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  5. [Google Guava] 4-函数式编程
  6. js将docx转换为html,js 将word转换Html
  7. leetcode——242. 有效的字母异位词
  8. 大家狂欢吧,我的Google帐号悲剧了
  9. BugkuCTF-WEB题GET和POST
  10. catch里面不想做任何处理_处理异常的三种健壮方式
  11. JAVA中的继承和覆盖
  12. css实现垂直居中6种方法
  13. HADOOP高可用机制
  14. 【计算方法】数值积分
  15. 百度 php 图片文字识别,使用百度接口实现图片识别文字
  16. Ubuntu安装NVIDIA独立显卡驱动出现X service error问题解决方法
  17. 互联网企业掀起安全大战 各显神通
  18. OLAP引擎 :CH Doris impala+kudu优缺点分析
  19. 【java】除法,除数后缀
  20. 捞王二闯IPO,谁是“火锅第三股“?||Review

热门文章

  1. 如何将BMP文件转换为JPG文件
  2. 解决运行uiautomatorviewer时报错-Djava.ext.dirs=/usr/local/android-sdk-
  3. [免费配音软件]配音助手1.0 阿里云配音软件
  4. 【考研英语语法】一般过去式练习题
  5. 吐血总结~ 计算机网络基础汇总
  6. 语句摘抄——第28周
  7. 接触mybatisplus单页500条限制_单页网站制作教程,单页网站设计五大技巧
  8. 计算功耗设备待机时间!
  9. python实现中国象棋
  10. NIVIDIA 硬解码学习1