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不支持。速度较慢。
要想了解测开更多的技巧,或者想和更多大神交流,加入qq群856836575
mongo数据同步的三种方案相关推荐
- 多租户数据隔离的三种方案
一.多租户在数据存储上存在三种主要的方案,分别是: 1. 独立数据库 这是第一种方案,即一个租户一个数据库,这种方案的用户数据隔离级别最高,安全性最好,但成本较高. 优点: 为不同的租户提供独立的数据 ...
- Redis和Mysql数据同步的两种方案
** 利用数据库本身进行手动同步 ** 具体操作 在MySQL中对要操作的数据设置触发器Trigger,监听操作 客户端(NodeServer)向MySQL中写入数据时,触发器会被触发,触发之后调用M ...
- Docker 数据持久化的三种方案
容器中的数据可以存储在容器层.但是将数据存放在容器层存在以下问题: 数据不是持久化.意思是如果容器删除了,这些数据也就没了 主机上的其它进程不方便访问这些数据 对这些数据的I/O会经过存储驱动,然后到 ...
- sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)
一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...
- mysql数据冗余_MySQL冗余数据的三种方案
一,为什么要冗余数据 互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量. 水平切分会有一个patition key,通过patition key的查询能够直接定位到库,但是非pa ...
- 分布式锁解决并发三种方案
目录 为什么使用分布式锁? 分布式锁应具备的条件 三种实现方式 1.数据库锁 1.1 乐观锁 2.基于redis的分布式锁 3.基于Zookeeper实现分布式锁 4.三种方案的比较 分布式CAP理论 ...
- Redis 消息队列的三种方案选型
文章目录 Redis 消息队列的三种方案选型 消息队列(Message Queue,简称 MQ) 消息队列使用场景 Redis 消息队列应用背景,选型思考 Redis消息队列发展历程 在Redis中提 ...
- JS 异步加载js的三种方案
js文件同步加载的缺点: 页面的js文件一般是同步加载,加载到js文件会阻断html和css的加载,要等到js文件加载完毕,才能继续向下执行,因为js文件可能会操作html和css:但有些js文件不会 ...
- 【Win 10 应用开发】文件读写的三种方案
本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧--事无定法,灵活运用者为上. OK,咱们开始吧 ...
最新文章
- 安卓 简单的登录案例
- pycharm matplotlib.pyplot.figure().add_subplot()绘制三维图时报错:ValueError: Unknown projection 3d(bug)
- selenide小白教程
- Nodejs 文件上传
- 2019公需科目快速学完_【1017丨话题】励志!69岁大爷驾校学车走红,“科目二有信心一次过quot;...
- 中位数和顺序统计量(第9章)
- 100% 的程序员都想挑战的算法趣题!
- (通用版)salesforce中soql及sosl的伪‘Like’模糊检索
- asp.net core 读取json文件
- JEP JAVA 初体验
- 弹性均质圆环法计算过程_均质圆环胎刚体的转动惯量
- 如何系统地自学 Python?
- js 单击、双击、连续多次点击
- class uesrfun.php,帝国cms教程:在列表页面批量添加Tags的方法
- 领袖一般会采用什么方式?
- sublime text3 英文版转为中文版
- Cython的基本用法
- 旅游新纪元篇章,雾灵山紫山期待大家品鉴
- 老铁们来来来,实战STM32
- 电商APP源码功能解说