[英]How can I backup a MongoDB GridFS database the easiest way?
就像标题所说,我有一个包含各种文件类型的MongoDB
GridFS
数据库(例如,text,pdf,xls),我想以最简单的方式备份这个数据库。
复制不是一种选择。 我希望以通常的数据库方式将数据库转储到文件然后备份该文件(如果需要可以用于100%以后恢复整个数据库)。 可以用mongodump
完成吗? 我还希望备份是增量备份。 这会是GridFS
和mongodump
的问题吗?
最重要的是,这是最好的方式吗? 我对MongoDB
不是很熟悉, mongodump
和MySQL
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.