1、用mongodb工具备份和恢复数据库
因为所有这些工具主要是通过与正在运行的mongod实例交互操作,他们可能会影响正在运行的数据库的性能。
影响:
(1)、增加正在运行数据库实例的交互量;
(2)、强制数据库通过内存中所有的数据(造成内存中需要频繁被访问的数据被取代,降低数据库的性能)
二进制BSON转储(小规模部署转储)
Backup a Database with mongodump
mongodump:该方法可以备份整个服务器,数据库或集合(collection,即表),或者可以使用查询备份集的一部分。
mongodump 不转储本地local数据库
(1)mongodump
导出默认端口为27017的所有实例的数据,备份文件的路径为当前路径下的dump/
(2)mongodump --host mongodb.example.net --port 27017
指定ip和端口的数据库实例。
(3)mongodump --out /data/backup/
要指定不同的输出目录,则可以使用–out或-o选项:
(4)mongodump --collection myCollection --db test
指定导出的数据库实例和集合
(5)mongodump --host mongodb1.example.net --port 3017 --username user --password pass --out /opt/backup/mongodump-2013-10-24
备份非本地的mongod实例
mongodump命令导出的文件默认在当前文件夹的/dump目录下面,注意多次导出时会出现文件的覆盖。
mongorestore:回复数据库,这个命令的执行需要这个用户有读写数据库的权限。
使用参数 --oplogReplay 可以解决权限问题
(1)mongorestore --port
还原本地数据库
(2)mongorestore --oplogReplay
导出时用了–oplog参数
(3)mongorestore --host mongodb1.example.net --port 3017 --username user --password pass /opt/backup/mongodump-2013-10-24
还原非本地的数据库实例
在使用mongorestore恢复数据时用–objcheck 检查对象的完整性 --drop 恢复数据库之前先删除collection
避免使用mongoimport and mongoexport操作完整的数据库实例,这两个命令它们不可靠保存所有富BSON数据类型,建议使用mongodump和mongorestore操作。
collection Export with mongoexport
mongoexport:
(1)mongoexport --db users --collection contacts --type=csv --fields name,address --out /opt/backups/contacts.csv
导出数据库users 集合contacts中fild(列)为name和address的数据
可以将 name和address列放在一个文件fields.txt中,
mongoexport --db users --collection contacts --type=csv --fieldFile fields.txt --out /opt/backups/contacts.csv
eg
[root@localhost backups]# mongoexport --db local --collection student --type=csv --fields name,sex --out /opt/backups/student.csv
(2)mongoexport --db sales --collection contacts --out contacts.json
导出json格式
./mongoexport --host 127.0.0.1 --port 27017 --db e-store --collection customer --out customer.json;
(3)mongoexport --host mongodb1.example.net --port 37017 --username user --password pass --collection contacts --db marketing --out mdb1-examplenet.json
远程导出
(4)mongoexport --db sales --collection contacts --query ‘{“field”: 1}’
带查询条件的导出
collection Import with mongoimport
(1)mongoimport --db users --collection contacts --file contacts.json
导入json数据
(2)mongoimport --host mongodb1.example.net --port 37017 --username user --password pass --collection contacts --db marketing --file /opt/backups/mdb1-examplenet.json
导入json数据到远程数据库
(3)mongoimport --db users --collection contacts --type csv --headerline --file /opt/backups/contacts.csv
csv导入
–headerline,使用cvs文件中的第一行字段作为collection中的field
(4)mongoimport --db users --type csv --headerline --file /opt/backups/contacts.csv
在导入的collection名称和文件名称是相同的可以省略 --collection
–ignoreBlanks 在导入时使用这个参数来处理cvs中字段为空的情况
如果只是想简单的复制数据库或collection可以使用如下方法:
copydb、clone、cloneCollection db.copyDatabase()