Mongodb的备份与恢复

来源:互联网 发布:旅行商问题贪心算法 编辑:程序博客网 时间:2024/03/28 19:18

Mongodb的备份与恢复

标签(空格分隔): mongodb database linux


只要是数据肯定存在备份与恢复。对于重要的数据库,应该是经常备份,一旦发生意外,能够迅速恢复。

备份

mongodb有自己的备份命令:mongodump
基本语法为: mongodump -h dbhost -d dbname -o dbdirectory

-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:test
-o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

如: ./mongodump -h localhost -d cdn -o /search/mongodb/bak

恢复

恢复命令为:mongorestore
基本语法为: mongorestore -h dbhost -d dbname --directoryperdb dbdirectory

-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
–directoryperdb:备份数据所在位置,例如:c:\data\dump\test,这里为什么要多加一个test,而不是备份时候的dump,读者自己查看提示吧!
–drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

如: ./mongorestore -h localhost -d cdn --directoryperdb dbdirectory

定期备份

假定mongodb的bin放置在:/usr/local/mongodb/mongodb-linux-x86_64-2.6.4/bin
备份路径为:/search/mongodb/bak
需要备份的数据库为:cdn
可以建立一个crontab脚本

#!/bin/bashcurDate=`date +"%Y%m%d"`bakBaseDir="/search/mongodb/bak"bakDir="$bakBaseDir/$curDate"binDir="/usr/local/mongodb/mongodb-linux-x86_64-2.6.4/bin"#删除已经存在的数据if [ -d $bakDir ]; then    rm -rf $bakDirelse    mkdir -p $bakDirficd $binDir./mongodump -h 127.0.0.1 -d cdn -o $bakDir >> $bakBaseDir/bak.log#移除过期的备份find $bakBaseDir -mtime +10 -exec rm -rf {} \;

配置crontab命令:
0 1 * * * sh /search/mongodb/bak/bak.sh

格式为:分 时 日 月 星期 要运行的命令

  • 第1列分钟1~59
  • 第2列小时1~23(0表示子夜)
  • 第3列日1~31
  • 第4列月1~12
  • 第5列星期0~6(0表示星期天)
  • 第6列要运行的命令
0 0
原创粉丝点击