MongoDB数据备份恢复
本文最后更新于 898 天前,其中的信息可能已经有所发展或是发生改变。

MongoDB数据备份恢复

数据备份与恢复的意义

在日常运维过程中,数据备份及恢复也越来越重要,数据的备份保证了数据的安全性,在数据丢失或者误删除的情况下可以让我们快速的恢复,尽可能做到不丢失或者少丢失数据。

备份恢复方法

mongodump

mongodump 是 MongoDB 官方提供的备份工具,它可以从 MongoDB 数据库读取数据,并生成 BSON 文件,mongodump 适合用于备份和恢复数据量较小的 MongoDB 数据库,不适用于大数据量备份。

默认情况下,mongodump 不获取 local 数据库里面的内容。
mongodump 仅备份数据库中的文档,不备份索引,所以还原后,需要重新生成索引。

# 全量备份命令如下:
/AppHome/mongodb-3.6.0/bin/mongodump --host 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin --gzip --out /tmp/backup/drawback_file

#备份指定集合命令如下:
/AppHome/mongodb-3.6.0/bin/mongodump --host 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d gzeport-draw-file -c drawback_file --gzip --out /tmp/backup/drawback_file

参数介绍

#参数介绍:
--host <hostname><:port>, -h <hostname><:port>  # 指定备份的主机ip和端口号,默认值localhost:27017
--port # 指定端口号 默认27017
--username <username>, -u <username> # 指定用户名
--password <password>, -p <password> # 指定密码
--authenticationDatabase <dbname> # 指定认证的数据库
--authenticationMechanism <name> # 指定认证的算法 ,默认值 SCRAM-SHA-1
--db <database>, -d <database> # 指定备份的数据库,未指定的话,备份所有的数据库,但不包含local库
--collection <collection>, -c <collection> # 指定备份的集合,未指定则备份指定库中的所有集合
--query <json>, -q <json>  # 指定 json 作为查询条件。来备份过滤后的数据
--queryFile <path>  # 指定 json 文档路径,以该文档的内容作为查询条件,来备份过滤后的数据
--quit # 通过抑制 MongoDB的复制,连接等活动,来实现备份
--gzip  # 开启压缩,3.2版本后可以使用,输出为文件的话会带有后缀.gz
--out <path>, -o <path>  # 输出的目录路径
--repir # 修复数据时使用 下面有详细介绍
--oplog # mongodump 会将 mongodump 执行期间的 oplog 日志 输出到文件 oplog.bson,这就意味着从备份开始到备份结束的数据操作都可以记录下来
--archive <file> # 输出到单个存档文件或者是直接输出
--dumpDbUsersAndRoles # 只有在 使用 --db 时才适用,备份数据库的包含的用户和角色
--excludeCollection string # 排除指定的集合,如果要排除多个,使用多个--excludeCollection
--numParallelCollections int, -j int # 并行导出的集合数,默认为4
--ssl  # 指定 TLS/SSL 协议
--sslCAFile filename # 指定认证文件名
--sslPEMKeyFile <filename>
--sslPEMKeyPassword <value>
--sslCRLFile <filename>
--sslAllowInvalidCertificates
--sslAllowInvalidHostnames
--sslFIPSMode

mongorestore

mongorestore 可以创建新的数据库或将数据添加到现有的数据库,但是 mongorestore 仅仅执行insert 操作,不执行 update操作。

将文档还原到现有的数据库,现有的数据库中的文档的_id的值和要还原的文档中的_id 值是一样的,是不会将数据库原有的值覆盖的。

重建索引,mongorestore会重建索引。

# 恢复全库命令如下:
/AppHome/mongodb-3.6.0/bin/mongorestore --host 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin /tmp/backup/drawback_file

# 恢复指定命令如下:
/AppHome/mongodb-3.6.0/bin/mongorestore --host 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d gzeport-draw-file --gzip /tmp/gzeport-draw-file2/drawback_file.bson.gz

参数介绍:

--help # 查看帮助
--quiet # 通过抑制 MongoDB的复制,连接等活动,来实现数据恢复
--host <hostname><:port>, -h <hostname><:port>  # 指定恢复的主机ip和端口号,默认值localhost:27017
--port # 指定端口号 默认27017
--username <username>, -u <username> # 指定用户名
--password <password>, -p <password> # 指定密码
--authenticationDatabase <dbname> # 指定认证的数据库
--authenticationMechanism <name> # 指定认证的算法 ,默认值 SCRAM-SHA-1
namespace options:
  -d, --db=  从BSON文件恢复时指定的数据库
  -c, --collection=  从BSON文件恢复的集合
       --excludeCollection=  过时的参数.在恢复期间跳过的集合(可以多次指定以排除其他集合).
       --excludeCollectionsWithPrefix=  过时的参数.在恢复期间跳过具有给定前缀的集合(可以多次指定以排除其他前缀).
       --nsExclude=  排除匹配的命名空间
       --nsInclude=  包括匹配的命名空间
       --nsFrom=  重命名匹配的命名空间,必须具有匹配的nsTo
       --nsTo=  重命名匹配的命名空间,必须具有匹配的nsFrom
input options:
  --objcheck  插入前验证所有对象
  --oplogReplay  重放oplog以进行时间点恢复
  --oplogLimit=[:ordinal]  仅在提供的时间戳之前包含oplog条目
  --oplogFile=  用于重放oplog的oplog文件
  --archive=  从指定的归档文件恢复转储;若指定了flag而没有值,则从stdin读取归档文件
  --restoreDbUsersAndRoles  恢复给定数据库的用户和角色定义
  --dir=  输入目录,对stdin使用' - '
  --gzip  解压缩gzip压缩输入
restore options:
  --drop  在导入之前删除每个集合
  --dryRun  查看摘要而不导入任何内容 建议详细说明
  --writeConcern=  写关注选项比如 --writeConcern majority, --writeConcern '{w: 3, wtimeout: 500, fsync: true, j: true}'
  --noIndexRestore  不要恢复索引
  --noOptionsRestore  不恢复收集选项
  --keepIndexVersion  不要更新索引版本
  --maintainInsertionOrder  在恢复期间保留文件的顺序
  -j, --numParallelCollections=  要并行恢复的集合数默认为4
  --numInsertionWorkersPerCollection=  每个集合并发运行的插入操作数(默认为1)
  --stopOnError  如果在插入时遇到错误则停止恢复(默认情况下关闭)
  --bypassDocumentValidation  绕过文档验证
  --preserveUUID  保留原始集合UUID(默认情况下关闭,需要删除)

参考

1.作者:白炀斌(上海新炬中北团队)

2.本文来源:“IT那活儿”公众号:https://mp.weixin.qq.com/s/z6WCEweWLgbF4UWQF9DesA

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Image
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇