目录

一、MongoDB备份机制

1. MongoDB备份方式

2. MongoDB的备份考量

A. 要点:

3. MongoDB 备份方式对比

4. mongodump 备份工具

5. mongodump 备份机制

6. MongoDB 备份工具实战

A. 要点:

B. 备份命令

C. MongoDB备份原则

D. 基于Linux的LVM备份机制

E. 快照备份机制Snapshots

F. Linux系统创建快照 (适应于大数据场景)

H. windows 下实战

0.【暴力方式】复制 data目录

 1. 链接本地数据库,并备份(慎用)

2. 设置备份目录(目录不存在自动创建,如果不选择数据库会备份所有(慎用))

3. 备份taobao数据库下的users集合,到bin/user目录

4. 过滤集合的一部分数据(这里是年龄=18的文档)

5. 链接远程数据库

二、数据库的恢复

A. 基于快照文件的恢复

B. 基于Dump备份文件

1. 演示

Stage 1:删除数据库

Stage 2:恢复数据库 mongorestore

C. 直接复制data文件夹备份(数据量比较大的场景)

三、数据库的导出 (适用于小数据量,且数据结构支持不全)

A. 演示

1. mongoexport 导出帮助

2. 导出指定数据库的集合(必须指定集合否则报错)

四、数据库的导入

 A. 演示

1. mongoimport 导入帮助

2. 导入指定数据库的集合(必须指定集合否则报错)

五、MongoDB面试题

MongoDB备份常见方式?

mongodump备份数据使用的文件格式MongoDB恢复数据库使用什么工具?

mongodump备份数据的过程如何备份正在运行的数据库?

如何基于mongodump的备份文件恢复数据库?文件快照方式适用的场景?

MongoDB导入工具是什么?

说明:

        课程中的数据库没有设置账号密码,生产中备份和恢复均需要密码验证如

# Stage 1:备份远程数据库中的设备数据备份到本地

mongodump --host XXX.XXX.XXX.XXX --port 27017 --username root --password "XXXXXX" --collection 16091989 --db xph --out /backup/20230720 --query '{"dataTime":{ "$gt":"2023-07-14 00:00:00"}}'

# Stage 2:数据恢复

mongorestore --authenticationDatabase admin --username root --password "XXXXXX" --dir=/backup/20230720

一、MongoDB备份机制

1. MongoDB备份方式

磁盘阵列 (最原始,需要特殊设置)文件系统快照 Filesystem Snapshots(需要特殊设置)复制数据文件 CP (常用,有些文件不可复制:如系统占用的文件)【推荐】mongodump 备份 和 mongorestore 恢复工具【推荐】mongoimport 导入 和 mongoexport 导出工具MongoDB Atlas 云计算平台MongoDB Cloud Manager (MongoDB Cloud提供的备份机制)Ops Manager 企业版收费第三方工具【推荐】阿里云提供的备份工具

2. MongoDB的备份考量

A. 要点:

备份:需要读写,对系统性能产生影响,需要评估(冷热备份)复杂度:集群中的备份增量备份:(差异化备份)

3. MongoDB 备份方式对比

4. mongodump 备份工具

mongodump 是官方标配的简单数据备份工具mongodump 创建的是二进制BSON备份数据(BSON)mongodump 可以从mongod或mongos实例导出二进制数据mongodump 可用于转储整个数据库,集合或查询结果mongodump 可以备份正在写入的数据库,附带备份oplog数据mongodump 适用于小型数据库备份(如小于10G的数据),不适合大型系统mongodump 备份机制不是增量方法mongodump 是资源密集型的,对系统性能会产生影响

生产环境:用主-从模式,在从服务器上进行备份

5. mongodump 备份机制

mongodump 创建BSON备份文件,mongorestore工具恢复数据库mongodump 和 mongorestore 针对正在运行的mongodmongodump 也可以直接操作底层数据文件默认情况下,mongodump不捕获local数据库的内容为了节省空间,备份不包括索Index信息,恢复数据库要重建索引备份时,mongodump会对mongod性能产生影响对于副本集(主从复制集群),mongodump提供了--oplog选项,记录备份中更新数据操作,包含oplog条目中mongorestore 可以重放捕获的oplog要恢复--oplog的备份,请使用带有--oplogReplay选项 (重放选项)

6. MongoDB 备份工具实战

A. 要点:

远程备份:数据大(几百G),网络带宽问题远程备份:网络不稳定中断问题增量备份:(差异化备份)

B. 备份命令

默认数据库备份目录:bin/dump

C. MongoDB备份原则

标记文件,以便可以识别备份的内容以及备份反映的时间点如果mongodump和mongorestore的性能影响太大,请使用其他备份策略,例如Filesystem Snapshots或MongoDB Cloud Manager. (单节点推荐用文件快照)使用--oplog参数在mongodump备份期间捕获传入的写操作,以确保备份反映一致的数据状态。测试备份MongoDB部署,确保备份可用

D. 基于Linux的LVM备份机制

MongoDB可以使用Linux系统级别的工具来实现基于文件快照的备份Logical volume manager逻辑卷管理器文件快照或“block-level”备份方法使用系统级工具来创建包含MongoDB数据文件设备的拷贝。这种方法快速、可靠,但需要额外的系统配置3.2版本更改:当MongoDB数据文件和日志文件驻留在不同的卷上时,对使用WiredTiger存储引擎的数据库提供卷级备份支持,但是要创建一致备份必须锁定数据库,并且备份过程中暂停所有写入。3.2之前的版本,数据文件和日志文件必须驻留相同的卷上

E. 快照备份机制Snapshots

快照,数据文件的某个时刻的备份复制品快照完整保存数据库某个时间点的所有数据快照通过在实时数据和特殊快照卷之间创建指针来关联数据。这些指针在理论上等同于“硬链接”由于实时运行的数据与快照不同,快照过程使用写时复制策略。 因此,快照仅存储已修改的数据。对于WiredTiger存储引擎,数据文件反映了上一个检查点的一致状态。检查点每2GB数据或每分钟发生一次。

F. Linux系统创建快照 (适应于大数据场景)

创建LVM使用以下命令

lvcreate --size 100M --snapshot --name mdb-snap01 /dev/vg0/mongodb

注意:确保磁盘空间充足,否则创建失败,快照文件必须重新创建

直接恢复数据库,不使用压缩文件格式

umount /dev/vg0/mdb-snap01

lvcreate --size 1G --name mdb-new vg0

dd if=/dev/vg0/mdb-snap01 of=/dev/vg0/mdb-new

mount /dev/vg0/mdb-new /srv/mongodb

H. windows 下实战

0.【暴力方式】复制 data目录

其中data包含数据和日志文件

 1. 链接本地数据库,并备份(慎用)

mongodump --host 127.0.0.1--port 27017

2. 设置备份目录(目录不存在自动创建,如果不选择数据库会备份所有(慎用))

mongodump --out /data/backup/

3. 备份taobao数据库下的users集合,到bin/user目录

mongodump --collection users --db taobao --out user

4. 过滤集合的一部分数据(这里是年龄=18的文档)

mongodump --collection users --db taobao --out user --query {age:18}

5. 链接远程数据库

mongodump --host aliyun.com --port 3017 --username root --password "pass123" --out dump-2018

二、数据库的恢复

A. 基于快照文件的恢复

B. 基于Dump备份文件

使用工具:mongorestoremongorestore --host aliyun.com --port 3017 dump-2018mongorestore --oplogReplay 恢复带日志oplog的数据库注意:不会恢复索引,需要自己重建默认数据库使用备份目录恢复:bin/dump

1. 演示

Stage 1:删除数据库

Stage 2:恢复数据库 mongorestore

这里是全量恢复,使用恢复目录:bin/dump

C. 直接复制data文件夹备份(数据量比较大的场景)

三、数据库的导出 (适用于小数据量,且数据易丢失)

mongoexport:导出工具把MongoDB数据库数据导出为JSON、CSV、TSV格式独立工具,直接在系统命令窗口启动system command line可以导出特定集合的数据:mongoexport --db alibaba --collection users --out users.json

A. 演示

1. mongoexport 导出帮助

mongoexport --help

2. 导出指定数据库的集合(必须指定集合否则报错)

输出文件目录:bin/users.json将 alibaba 数据库中的 users 集合导出到 bin/users.json

mongoexport --db alibaba --collection users --out users.json

 将 alibaba 数据库中的 orders 集合导出到 bin/out2018.json

mongoexport --collection orders --db alibaba --out out2018.json

四、数据库的导入  (适用于小数据量,且数据易丢失)

mongoimport:导入工具从外部向MongoDB数据库数据导入格式为JSON、CSV、TSV的数据独立工具,直接在系统命令窗口中启动system command line可以导入特定集合的数据mongoimport --db alibaba --collection users --file users.json

注意:

避免使用mongoimport和mongoexport进行完整的实例备份数据丢失原因:不能确保所有BSON数据类型,因为JSON只能表示BSON类型子集

 A. 演示

1. mongoimport 导入帮助

mongoimport --help

2. 导入指定数据库的集合(必须指定集合否则报错)

文件目录:bin/out2018.json将 bin/out2018.json 导入到 taobao 数据库中的 users2018 集合

mongoimport --collection users2018 --db taobao out2018.json

五、MongoDB面试题

MongoDB备份常见方式? mongodump备份数据使用的文件格式MongoDB恢复数据库使用什么工具? mongodump备份数据的过程如何备份正在运行的数据库? 如何基于mongodump的备份文件恢复数据库?文件快照方式适用的场景? MongoDB导入工具是什么?

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: