mongo数据同步的三种方案
(一)直接复制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数据同步的三种方案的更多相关文章
- [币严区块链]ETH搭建节点区块数据同步的三种模式:full、fast、light
ETH 全节点Archive(归档)模式数据量增长图 上述图表可通过链接查看:https://etherscan.io/chartsync/chainarchive 通过上表,可以看到截止2019年 ...
- MySQL冗余数据的三种方案
一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...
- [SQL]用于提取组内最新数据,左连接,内连接,not exist三种方案中,到底谁最快?
本作代码下载:https://files.cnblogs.com/files/xiandedanteng/LeftInnerNotExist20191222.rar 人们总是喜欢给出或是得到一个简单明 ...
- SP避免Form重复提交的三种方案
SP避免Form重复提交的三种方案 1) javascript ,设置一个变量,只允许提交一次. <script language="javascript"> ...
- 【Win 10 应用开发】文件读写的三种方案
本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧——事无定法,灵活运用者为上. OK,咱们开始吧 ...
- 实现web数据同步的四种方式
http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...
- [Linux]三种方案在Windows系统下安装ubuntu双系统(转)
在学习linux的过程中,ubuntu无疑是初学者的最佳选择. 下面来列举给Windows系统安装ubuntu双系统的三种方法. 一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已 ...
- 三种方案在Windows系统下安装ubuntu双系统
一.虚拟机安装(不推荐) 使用工具:Vmware 如果不是因为迫不得已,比如Mac OS对硬件不兼容,Federa安装频繁出错,各种驱动不全等等,不推荐使用虚拟机安装. 个人感觉这是一种对操作系统的亵 ...
- Spring-Boot-操作-Redis,三种方案全解析!
在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...
随机推荐
- 0-1knapsack
Python 实现0-1背包问题(回溯法) 题目 解题思路 回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(bounding function)来处死那些实际上不可能产生所需 ...
- Sec资产管理——SwebUI开源应用解决方案
产品简介 Sweb Sec是一款资产管理类的开源解决方案,通过SwebUI平台开发,包含资产管理.耗材管理两种管理系统,由部门管理.区域管理.盘点.标签打印.出入库等核心功能组成. 免费获取方案 开源 ...
- 2021.05.29【NOIP提高B组】模拟 总结
T1 题意:给你一个图,可以不花代价经过 \(K\) 条边,问从起点到终点的最短路 考试的想法:设 \(dis_{i,j}\) 表示从起点免费了 \(j\) 条边到 \(i\) 的最短路 然后直接跑 ...
- 【Redis】事件驱动框架源码分析(多线程)
IO线程初始化 Redis在6.0版本中引入了多线程,提高IO请求处理效率. 在Redis Server启动函数main(server.c文件)中初始化服务之后,又调用了InitServerLast函 ...
- ansible环境安装及数据恢复
配置免密登录服务器及下载备份文件#!/bin/bash BACKUP=192.168.30.233 #一行写一个IP BACKUP_PASSWD="lxzl_root*#2021" ...
- PotPlayer播放百度云盘视频
需要的工具 PotPlayer.油猴tampermonkey.坚果(这个不用下载,有个账号就行) 下载地址:百度网盘 步骤 安装油猴tampermonkey 拖拽Tampermonkey_4.14.c ...
- IDEA Unicode码转中文
1.打开设置 2.打开文件编码设置,按如图设置
- Visdom
安装visdom pip install visdom 启动visdom服务 python -m visdom.server visdom绘制各种图形: visdom属性介绍: 实例: from vi ...
- NuGetTools:批量上传、删除和显示NuGet包
快照 前言 NuGet是.NET开发必不可少的包管理工具,在日常更新版本过程中,可能需要批量发布 NuGet 包,也不可避免需要发布一些测试的包,后期想将这些测试或者过期的包删除掉.nuget.org ...
- Chrome实现自动化测试:录制回放网页动作
Chrome 浏览器是真的恐怖,它会把相关的小工具都卷死.从它诞生至今,创造了一个又一个的传奇,现在可以看到基于它的操作系统 chrome os ,还能买到用它做系统的笔记本电脑. 最近,新版本支持录 ...