首页 > 其他分享 >mongo数据同步的三种方案

mongo数据同步的三种方案

时间:2022-08-16 22:25:19浏览次数:64  
标签:同步 mongo -- mongodb 三种 database1 local usr

(一)直接复制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,--,mongodb,三种,database1,local,usr
From: https://www.cnblogs.com/mtck/p/16593211.html

相关文章

  • mysql容器数据同步的一种方式
    同步操作流程1.找到MySQL的容器sudodockerps|grepmysql2.进入docker容器sudodockerexec-it容器idbash3.1.dump源端数据库(单个)mysqldump-hhost-Pport-utes......
  • C# 线程同步方法
    1、lock锁定的是一个引用类型,值类型不能被锁定,但应该避免锁定一个string,因为string的存储方式是不样的。主要注意的就是被锁的这个对象。classProgram{p......
  • Spring Cloud Config、Apollo、Nacos三种配置中心介绍与区别
    一、配置中心作用配置实时生效传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库,通过定时轮询访问数据库来感知配置的变化。轮......
  • 记Windows服务器Redis 6379被攻击 被设置主从模式同步项目数据
    在工作中第一次经历被攻击,我是一个前端,同时复负责维护一个已上线的项目,在最近一段时间小程序与后台经常出现这个报错,搜了下说我的从机是只读模式,不能写入,问了同事得知这......
  • BasicDBObject查询MongoDB
    1.查询举例//查询条件设置BasicDBObjectqueryCond=newBasicDBObject();//单个字段queryCond.put("data_source","诊断记录");//in的用法queryCond.put("p......
  • 求助:Docker怎么连接mongoDB?
    首先在playwithDocker中通过dockerpullmongo引入mongo然后创建容器dockerrun-it--namemymongo-p27017:27017-vmongo:/data/dbmongobash进入mongosh......
  • 定时任务cron表达式时间失效问题(未按表达式时间运行) 配置定时任务线程池或者同步解
    例如定时任务方法上的注解 cron表达式是这样会的:@Async//异步@Scheduled(cron="059***?")//表达式每小时的59分执行一次@DataSource(DataSourceTy......
  • mongo数据库-mongo角色权限
    Built-InRoles(内置角色):1.数据库用户角色:read、readWrite;2.数据库管理角色:dbAdmin、dbOwner、userAdmin;3.集群管理角色:clusterAdmin、clusterManager、clu......
  • 计算机网络基础--三种交换方式
    前置知识从通信资源的分配角度来看,交换是按照某种方式动态地分配传输线路的资源通常把发送的整块数据称为一个报文电路交换电路交换受电话交换的启发:两部电话,需要一条......
  • Windows时间同步命令
    WindowsTime服务scqueryW32TimescstartW32TimeWindows时间同步命令w32tm/config/manualpeerlist:"ntp.aliyun.com"/syncfromflags:manual/reliable:yes/u......