5. MongoDB备份和恢复
1.mongodump和mongorestore
mongodump和mongorestore不能停机备份
(1) mongodump
使用普通的查询机制,所以产生的备份不一定是数据库数据的实时快照。
mongodump -d admin -o ./backup
-h host / -d db / -c collection / -u username / -p password / -o output directory
(2)mongorestore
mongorestore -d test3 --drop ./backup/test2
-h host / --port 也可以使用 --host hostname:port / -u username / -p password / -d db / -c collection /
--dir input directiory / --drop 先删除在导入集合
2. fsync和锁
(1)fsync 强制服务器将所有缓冲区写入磁盘
下面的例子强制执行了fsync并获得写入锁,上了写入锁可以安全的将数据目录副本用作备份。只能运行在 admin管理数据库(use admin),将锁住全部数据库
db.runCommand({"fsync" : 1, "lock" : 1})
(2)解锁
同样只能运行在admin数据库
db.$cmd.sys.unlock.findOne();
3.从属备份
最好的备份方案是在从服务器上进行备份。
4.修复
针对停电、崩溃等情况下数据有可能损坏,MongoDB内置了修复功能
(1)方法一 --repair
一般情况下,需要先删除lock 文件,然后通过mongod --repair来修复
# 删除lock文件 rm -rf /var/lib/mongo/mongod.lock # 删除log文件 rm -rf /var/log/mongodb/mongod.log # 删除mongodb进程文件 rm -rf /var/run/mongodb/mongod.pid # 修复操作 mkdir /var/lib/mongo/repair mongod --repair --dbpath /var/lib/mongo --repairpath /var/lib/mongo/repair/ # 删除lock文件 rm -rf /var/lib/mongo/mongod.lockrepair的过程:将所有文档导出然后马上导入,忽略无效的文档,完成后重新建立索引。
mongod --config /etc/mongod.conf --port=27017 --pidfilepath=/var/run/mongodb/mongod.pid --dbpath=/var/lib/mongo --directoryperdb --nojournal --noauth
(2)方法二 修复运行中的数据库 repairDatabase
use test db.repairDatabase()
相关推荐
lbyd0 2020-11-17
BigYellow 2020-11-16
sushuanglei 2020-11-12
我心似明月 2020-11-09
sdmzhu 2020-09-01
zhushenghan 2020-11-09
sunnnyduan 2020-10-16
不要皱眉 2020-10-14
xiaohai 2020-09-29
songxiugongwang 2020-09-22
萌亖 2020-09-17
LuckyLXG 2020-09-08
mkhhxxttxs 2020-09-16
xiaohai 2020-09-16
newcome 2020-09-09
jaylong 2020-08-19
大秦铁骑 2020-08-19
thatway 2020-08-19