(一)直接复制data目录(需要停止源和目标的mongo服务)
1.针对目标mongo服务已经存在,并正在运行的(mongo2-->mongo)。
执行步骤:
(1).停止源/目标服务器的mongo服务。
mongod --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/logs/mongodb.log --shutdown
mongod --dbpath /usr/local/mongodb/data/db2 --logpath /usr/local/mongodb/logs/mongodb2.log --shutdown
(2).删除目标mongo服务的数据目录
rm -rf /usr/local/mongodb/data/db
(3).将待备份的mongo数据目录复制到目标服务绑定的数据目录
cp -r /usr/local/mongodb/data/db2 /usr/local/mongodb/data/db
(4).启动目标mongo服务
mongod -f /usr/local/mongodb/mongodb.conf
2.对于目标mongo为新增,未启动的(mongo-->mongo3)
(1).新增配置文件
cp mongodb2.conf mongodb3.conf。
然后修改相应的端口和数据目录
(2).将待备份的mongo数据目录复制到新mongo的数据目录
cp -r /usr/local/mongodb/data/db /usr/local/mongodb/data/db3
(3).启动mongo服务

(二)通过mongodump、mongorestore同步
参数解释
-h host,填写ip地址加上端口号
-u username, mongo的用户名
-p passwd,mongo的密码
-d database,mongo的数据库名
-c collection,mongo的数据表名
-q query,mongo的查询条件
-o output,mongodump数据存放位置
--forceTableScan 强制扫描整个表(解决版本不一致问题)
mongodump到库级别,mongodump database1 database2两个库
mongodump -h host:port -u username -p passwd --authenticationDatabase admin -d database1 database2 -o /mongotest --forceTableScan
mongodump到表级别,mongodump database1 的database1col表
mongodump -h host:port -u username -p passwd --authenticationDatabase admin -d database1 -c database1col -o /mongotest --forceTableScan
mongodump到具体查询条件,mongodump database1 的database1col表中id>1000的数据
mongodump -h host:port -u username -p passwd --authenticationDatabase admin -d database1 -c database1col -q {"id":{$gte:1000}} -o /mongotest --forceTableScan
mongorestore到库级别,mongorestore database1库
mongorestore -h host:port -u username -p passwd --authenticationDatabase admin -d database1 /mongotest/database1
mongorestore到表级别,mongorestore database1 的database1col表
mongorestore -h host:port -u username -p passwd --authenticationDatabase admin -d database1 -c database1col -o /mongotest/database1/database1col.bson --forceTableScan

(三) 通过db.copyDatabase实现
1.去源机器的源数据库新建一个账户(跟在admin新建的一致就行,每个数据库都需要新建一个)
mongo host:port -u username -p passwd --authenticationDatabase admin
use admin
db.createUser({user:'testuser',pwd:'testpass',roles:['userAdminAnyDatabase']})
use database1(即将复制的库)
db.createUser({user:'testuser',pwd:'testpass',roles:['readWrite']})
2.登录目标机器
mongo host:port -u username -p passwd --authenticationDatabase admin
3.执行复制命令
//需要用到源机器的ip\端口\库名,目标机器--需要新增的库名\新建的用户名\密码
db.copyDatabase("database1","database1","host:port","testuser","testpass","SCRAM-SHA-1")

三种方案的优缺点
方案一
优点:数据快,特别是对于数据量比较大的库,速度优势更明显。不会产生中间数据。
缺点:需要停止服务
方案二
优点:速度相对于第三种更快。支持的版本更丰富(3,4都支持)。不需要停服务。
缺点:不会同步索引。会产生中间数据,需要额外的磁盘来存储。
方案三
优点:会同步索引。不会产生中间数据。不需要停服务
缺点:版本4不支持。速度较慢。

mongo数据同步的三种方案的更多相关文章

  1. [币严区块链]ETH搭建节点区块数据同步的三种模式:full、fast、light

    ETH  全节点Archive(归档)模式数据量增长图 上述图表可通过链接查看:https://etherscan.io/chartsync/chainarchive 通过上表,可以看到截止2019年 ...

  2. MySQL冗余数据的三种方案

    一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...

  3. [SQL]用于提取组内最新数据,左连接,内连接,not exist三种方案中,到底谁最快?

    本作代码下载:https://files.cnblogs.com/files/xiandedanteng/LeftInnerNotExist20191222.rar 人们总是喜欢给出或是得到一个简单明 ...

  4. SP避免Form重复提交的三种方案

    SP避免Form重复提交的三种方案  1) javascript ,设置一个变量,只允许提交一次.   <script language="javascript">  ...

  5. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...

  6. 实现web数据同步的四种方式

    http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...

  7. [Linux]三种方案在Windows系统下安装ubuntu双系统(转)

    在学习linux的过程中,ubuntu无疑是初学者的最佳选择. 下面来列举给Windows系统安装ubuntu双系统的三种方法. 一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已 ...

  8. 三种方案在Windows系统下安装ubuntu双系统

    一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已,比如Mac OS对硬件不兼容,Federa安装频繁出错,各种驱动不全等等,不推荐使用虚拟机安装. 个人感觉这是一种对操作系统的亵 ...

  9. Spring-Boot-操作-Redis,三种方案全解析!

    在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...

随机推荐

  1. k8s client-go源码分析 informer源码分析(5)-Controller&Processor源码分析

    client-go之Controller&Processor源码分析 1.controller与Processor概述 Controller Controller从DeltaFIFO中pop ...

  2. 配置中心的设计-nacos vs apollo

    简介 前面我们分析了携程的 apollo(见 详解apollo的设计与使用),现在再来看看阿里的 nacos. 和 apollo 一样,nacos 也是一款配置中心,同样可以实现配置的集中管理.分环境 ...

  3. Linux Cgroup v1(中文翻译)(4):Block IO Controller

    Block IO Controller 1 概览 cgroup子系统blkio实现了block io控制器.无论是对存储结构上的叶子节点和还是中间节点,它对各种IO控制策略(proportional ...

  4. 如何提高访问 GitHub 的速度

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年5月11日. 因为一些特殊的原因,国内访问Github的速度确实比较慢.国内访问Github经常会出现连接不上.图片加载不出来.文件无 ...

  5. 记安装AWVS14过程踩的坑

    由于之前的AWVS14用着用着无法扫描了,一扫就是失败,一气之下就重装系统了.重装系统后发现安装还是不行,折腾了好久,终于找到方法了. 安装acunetix_14.1.210324124.exe 没啥 ...

  6. react的setState到底是同步还是异步

    在介绍这个问题之前,我们先来看一下一个例子: state = {number:1};componentDidMount(){this.setState({number:3})console.log(t ...

  7. SAP 文件操作类 CL_GUI_FRONTEND_SERVICES

    1 .文件下载. DATA: l_filename TYPE string, "file name l_path TYPE string, "file path l_fullpat ...

  8. 聊聊 Netty 那些事儿之 Reactor 在 Netty 中的实现(创建篇)

    本系列Netty源码解析文章基于 4.1.56.Final版本 在上篇文章<聊聊Netty那些事儿之从内核角度看IO模型>中我们花了大量的篇幅来从内核角度详细讲述了五种IO模型的演进过程以 ...

  9. mysql拆分字符串做条件查询

    mysql拆分字符串作为查询条件 有个群友问一个问题 这表的ancestors列存放的是所有的祖先节点,以,分隔 例如我查询dept_id为103的所有祖先节点,现在我只有一个dept_id该怎么查 ...

  10. 一网打尽异步神器CompletableFuture

    最近一直畅游在RocketMQ的源码中,发现在RocketMQ中很多地方都使用到了CompletableFuture,所以今天就跟大家来聊一聊JDK1.8提供的异步神器CompletableFutur ...