如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

有同事某天昏昏沉沉地走到我座位,说要请教我一个专业问题,我本准备洗耳恭听,谁知他问,该怎么向自己喜欢的女孩子表白?What??

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

Are you kidding me?认真再问一遍,他才反应过来说噢不不不,其实是想问,怎么在2台Linux服务器间进行MongoDB的备份与恢复?哈哈哈,暴露了吧!

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

既然都问到老司机我了,那我就不吝赐教,噢不不不,慷慨解囊了!

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

要点:本文记录如何在2台Linux服务器间进行MongoDB的备份与恢复

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

首先第一步,我们了解下涉及到的指令及语法:

在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中

语法:

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目录,这个目录里面存放该数据库实例的备份数据。

mongorestore 命令负责恢复备份的数据

语法:

mongorestore -h <:port> -d dbname 
  • --host <:port>, -h <:port>:

    MongoDB所在服务器地址,默认为: localhost:27017

  • --db , -d :

    需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

  • --drop:

    恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

  • mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。

    你不能同时指定 和 --dir 选项,--dir也可以设置备份目录。

  • --dir:

    指定备份的目录

    你不能同时指定 和 --dir 选项

第二步,我们需要从服务器A把数据库备份下来,并恢复到服务器B中, 以下是操作过程

(1)服务器A:

登录SSH, 执行备份指令

mongodump -h 127.0.0.1:27017 -d mydb -o /home/pi/Documents/mongodb_bak

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

备份的目标目录可以不存在, mongodump会帮你自动创建它

为了确保备份正确, 我们回过头看看源数据库的情况: 数据库(db)及数据表(collectons)的数据条数

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

再检查一下备份出来的目录

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

(2)把备份好的目录拷贝到服务器B:

登录SSH, 执行拷贝指令

scp -r /home/pi/Documents/mongodb_bak/* [email protected]:/home/downloads/mongodb_bak

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

(3)服务器B恢复数据库:

登录SSH, 执行恢复指令

mongorestore -h 192.168.6.42:27017 -d mydb1 /home/downloads/mongodb_bak/mydb/

可以指定一个新的数据库名字,不一定要跟源数据库同名

服务器B因为指定了一个IP连接, 所以此处不能使用127.0.0.1

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

恢复完成后, 查看一下数据库情况

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!

可以看到恢复的数据表数据条数跟源数据库一致, 成功啦!

怎么样,你学会了吗?下次见~

如何在2台Linux服务器间进行MongoDB备份与恢复?只需两步!


分享到:


相關文章: