Mongodb 备份与恢复
Posted 飞哥非哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb 备份与恢复相关的知识,希望对你有一定的参考价值。
MonogoDb 备份和恢复
Back Up with Filesystem Snapshots
Back Up with mongodump
Back Up with Filesystem Snapshots
MongoDB 3.2 之后增加了当MongoDB实例的数据文件和日志文件位于不同的卷上时,使用WiredTiger存储引擎添加对MongoDB实例的卷级备份的支持。
Back Up
1. lvcreate --size 100M --snapshot --name mdb-snap01 /dev/vg0/mongodb
2. umount /dev/vg0/mdb-snap01
3. dd if=/dev/vg0/mdb-snap01 | gzip > mdb-snap01.gz
ssh备份到远程的服务器:
3. dd if=/dev/vg0/mdb-snap01 | ssh username@example.com gzip > /opt/backup/mdb-snap01.gz
Restore a Snapshot
1. lvcreate --size 1G --name mdb-new vg0
2. gzip -d -c mdb-snap01.gz | dd of=/dev/vg0/mdb-new
3. mount /dev/vg0/mdb-new /srv/mongodb
ssh远程恢复:
2. ssh username@example.com gzip -d -c /opt/backup/mdb-snap01.gz | dd of=/dev/vg0/mdb-new
Back Up with mongodump
mongodump
#备份所有库
mongodump --port 29017 --host kafka1.shared --oplog -o /home/fanlifei/
#备份单个库
mongodump --port 29017 --host kafka1.shared -d myTest -o /home/fanlifei/
#备份单个集合
mongodump --port 29017 --host kafka1.shared -d myTest -c colTest -o /home/fanlifei/
mongorestore
mongorestore --port <port number> <path to the backup>
如果备份的时候有 --oplog 参加,则在恢复的时候需要加上 --oplogReplay
恢复一个副本集
#恢复数据到单节点副本集
1、获取备份文件
2、如果备份中存在local,则删除local数据库
mongod --dbpath /data/db
use local
dropDatabase()
db.shutdownServer()
3、启动单节点副本集
mongod --dbpath /data/db --replSet <replName>
4、连接mongodb并初始化副本集
rs.initiate( {
_id : <replName>,
members: [ { _id : 0, host : <host:port> } ]
})
5、增加副本集成员
1> 手动将数据库文件复制到每个数据目录
#关闭恢复的mongo实例
db.shutdownServer()或者--shutdown
#复制primary’s的数据文件到每一个secondary
cp primary/dbpath secondary/dbpath
#启动恢复的Mongo实例
mongod --dbpath /data/db --replSet <replName>
#加入secondary成员
rs.add()
2> 初始同步自动分配数据。
Ensure that the data directories on the prospective replica set members are empty.
Add each prospective member to the replica set.
以上是关于Mongodb 备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章