您好,欢迎访问一九零五行业门户网

mongdb备份恢复

一、物理备份(拷贝文件) #!/bin/shdate=`date+%y%m%d`del_date=$(date-d'-30days'+%y%m%d)host=10.10.17.27port=27000user=adminpassword=123456data_dir=/data/mongodb/navy_db/dbbackup_path=/data/mongodbbackup/$datedate+%y%m%d%h%m/data/log/m
一、物理备份(拷贝文件)
#!/bin/shdate=`date +%y%m%d`del_date=$(date -d '-30 days' +%y%m%d)host=10.10.17.27port=27000user=adminpassword=123456data_dir=/data/mongodb/navy_db/dbbackup_path=/data/mongodbbackup/$datedate +%y%m%d%h%m >>/data/log/mongodb_bak.log#第一步锁表lock(){echo db.fsynclock()| mongo --host $host --port $port -u $user -p $password admin}execute(){ lock if [ $? -eq 0 ] then echo mongodb lock successfully! >>/data/log/mongodb_bak.log else echo mongodb lock fail! >>/data/log/mongodb_bak.log fi}execute#第二步备份back(){rsync -av $data_dir $backup_path/}execute(){ back if [ $? -eq 0 ] then echo mongodb back successfully! >>/data/log/mongodb_bak.log else echo mongodb back fail! >>/data/log/mongodb_bak.log fi}execute#第三部解锁unlock(){echo db.fsyncunlock()| mongo --host $host --port $port -u $user -p $password admin}execute(){ unlock if [ $? -eq 0 ] then echo mongodb unlock successfully! >>/data/log/mongodb_bak.log else echo mongodb unlock fail! >>/data/log/mongodb_bak.log fi}execute#删除历史数据rm -rf /data/mongodbbackup/${del_date}/
ps:
物理备份只能全库恢复,不能恢复单个表
恢复步骤:
1、停止需要恢复的实例2、备份清空/data/mongodb/navy_db/db目录3、拷贝/data/mongodbbackup/$date下面的所有文件和文件夹到/data/mongodb/navy_db/db目录4、chown mongod:mongod /data/mongodb/navy_db/db/ -r5、启动实例
二、mongodump备份
#!/bin/shdate=`date +%y%m%d`del_date=$(date -d '-30 days' +%y%m%d)host=10.10.17.27:27000user=adminpassword=123456backup_path=/backup/mongodbbackup/$datedate +%y%m%d%h%m >>/data/log/mongodb_bak.logstart(){mongodump -h $host -u $user -p $password -o $backup_path}execute(){ start if [ $? -eq 0 ] then echo mongodb back successfully! >>/data/log/mongodb_bak.log else echo mongodb back fail! >>/data/log/mongodb_bak.log fi}executerm -rf /backup/mongodbbackup/${del_date}/
恢复:
1、全库恢复
mongorestore --host 10.10.17.27 --port 27000 /backup/mongodbbackup/20150818/
2、单集合(表的概念)恢复
mongorestore --host 10.10.17.27 --port 27001 --db navy_db_new --collection navy_db_table_new /backup/mongodbbackup/20150818/navy_db/navy_db_table.bson
三、复制集备份
#!/bin/shdate=`date +%y%m%d`del_date=$(date -d '-30 days' +%y%m%d)host=dbset/10.10.17.27:27000,10.10.17.26:27000user=adminpassword=123456backup_path=/data/mongodbbackup/$datedate +%y%m%d%h%m >>/data/log/mongodb_bak.logstart(){mongodump -h $host -u $user -p $password --oplog -o $backup_path}execute(){ start if [ $? -eq 0 ] then echo mongodb back successfully! >>/data/log/mongodb_bak.log else echo mongodb back fail! >>/data/log/mongodb_bak.log fi}executerm -rf /backup/mongodbbackup/${del_date}/
ps:
备份复制集和备份单个mongodb实例用mongodump备份的方法差不多,只是host的写法不一样,需要指定复制集名称,还有就是加上 --oplog参数,来跟踪备份时主库上发生的所有写操作,获取一个pointin-time快照,否则备份的状态将与集 群中其他节点不匹配。在恢复时,还必须创建oplog,并指定--oplogreplay参数来应用这些操作,否则恢复的成员将不知道从何处开始同步,从 而在某个时间点上与源服务器保持一致。
恢复:
1、降复制集中要恢复的节点移除
rs.remove(10.10.17.26:27000)
2、运行mongorestore --oplogreplay命令
mongorestore --host 10.10.17.26 --port 27000 --oplogreplay /data/mongodbbackup/20150820/
3、创建oplog
use local db.createcollection(oplog.rs, {capped : true, size : 10000000})
4、恢复oplog
mongorestore --host 10.10.17.26 --port 27000 -d local -c oplog.rs /data/mongodbbackup/20150820/oplog.bson
5、将该节点加入到复制集
rs.add(10.10.17.26:27000)
其它类似信息

推荐信息