如何进行MongoDB自动备份增量备份和恢复
Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高可用。
mongodb复制集简介
Mongodb复制集由一组Mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点,Mongodb Driver(客户端)的所有数据都写入Primary,Secondary从Primary同步写入的数据,以保持复制集内所有成员存储相同的数据集,提供数据的高可用。
MongoDB数据库导入导出的备份操作
1、导出数据库 twangback为备份的文件夹
命令:
mongodump -h 127.0.0.1【服务器IP】 -d adview 【数据库名】-o D:Mongodbdata wangback【自己定义备份存储文件夹】
例如:
mongodump -h 127.0.0.1 -d twang-o twangback
-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:需要备份的数据库实例,例如:twang
-o:备份的数据存放位置,例如:D:Mongodbdata,当然该目录需要提前建立,在备份完成后,系统自动在data目录下建立一个twangback目
录,这个目录里面存放该数据库实例的备份数据。
2、导入数据库从文件夹twangback
【注意:】导入mongodb常用的基本命令使用介绍
iis7站长之家请删除原有的文件
命令:
mongorestore -h localhost -d twang【数据库名】
mondodbback wang wangback wang【备份的路径】
例如:
mongorestore-hlocalhost-dtwangD:Mongodbdata wangback wang
-h:MongoDB所在服务器地址
-d:需要恢复的数据库实例,例如:twang,当然这个名称也可以和备份时候的不一样,比如test2
--directoryperdb:备份数据所在位置,例如:D:Mongodbdata wangback wang
MongoDB 增量备份方案
MongoDB本身不支持增量备份,所以这里介绍几种我找到的,或者是自己使用代码实现的方法:
我的环境:集群环境,
如果是分片集群,只好各【分片集群】和【配置服务器集群】分开备份处理,因为使用了Oplog
所以不适合单机环境
一、 Delay server + Oplog replay(延迟节点+Oplog 重现)
【MongoDB The.Definitive.Guide 2nd.pdf】P363中介绍的使用mongooplog 工具来做增量备份的方法
应该 也属于此类方法。
二、使用mongosync 同步工具, 它的功能有:
1. 全量同步
2. 增量同步
3. 全量和增量同步,实时同步
4. 可批量同步某个库/表
优点: 切换快,(如果使用了增量备份,那备份机必须是集群,因为用到oplog )
Mongodb在linux下面使用shell脚本写的定时备份代码
定时备份脚本如下:
#!/bin/bash
sourcepath='/app/mongodb-linux-x86_64-2.4.1'/bin
targetpath='/backup/mongobak'
nowtime=$(date +%Y%m%d)
start()
{
${sourcepath}/mongodump --host 127.0.0.1 --port 27017 --out ${targetpath}/${nowtime}
}
execute()
{
start
if [ $? -eq 0 ]
then
echo "back successfully!"
else
echo "back failure!"
fi
}
if [ ! -d "${targetpath}/${nowtime}/" ]
then
mkdir ${targetpath}/${nowtime}
fi
execute
echo "============== back end ${nowtime} =============="
mongodb数据恢复方法:mongorestore
mongorestore --help
#命令帮助
mongorestore -h 192.168.0.2 -u "root" -p "123" d:mydb
#从备份目录d:mydb下恢复数据库到192.168.0.1上
#整库恢复使用admin库下的用户进行认证
mongorestore -h 192.168.0.2 -u "mydb_user" -p "123" -d mydb d:Usermydb --drop
#从备份目录d:Usermydb下恢复集合到192.168.0.1上mydb库的User集合,如果存在则先删除再恢复
#指定数据库名则需使用指定库下的用户进行认证.