数据的备份非常中要,一下的两种方式,当然也可以利用快照:
---------------------------------------------------------------------
一、直接拷贝数据文件方式备份还原
----------------------------------------------------------------------
注:当调用db.fsyncUnlock()和db.fsyncLock()命令是不要关闭shell,因为如果你启用了身份验证或者断开了链接,可能连不上,需要重新启动mongod,这些命令就都失效了
1.将数据库锁定:db.fsyncLock()
这个命令禁止所有写入,并将脏页写入磁盘保证数据不再变化。这个时候的写操作都会在内存中排队等待了,直到数据库解锁。
2.mkdir /mongodbback/zou
cp -R /server/mongo/data/* /mongodbback/zou
3.解锁数据库 db.fsyncUnlock()
备份完成之后,那如何回复呢
4. cp -R /mongodb/zou/* /server/mongo/data/
注意:
恢复前应该确保mongod没有运行,且/server/mongo/data/为空。
删除前一定确认cp命令成功执行。
恢复完成后,再启动mongod。
启动mongod使用一下命令:mongod -f /etc/mongod.conf --fork --nojournal
-----------------------------------------------------------------------------
二、mongodump备份
-----------------------------------------------------------------------------
1.数据库mongod没有运行的状态下的备份
mongodump --dbpath /server/mongo/data/ --out /backup/zou/mongo
数据库未启动时的还原
mongorestore --dbpath /backup/zou/mongo/ --journal /server/mongo/data
若是要指定备份还原特定数据库在文件路径下指定数据库文件夹的名字即可
2.远程链接进行备份
mongodump --host www.zou.com --port 27017 --username zou --password 123.com --out /backup/zou/mongo/mongodump-2016-03-11
恢复
mongodump --host www.zou.com --port 27017 --username zou --password 123.com /backup/zou/mongo/mongodump-2016-03-11
3.使用oplog进行备份
mongodump不是快照备份,备份过程中系统可能会继续进行操作。
oplog的设置就是避免这种情况发生的,不过使用oplog的前提是mongod启动时使用了--replSet选项
备份和恢复同2相同,只不过加上--oplog 和 oplogReplay 参数