MongoDB 备份和恢复——筑梦之路
安装mongoDB
yum install libcurl openssl
#添加yum源
vim /etc/yum.repos.d/mongodb-org.repo
[mongodb-org]
name=MongoDB 4.4 Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/$basearch/
gpgcheck=0
enabled=1
#安装
yum install -y mongodb-org
#操作
systemctl start|enable|stop|status mongod.service#修改配置文件
vim /etc/mongod.conf
bindIp 0.0.0.0 #允许远程连接
备份恢复方法:1.图形化工具连接备份恢复(Navicat、DBeaver),导出导入简单,不适合大量数据2.使用命令行mongodump\mongorestore\mongoexport\mongoimport这里重点介绍命令行方式mongodump -h dbhost -d dbname -o dbdirectory-h:
MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:
需要备份的数据库实例,例如:test
-o:
备份的数据存放位置,例如:/data/dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。mongorestore -h <hostname><:port> -d dbname <path>--host <:port>, -h <:port>:
MongoDB所在服务器地址,默认为: localhost:27017
--db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
--drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
<path>:
mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。
你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。
--dir:
指定备份的目录
注意:
你不能同时指定 <path> 和 --dir 选项。如果开启了账户认证,需要传参
-u 用户
-p 密码
--authenticationDatabase 数据库实例mongoexport 命令参数说明:
-h,--host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
--port:代表远程连接的数据库的端口,默认连接的远程端口27017;
-u,--username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
-p,--password:代表连接数据库的账号对应的密码;
-d,--db:代表连接的数据库;
-c,--collection:代表连接数据库中的集合;
-f, --fields:代表集合中的字段,可以根据设置选择导出的字段;
--type:代表导出输出的文件类型,包括csv和json文件;
-o, --out:代表导出的文件名;
-q, --query:代表查询条件;--skip:跳过指定数量的数据;
--limit:读取指定数量的数据记录;
--sort:对数据进行排序,可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列,如sort({KEY:1})。mongoimport命令参数说明:
h,--host :代表远程连接的数据库地址,默认连接本地Mongo数据库;
--port:代表远程连接的数据库的端口,默认连接的远程端口27017;
-u,--username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;
-p,--password:代表连接数据库的账号对应的密码;
-d,--db:代表连接的数据库;
-c,--collection:代表连接数据库中的集合;
-f, --fields:代表导入集合中的字段;
--type:代表导入的文件类型,包括csv和json,tsv文件,默认json格式;
--file:导入的文件名称
--headerline:导入csv文件时,指明第一行是列名,不需要导入;示例:mongoexport --port 27030 -u admin -p admin -d test -c bike -f bikeId,lat,lng,current_time,source --type=json -o bike.csv --query='{"source":"ofo"}' --limit=1mongoexport --port 27030 -u admin -p admin -d test -c bike -f bikeId,lat,lng,current_time,source --type=csv -o bike.csv --query='{"source":"ofo"}' --limit=1mongoimport --port 27030 -u admin -p admin -d test -c bike_bak --type=json --file bike.json
区别:
mongoexport/mongoimport导入/导出的是JSON格式,而mongodump/mongorestore导入/导出的是BSON格式。
JSON可读性强但体积较大,BSON则是二进制文件,体积小但对人类几乎没有可读性。
在一些mongodb版本之间,BSON格式可能会随版本不同而有所不同,所以不同版本之间用mongodump/mongorestore可能不会成功,具体要看版本之间的兼容性。当无法使用BSON进行跨版本的数据迁移的时候,使用JSON格式即mongoexport/mongoimport是一个可选项。跨版本的mongodump/mongorestore个人并不推荐,实在要做请先检查文档看两个版本是否兼容(大部分时候是的)。
JSON虽然具有较好的跨版本通用性,但其只保留了数据部分,不保留索引,账户等其他基础信息。使用时应该注意备份方面比较:
1、mongoexport 可以指定集合中的字段, mongodump最多到集合
2、mongoexport 可以带导出的过滤条件 -q, mongodump则不可以
3、mongoexport 可以导出json和csv格式, mongodump导出的是bson可读性不如前者4、mongodump 的速度和压缩率都最好,每秒125M的数据,压缩率达28%
5、mongodump 更适合全库备份,mongoexport更适合单个集合备份恢复方面比较:
1、mongoimport 速度较快,但不保证数据完整导入 。
2、mongorestore 速度较慢,比mongoimport慢2.5倍左右,但是根据mongodump导出的数据,可以完整导入数据
针对不同版本之间的mongodb迁移提供以下脚本
环境说明:python3from pymongo import MongoClient# TODO 源mongo地址, 自行更改
FROM_ADDRESS = ("192.168.100.23", 27017)
# TODO 目的mongo地址, 自行更改
TO_ADDRESS = ("192.168.30.23", 27017)
#需要备份的数据库, 自行更改
DB_NAME = "test"def write(_id, data):to_conn = MongoClient(*TO_ADDRESS)to_db = to_conn[DB_NAME]tab = to_db[_id]tab.insert(data)to_conn.close()def main():from_conn = MongoClient(*FROM_ADDRESS)from_db = from_conn[DB_NAME]tables_list = from_db.list_collection_names() # 数据库里面所有的表"""这里可以去掉不需要动的一些表"""tables_list.pop(tables_list.index("system.indexes")) # 去掉了system.indexes这张表for table in tables_list:db_data = from_db[table].find()# _db[table].drop() # 若源数据库的数据不再需要就解开注释"""这里可对数据进行操作, 批量修改, 排序等"""write(table, db_data) # 写入数据库from_conn.close()if __name__ == '__main__':main()
或者使用mongosync
git clone https://github.com/jacketwoo/mongosyncorgit clone https://gitee.com/mirrors_Qihoo360/mongosync.gityum install -y sconsyum install -y boost boost-develyum install -y openssl-develcd mongosync/ && make示例:
mongosync --src_srv 10.6.13.140:27000 --src_user ucloudbackup --src_passwd xxx --src_auth_db admin --dst_srv 10.19.110.146:27000 --dst_user ucloudbackup --dst_passwd xxx --dst_auth_db admin --oplog --is_mongos --shard_user ucloudbackup --shard_passwd xxx(全量+增量)
shard_user和shard_passwd指的是每一个分片的登录账户和密码参考链接:
https://www.cnblogs.com/dh17/articles/14484367.html
https://www.cnblogs.com/cp-miao/p/8568010.html
MongoDB 备份和恢复——筑梦之路相关推荐
- Mongodb 物理备份和恢复 —— 筑梦之路
物理备份是指备份 MongoDB 数据目录,包括所有的数据文件.日志文件和配置文件.这种备份方法可以保留 MongoDB 数据库的完整性和一致性,也可以加快备份和恢复的速度.以下是备份和恢复 Mong ...
- K8S中使用显卡GPU(N卡) —— 筑梦之路
前些年做AI项目的时候经常用到显卡,大多数时候都是传统部署,对于资源的利用率并不高,而显卡也不便宜,K8S集群内调用显卡可以更加细致地进行显卡计算资源的分配,提高资源利用率. 之前记录和显卡相关的一些 ...
- 不关闭Selinux\Firewalld的情况下OpenSSH 9.0/9.1/9.2升级说明——筑梦之路
前面写了一些文章,关于利用官方源码编译或者制作rpm包来升级openssh,修复安全漏洞 centos 7 制作openssh8.7/8.8/8.9/9.0 p1 rpm包升级--筑梦之路_筑梦之路的 ...
- 时间同步设置NTP和Chrony两种方式—— 筑梦之路
之前写的:Chrony时间同步服务器的搭建--筑梦之路_筑梦之路的博客-CSDN博客_搭建chrony服务器 linux 下部署NTP服务器 时间同步_筑梦之路的博客-CSDN博客 操作系统:cent ...
- MongoDB备份及恢复
MongoDB备份及恢复 一.备份恢复介绍 1.备份恢复工具介绍: (1)** mongoexport/mongoimport (2)***** mongodump/mongorestore 2.备份 ...
- Nginx SSL漏洞(SWEET32)扫描和修复 —— 筑梦之路
1.扫描nmap -sV --script ssl-enum-ciphers -p 443 www.baidu.comnmap --script="ssl-enum-ciphers" ...
- CentOS 8 安装freePBX 软交换电话软件——筑梦之路
简单介绍: Freepbx是一个集成了Asterisk的工具,提供GUI (graphical user interface)用户图形界面.通过Freepbx可以十分方便的配置各类电话系统.由于Ast ...
- 国产数据库备份恢复(TiDB\达梦\OceanBase\openGauss\GaussDB\GBASE)——筑梦之路
TiDB: BR 简介 | PingCAP Docs 备份原理介绍: BR 设计原理 | PingCAP Docs BR 设计原理 BR 将备份或恢复操作命令下发到各个 TiKV 节点.TiKV 收到 ...
- mongodb备份和恢复
一. 备份 使用mongodump备份,并不会备份分片信息和索引,所以恢复之后,需要手动创建对数据库和集合的分片,手动创建索引 #./bin/mongodump -h 127.0.0.1:20000 ...
最新文章
- 超融合服务器品牌型号,蓝盾发布云平台!强势加入云计算IT行列
- 三、hbase JavaAPI
- python php区别-JAVA、PHP、Python这3种编程语言有什么区别?
- 一篇文章带你搞定Python返回函数
- 给你推荐几个 NB 的公众号
- 第一节:数据库与数据仓库
- asp.net treeView绑定
- 【CodeForces - 1150C】Prefix Sum Primes(思维)
- socket.io 中文手册 socket.io 中文文档
- 金银花跟黄芪泡水有什么功效?
- python多线程异步爬虫-Python异步爬虫试验[Celery,gevent,requests]
- 计算机网络考前,《计算机网络原理》--考前复习资料.doc
- JVM初识之内存分析常用命令和工具
- 勒索病毒解密工具的汇总
- 【软件工程期末复习】知识点+大题详解(E-R图、数据流图、N-S盒图、状态图、活动图、用例图....)
- CSS 边框 border属性
- 表情识别论文《OAENet Oriented Attention Ensemble for Accurate FacialExpression Recognition》中文翻译
- [置顶] 施一公:优秀博士如何养成(全文) 清华大学演讲
- 背包问题贪心算法求解
- 有哪些生物多样性保护项目?
热门文章
- 海通证券-2017年12月9日
- 警惕常见6种伤肾食物:煎炸食物不能吃!
- JNI开发笔记(二)--创建JNI基础工程并运行
- 基于Vue 表格行上下移动
- php钓鱼怎么使用方法,阿魏_阿魏如何使用_钓鱼百科「钓鱼人」
- 【大数据管理】Python实现带位置的倒排索引
- 特征选择方法概括—过滤法、嵌入法、包装法
- java解析tfrecord_tensorflow将图片保存为tfrecord和tfrecord的读取方式
- android 多个数组合并,Android之ListView和ArrayAdapter的组合使用
- Python与redis数据库的交互详解【重点】