当前位置:嗨网首页>书籍在线阅读

17-备份MongoDB数据库

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

22.5 备份MongoDB数据库

对MongoDB而言,最佳的备份策略是使用副本集实现高可用性,这可确保数据是最新的且始终可用。然而,如果数据至关重要,无法承受其受损带来的损失,应考虑如下情况。

  • 如果数据中心出现故障,该怎么办?对于这种情况,可定期备份数据并离线存储,或者添加离线的副本集。
  • 如果应用程序数据受损并被复制,该怎么办?这始终是个令人担心的问题。对于这种情况,除了备份别无他法。

确定需要定期备份数据后,应考虑备份对系统的影响并制定相应的策略。

  • 对生产环境的影响: 备份通常是资源密集型的,必须尽可能降低其对生产环境的影响。
  • 需求: 如果打算采取类似于块级快照的方式备份数据库,需要确保系统基础设施支持这种方式。
  • 分片: 如果对数据进行了分片,所有分片都必须一致——不能备份一个分片,而不备份其他分片。另外,为生成实时备份,必须停止将数据写入集群。
  • 相关数据: 为降低备份对系统的影响,也可只备份对系统来说生死攸关的数据。例如,对于永远不会变的数据库,只需备份一次。如果数据库很容易重新生成但非常大,那么相比于频繁备份,可能值得付出重新生成的代价。

备份MongoDB数据库的主要方法有两种。一是使用命令mongodump进行二进制转储。您可将离线存储这些二进制数据,供以后使用。例如,要将主机mg1.test.net上的副本集和独立系统mg2.test.net的数据库,转储到文件夹/opt/backup/current,可使用下面的命令:

mongodump --host rset1/mg1.test.net:27018,mg2.test.net –out/ opt/backup/current

要恢复使用mongodump转储的数据库,可使用命令mongorestore。要使用mongorestore,最简单的方式是,在关闭了MongoDB服务器的情况下使用如下语法:

mongorestore --dbpath <database path> <path to the backup>

例如:

mongorestore --dbpath /opt/data/db /opt/backup/current

也可在运行着MongoDB服务器的情况下使用下面的语法来恢复:

mongorestore --port <database port> <path to the backup>

备份MongoDB数据库的第二种方法是使用文件系统快照。快照很容易拍摄,但也大得多,要求启用日记,并要求系统支持块级备份。如果您想实现快照备份方法,请参阅下述网址的指南:http://docs.mongodb.org/manual/tutorial/back-up-databases-with-filesystem-snapshots/