繁体   English   中英

如何以最简单的方式备份MongoDB GridFS数据库?

[英]How can I backup a MongoDB GridFS database the easiest way?

就像标题所说,我有一个包含各种文件类型的MongoDB GridFS数据库(例如,text,pdf,xls),我想以最简单的方式备份这个数据库。

复制不是一种选择。 我希望以通常的数据库方式将数据库转储到文件然后备份该文件(如果需要可以用于100%以后恢复整个数据库)。 可以用mongodump完成吗? 我还希望备份是增量备份。 这会是GridFSmongodump的问题吗?

最重要的是,这是最好的方式吗? 我对MongoDB不是很熟悉, mongodumpMySQL mysqldump一样吗? 什么是MongoDB GridFS和增量备份的最佳实践?

我正在运行Linux如果这有任何区别。

GridFS将文件存储在两个集合中:fs.files和fs.chunks。

有关这方面的更多信息可以在GridFS规范文档中找到: http//www.mongodb.org/display/DOCS/GridFS+Specification

两个集合都可以使用mongodump备份,与任何其他集合相同。 关于mongodump的文档可以在这里找到: http//www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-mongodump

从终端,这看起来如下所示:

对于此演示,我的数据库名称是“gridFS”:

首先,mongodump用于将fs.files和fs.chunks集合备份到桌面上的文件夹:

$ bin/mongodump --db gridFS --collection fs.chunks --out /Desktop
connected to: 127.0.0.1
DATABASE: gridFS     to     /Desktop/gridFS
    gridFS.fs.chunks to /Desktop/gridFS/fs.chunks.bson
         3 objects
$ bin/mongodump --db gridFS --collection fs.files --out /Desktop
connected to: 127.0.0.1
DATABASE: gridFS     to     /Desktop/gridFS
    gridFS.fs.files to /Users/mbastien/Desktop/gridfs/gridFS/fs.files.bson
         3 objects

现在,mongorestore用于将备份的集合拉入一个名为“gridFScopy”的新数据库(用于演示)

$ bin/mongorestore --db gridFScopy --collection fs.chunks /Desktop/gridFS/fs.chunks.bson 
connected to: 127.0.0.1
Thu Jan 19 12:38:43 /Desktop/gridFS/fs.chunks.bson
Thu Jan 19 12:38:43      going into namespace [gridFScopy.fs.chunks]
3 objects found
$ bin/mongorestore --db gridFScopy --collection fs.files /Desktop/gridFS/fs.files.bson 
connected to: 127.0.0.1
Thu Jan 19 12:39:37 /Desktop/gridFS/fs.files.bson
Thu Jan 19 12:39:37      going into namespace [gridFScopy.fs.files]
3 objects found

现在启动Mongo shell,以便可以验证还原:

$ bin/mongo
MongoDB shell version: 2.0.2
connecting to: test
> use gridFScopy
switched to db gridFScopy
> show collections
fs.chunks
fs.files
system.indexes
> 

fs.chunks和fs.files集合已成功还原到新数据库。

您可以编写脚本以定期对fs.files和fs.chunks集合执行mongodump。

至于增量备份,MongoDB并不真正支持它们。 谷歌搜索“mongodb增量备份”显示了一个很好的mongodb用户Google Groups关于这个主题的讨论: http//groups.google.com/group/mongodb-user/browse_thread/thread/6b886794a9bf170f

对于连续备份,许多用户使用副本集。 (意识到在您的原始问题中,您声明这不是一个选项。这包括在社区中可能正在阅读此响应的其他成员。)可以隐藏副本集的成员以确保它永远不会成为小学,永远不会被读。 有关此内容的更多信息,请参见“副本集配置”文档的“成员选项”部分。 http://www.mongodb.org/display/DOCS/Replica+Set+Configuration#ReplicaSetConfiguration-Memberoptions

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM