主从同步:

md01    10.0.0.11        master

md02    10.0.0.12        slave

md03    10.0.0.14        slave

#建立数据库目录

mkdir -p /elain/apps/mongodb/

mkdir -p /elain/data/mongodb/db/

mkdir -p /elain/logs/mongodb/

注:

1、不需要像mysql一样复制完整数据过去,丛库启动会制动复制主库完整数据。

2、丛库自动配置为只读。

3、mongodb第一次启动时间较长,需要注意等待。

4、管理命令多数都要在admin库中执行 use admin

相关参数:./mongod --help

--autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据

--slavedelay 同步延迟,单位:秒

主-从

作为主服务器启动

/elain/apps/mongodb/bin/mongod --fork --master--oplogSize=4096--port 27001 --dbpath /elain/data/mongodb/db --logpath /elain/logs/mongodb/mongodb.log

作为从服务器启动,并指明主服务器地址。--autoresync为强制从主服务器同步全部数据

/elain/apps/mongodb/bin/mongod --fork --slave --source 10.0.0.11:27001 --port 27001 --dbpath /elain/data/mongodb/db --logpath /elain/logs/mongodb/mongodb.log

注:可以在启动从时加以下常用参数

--slavedelay 10      #延时复制 单位为秒

--autoresync         #自动重新同步

--only               #复制指定的数据库,默认复制所有的库

--oplogSize          #主节点的oplog日志大小,单位为M,建议设大点(更改oplog大小时,只需停主库,删除local.*,然后加--oplogSize=* 重新启动即可,*代表大小)

如果发现主从不同步,从上手动同步

db.runCommand({"resync":1})

状态查询

db.runCommand({"isMaster":1})

#主还是从

在丛库上查询主库地址

>use local;

switched to db local

>db.sources.find();

{ "_id" : ObjectId("4e9105515d704346c8796407"), "host" : "10.0.0.11:27001", "source" : "main", "syncedTo" : { "t" : 1318155992000, "i" : 1 } }

#查看各Collection状态

db.printCollectionStats();

#查看主从复制状态

db.printReplicationInfo();

测试主从

在主服务器新建数据库

mongo --port 27001

>show dbs

>use elaindb

>db.blog.save({title:"new article"})

在从服务器上查看同步数据

mongo --port 27001

#在从库插入数据的操作 会提示 not master

>use elaindb;

switched to db elaindb

>db.blog.find();

{ "_id" : ObjectId("4e9174b48443c8ef12b30c56"), "title" : "new article" }

#查看主从同步信息:

>db.printReplicationInfo();

this is a slave, printing slave replication info.

source:   10.0.0.11:27001

syncedTo: Sun Oct 09 2011 18:37:12 GMT+0800 (CST)

= 19 secs ago (0.01hrs)

>db.printSlaveReplicationInfo();

#此为同步过来的数据,测试成功

附加:

添加及删除源:

启动从节点时可以用--source指定主节点,也可以在shell中配置这个源,

启动一个从,端口为27002

/elain/apps/mongodb/bin/mongod --fork --slave  --port 27002 --dbpath /elain/data/mongodb/testdb --logpath /elain/logs/mongodb/mongodb.log

登录:

mongo --port 27002

[root@md03 ~]# mongo --port 27002

MongoDB shell version: 2.0.0

connecting to: 127.0.0.1:27002/test

>show dbs

local   (empty)

添加到从节点上

>use local

>db.sources.insert({"host": "10.0.0.11:27001"});

#查看显示正在同步

>db.sources.find();

{ "_id" : ObjectId("4e9111e1c29bbd9b9cd31d4e"), "host" : "10.0.0.11:27001", "source" : "main", "syncedTo" : { "t" : 1318156782000, "i" : 246 }, "dbsNextPass" : { "testdb" : true, "testdb1" : true } }

#同步完成后

>db.sources.find();

{ "_id" : ObjectId("4e9111e1c29bbd9b9cd31d4e"), "host" : "10.0.0.11:27001", "source" : "main", "syncedTo" : { "t" : 1318156782000, "i" : 256 } }

更改源:(假设10.0.0.12也为主库)

db.sources.insert({"host": "10.0.0.12:27001"});

db.sources.remove({"host": "10.0.0.11:27001"});

若复制中使用了认证,需在local库中添加repl用户来复制

>user local;

>db.addUser("repl", "elain123");

附录一、Slave 顶替 Master

如果主服务器 10.0.0.11 宕机了,

此时需要用 10.0.0.12 机器来顶替 master 服务,

步骤如下:

#停止 10.0.0.12 进程(mongod)

kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'`

#删除 10.0.0.12 数据目录中的 local.*

rm -rf /elain/data/mongodb/db/local.*

#以--master 模式启动 10.0.0.12

/elain/apps/mongodb/bin/mongod --fork --master--oplogSize=4096--port 27001 --dbpath /elain/data/mongodb/db --logpath /elain/logs/mongodb/mongodb.log

附录二、切换 Master/Slave 角色

切换主库10.0.0.11和从库10.0.0.12的角色

步骤如下:(命令略)

用 fsync 命令暂停 主库 上的写操作,

关闭 从库 上的服务

清空 从库 上的 local.*文件

用-master 选项重启 从库 服务

在 从库 上执行一次写操作,初始化 oplog,获得一个同步起始点

关闭 从库 服务,此时 从库 已经有了新的 local.*文件

关闭 主库 服务,并且用 从库 上新的 local.*文件来代替 主库 上的 local.*文件(建议先压缩再COPY)

用-master 选项重启 从库 服务

在启动slave的选项上加一个-fastsync 选项来重启 主库 服务

转载请注明: 转载自http://www.elain.org

mongodb MySQL主从_MongoDB实战系列之三:MongoDB的主从部署相关推荐

  1. ISA2006实战系列之三:防火墙策略部署深度分析(附图)

    通过前面两次课我们学习了如何在企业里统一部署ISA的三种客户端,今天我们就来学习一下如何通过防火墙策略来对我们企业网络进行统一部署. ISA Server能对企业进行安全的防护,依靠的是它的防火墙策略 ...

  2. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之Docker Duckling服务部署

    Rasa课程.Rasa培训.Rasa面试.Rasa实战系列之Docker Duckling服务部署 vmvare 本地安装 docker Duckling服务 简介在windows 10 本地电脑上安 ...

  3. mongodb mysql 写_MongoDB与MySQL关于写确认的异同

    云妹导读: 所谓写确认,是指用户将数据写入数据库之后,数据库告知用户写入成功的一个概念.根据数据库的特点和配置,可以在不同的写入程度上,返回给用户,而这其中,就涉及到了不同的性能.数据安全等级以及数据 ...

  4. mongodb mysql 事务_MongoDB数据库两阶段提交实现事务的方法详解 _ 蚂蚁视界

    本文实例讲述了MongoDB数据库两阶段提交实现事务的办法.分享给年夜家供年夜家参考,详细如下: MongoDB数据库中操作单个文档老是原子性的,然而,涉及多个文档的操作,通常被作为一个"事 ...

  5. mongodb mysql并发_MongoDB:锁和并发控制

    MongoDB:锁和并发控制 本文主要介绍两部分内容,第一部分是MongoDB的锁,第二部分是MongoDB的并发控制.这都跟MongoDB性能和效率相关的,有助于在使用MongoDB过程中,知道哪些 ...

  6. mongodb mysql配置_Mongodb 配置

    Mongodb数据的操作方式 1,安装好momgodb后打开cmd 进入mongodb安装的bin目录, 输入你要将数据库数据保存的路径(例如: D:\mongodb\data\db) 如图: 回车如 ...

  7. 鸿蒙开发实战系列之三:网络请求(原生+ Retrofit)

    鸿蒙开发实战系列之一:鸿蒙开发实战系列之一:圆角 鸿蒙开发实战系列之二:鸿蒙开发实战系列之二:事件总线EventBus/RxBus 前言 过了一个漫长的中秋+国庆假期,大家伙的鸿蒙内功修炼的怎么样了? ...

  8. Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1.编译Spark Spark可以通过SBT和Maven两种方式进行编译,再通过make-d ...

  9. mongodb mysql数据类型_mongodb中数据类型的坑

    在mongodb中,我们给每个文档插入数据的时候,mongodb自动会为我们插入的数据创建数据类型.由于mongodb是一个非结构化的数据存储系统,因此在文档中你可以随意插入不同类型的字段,这和MyS ...

最新文章

  1. char *a 和char a[] 的区别(指针和数组的区别)
  2. 一种全新的点击率建模方案
  3. THUPCCTSAPIO2019:Far Away
  4. slk文件转换器安卓版_MP3提取转换器
  5. java二重积分_java 版本二重积分计算
  6. word里画的流程图怎么全选_流程图怎么做?用Word制作流程图超方便!
  7. CCproxy 实现http服务器代理
  8. 一个大学教授让人发冷汗的讲演(浙大高分子物理郑强教授)
  9. 贼好用的对比工具--BeyondComper
  10. 网卡加到linux网桥,[Linux] ubuntu 14 通过网桥将无线网络桥接给有线网卡
  11. python二次函数_python数据分析之曲线拟合:二次函数拟合
  12. 宝塔数据库密码错误处理
  13. php中关于文件操作的面试题,php面试题及答案
  14. Sequence to Sequence – Video to Text 论文翻译
  15. spout 和bolt关系_在Bolt CMS中记录检索和分页
  16. 全网最全pytest大型攻略,单元测试学这就够了
  17. 数据结构与算法之左高树
  18. linux gpt转mbr命令,Diskpart命令将gpt格式转换成mbr教程
  19. 讲解java里面关于除法的运算,商怎样得到小数,四舍五入
  20. 【组原】之 磁盘存储器(RAID)

热门文章

  1. 百度小程序违规行为规则说明
  2. 消息称阿里平头哥正在研发专用SoC芯片
  3. android dropbear 密码,Android 利用dropbear工具 配置ssh服务
  4. [RK3568 Android11] 开发之SATA硬盘
  5. VC++ 读取数据库datetime类型的处理
  6. Problem 1058 粗心的物理学家
  7. 提升工作技能的三个层次—建议的学习线路
  8. 华为CEO任正非最新讲话:WiFi和LTE竞争以及加大微基站研究
  9. 基于Hexo的matery主题搭建博客并深度优化
  10. GE 电脑板VMIVME-7750 VMIVME-7750-734001 350-027750-734001 K