MongoDB数据备份恢复

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
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇