首页 > 数据库 >MongoDB数据备份&导入导出&同步

MongoDB数据备份&导入导出&同步

时间:2024-10-21 18:59:52浏览次数:6  
标签:127.0 -- MongoDB mongodump 数据备份 0.1 导入 oplog ##

mongodump & mongorestore

单库备份

## -o 输出目录
mongodump --host 127.0.0.1 --port 27032 -u xxx -p xxx --db test2 --oplog -o ./test2

全库备份

--oplog只能在副本集中使用,因为副本集初始化的时候生成oplog,单实例使用--oplog会报错

mongodump --host 127.0.0.1 --port 27030 -u user1 -p user1 --authenticationDatabase admin  --oplog -o ./test07

全量备份的时候且使用--oplog的时候,会有一个bson文件,里面存了时间戳。可用于增量备份。需要使用bsondump命令查看该文件的时间戳。

bsondump testOp2/oplog.bson

全库恢复

## 可以增加参数 --drop,将已存在的库删除再重新创建
mongorestore --host 127.0.0.1 --port 27039 -u user1 -p user1 --authenticationDatabase admin  --oplogReplay ./testOp2

增量恢复

先增量备份,查看上次全量备份的bson文件中的时间戳,然后从local库中的oplog.rs集合中通过指定时间戳备份增量数据,再根据导出的增量备份文件进行增量恢复。

增量备份

mongodump --host localhost --port 27032 -d local -c oplog.rs --query '{"ts":{"$gt": {"$timestamp":{"t":1729245309, "i":1}}}}' -o ./op

增量恢复

mongorestore --host 127.0.0.1 --port 27039 --oplogReplay op/local/oplog.rs.bson 

mongoexport & mongoinport

单库单表备份

mongoexport --host 127.0.0.1 --port 27030 -u user1 -p user1 --authenticationDatabase admin  -d test2 -c test2 -o ./testexport01.json

导出为csv格式

## --type 指定导出数据类型
## -f 表示字段名称
mongoexport --host 127.0.0.1 --port 27030 -u user1 -p user1 --authenticationDatabase admin  -d test2 -c test2 --type=csv -f _id,name -o ./testexportcsv.csv

mongodump和mongoexport的区别

格式

  • mongoexport/mongoimport 导入/导出的是JSON格式或者CSV格式

  • mongodump/mongorestore 导入/导出的是BSON格式

体积

JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。

跨版本

  • 在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。

  • 当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。

  • 跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)

索引

JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意。

库和集合导出的数量

  • mongoexport不支持普通导出单个db的所有的collection,一次只能导出一个collection

  • mongodump支持普通导出单个db的所有的collection

应用场景

mongoexport/mongoimport

1、异构平台迁移 mysql <---> mongodb

2、同平台,跨大版本:mongodb2.x ---> mongodb3.x

mongodump/mongorestore

日常备份恢复时使用.

MongoShake数据同步

安装及配置

下载地址https://github.com/alibaba/MongoShake/releases
下载编译好的.tgz那个文件

配置文件:collector.conf

  • 注意修改源地址和目的地址

  • 监听端口是否被占用

  • 配置日志地址

启动:

./collector -conf=collector.conf 

停止:

通过stop.sh停止mongoshake,需要传入mongoshake.pid的位置作为参数,存放在配置的log.dir目录下。

./stop.sh /data/dba/yanhao/test/mongoshake.pid

参数:

## 同步模式,all表示全量+增量同步,full表示全量同步,incr表示增量同步
sync_mode

## checkpoint的存储地址,不设置默认会存到mongo源端的mongoshake库的ckpt_default集合中
## 如果是第一次使用incr模式,则会从checkpoint.start_position的时间点同步oplog
checkpoint.storage.url

测试

  • 源副本集
主:127.0.0.1:27032
从:127.0.0.1:27030
  • 目标MongoDB
127.0.0.1:27039
  • 修改配置参数
## 默认的端口被占用了,修改成其他的
incr_sync.http_port = 27040
mongo_urls = mongodb://user1:[email protected]:27032,127.0.0.1:27030
tunnel.address = mongodb://127.0.0.1:27039
log.dir = /data/dba/yanhao/test
## 全量+增量
sync_mode = all
目标:

源:

源副本集的时间戳:

监控mongoshake状态

## curl -s ip:端口
##  python -m json.tool 是输出更清晰
curl -s http://127.0.0.1:27040
curl -s http://127.0.0.1:27040/worker | python -m json.tool
## mongoshake-stat 脚本用于实时输出mongoshake的状态,包括:
logs_get/sec每秒获取的oplog数量。
logs_repl/sec每秒执行重放操作的oplog数量。
logs_success/sec每秒成功执行重放操作的oplog数量。
lsn.time最后发送oplog的时间。
lsn_ack.time目标端确认写入的时间。
lsn_ckpt.timeCheckPoint持久化的时间。
now.time当前时间。
replset源数据库的副本集名称。



./mongoshake-stat --port=9100
  1. https://www.modb.pro/db/49590

  2. Mongoshake https://github.com/alibaba/MongoShake/wiki

  3. 参数配置https://github.com/alibaba/MongoShake/wiki/%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E

标签:127.0,--,MongoDB,mongodump,数据备份,0.1,导入,oplog,##
From: https://www.cnblogs.com/tyhA-nobody/p/18490039

相关文章

  • MongoDB 5 安装&副本集搭建&集群搭建
    单节点安装需要一个数据目录地址,一个日志文件地址,配置文件##数据目录地址--dapath=##日志文件--logpath=##配置文件--config=***.conf下载https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-5.0.27.tgz启动命令/data/dba/yanhao/application/mongodb/bin/mong......
  • Mongodb(4)索引,查看执行计划,聚合操作aggregate,表关联查询,批量插入测试数据,执行计
    创建索引,支持:单键索引、复合索引,唯一索引创建索引后台执行db.books.createIndex({open:1,close:1},{background:true})对内嵌文档字段创建索引:db.books.createIndex({"author.name":1})创建唯一索引db.books.createIndex({title:1},{unique:true})在包含嵌套对象的......
  • MongoDB 集群部署
    MongoDB集群部署环境系统:CentOS7主机端口角色192.168.93.10027017master192.168.93.10127017slave192.168.93.10227017arditer镜像拉取dockerpullmongo:4.4挂载目录#配置文件地址mkdir-p/data/mongodb/configdb#db存放地址mkdir-p......
  • Dell服务器导入idrac 授权文件 (适用iDRAC7、iDRAC8、iDRAC9)
    iDRACEnterprise、iDRACDatacenter和CMCEnterprise的30天试用许可证,供熟悉高级功能集,例如使用虚拟控制台等OpenManageEnterpriseAdvanced或Advanced+许可证支持高级功能,例如自动部署、服务器配置合规性和激活可用插件,如OpenManageEnterprisePowerManager......
  • mongodb 查询条件,查询逻辑对照表,逻辑运算符,正则表达式匹配查询,排序,分页/巧分页,更新操
    mongodb查询条件,查询逻辑对照表,逻辑运算符,正则表达式匹配查询,排序,分页/巧分页,更新操作符,更新单个/多个文档,删除文档,批量插入,$type操作符,内嵌文档和数组查找修改1.条件查询SQLMQLa=1{a:1}a<>1{a:{$ne:1}}a>1{a:{$gt:1}}a>=1{a:{$gte:1}}a<1{a:{$lt......
  • Java 代码里如何设置,可以让程序仅仅从 MongoDB 的主节点读写,而不从从节点读写
    在Java中,如果你希望仅从MongoDB的主节点(primarynode)进行读写操作,而避免从从节点(secondarynodes)读写,可以通过以下方式配置MongoDB客户端:1.使用ReadPreference.primary()配置MongoDB提供了ReadPreference类来定义客户端的读偏好。默认情况下,ReadPreference.primary(......
  • 网站模板导入修改? cms网站模板无法修改?
    网站模板导入与修改指南1.检查权限管理员权限:确保你拥有足够的权限来修改模板。文件权限:检查服务器上的文件权限,确保你有权限编辑和保存文件。2.选择合适的编辑工具在线编辑器:许多CMS系统(如WordPress、Joomla等)提供了在线模板编辑功能。本地编辑器:使用本地代码编辑器(如......
  • Access导入外部数据时出现mx_FrmMain是怎么回事
    Access导入外部数据时出现mx_FrmMain的原因是:1、损坏的Access数据库文件;2、缺少或错误的引用;3、VBA代码错误。Access数据库文件可能已损坏,导致无法正确加载主窗体(mx_FrmMain)。一、Access导入外部数据时出现mx_FrmMain的原因1、损坏的Access数据库文件Access数据库文件可能已......
  • jar包运行报错1.无主属性清单 2.外部Jar包未导入 3.Data Source url报错解决 4.端口占
    相信大家mvnpackage打包成jar包后放到服务器上面运行后遇到一些很头疼的问题,怎么按照百度、gpt、csdn上面的博客修改就是成功不了但是!今天!博主带着自己尝试多次的血泪经验为大家解答以上三大问题!接下来以“代码+解析”的方式解析大家的问题一、无主属性问题报错如下图这......
  • mysql:excel 表格数据导入 mysql 的快捷方式
    (一)表格格式:1、创建新表、空表或打开有数据表2、表格以.csv形式保存3、保存表格时,直接选择“是”————(二)导入mysql数据库里:1、随便点个数据库选择TableDateImportWizard导入excel文件2、选择导入表格路径,然后点击Next。3、选择表格加入那个数据库......