复制文件系统
冷备份:就是把mongod停了,然后拷贝相应的数据文件,最好是把一个数据库相应的数据文件夹完整的拷出,然后恢复的时候完整的拷入。
热备份:就是mongod在运行中,可以使用db.fsyncLock();来锁定数据库,然后进行数据文件的拷贝,拷贝完成后,使用db.fsyncUnLock();解除锁定。恢复的时候,需要把mongod停了,然后把文件拷入。
使用mongodump来备份
对于单独的数据库和集合还是一个好选择的
./mongodump --port 20011 -o ../dump/
也可以-h指定主机和端口,-d指定数据库名字,-o指定输出的路经 , 如果mongod没有运行,使用--dbpath指定数据目录也可以
使用mongorestore来恢复
./mongorestore --port 20011 --drop ../dump
其中的--drop指定要删除服务器上的数据, dump/是存放备份数据的文件夹 , 当然,也可以-h指定主机和端口,-d指定数据库名字,-directoryperdb指定备份文件所在的位置
对副本集进行备份
建议对备份节点进行备份,最好是采用复制文件系统的方式
对分片集群进行备份
由于不可能对集群在某一时间点的完整状态快照,因此不太可能对正在运行的分片集群进行“完美的”备份。
因此对于分片集群进行备份恢复,更关注单个分片或者副本集的备份。
注意:要进行分片集备份,需要先关闭均衡器