前言
最近由于前一台服务器的身份期限 (学生身份认证) 已经快要到期了,所以需要将改服务器上MongoDB数据库中的所有数据进行迁移。其实针对这一点,有不止一种解决思路。比如:
- 把数据备份到服务器本地—>通过命令下载到本机—>将下载下来的数据恢复/(迁移)至目的服务器
- 把数据备份到服务器本地—>通过命令直接恢复/(迁移)至目的服务器
这里我选择的是第二种方案。而且由于对于 Linux
不是很熟悉,所有我首先在自己电脑的虚拟机上面模拟了一次这个过程,在成功之后才正式对需要的数据进行迁移。
1 本地模拟
1.1 运行环境搭建
本地模拟的过程首先需要搭建无人船服务器程序运行的所有环境,所以这就相当于实际自己把该过程操作了一遍,这也正好是之前有安排过的工作。其大致过程与之前写的无人船云服务器开发环境搭建 的内容基本一致,只是在 Linux
上面有一些小差别,而且一般只能通过命令行来操作。不过网上教程很多,可以解决。
1.2 备份数据
在 Mongodb 中我们使用 mongodump
命令来备份 MongoDB 数据。该命令可以导出所有数据到指定目录中。mongodump
命令可以通过参数指定导出的数据量以及转存的服务器。
mongodump
命令脚本语法如下:
1 | $ mongodump -h dbhost -d dbname -o dbdirectory |
参数说明:
-h:
MongoDB 所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d:
需要备份的数据库实例,例如:test
-o:
备份的数据存放位置(自己决定备份在何处),例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在 dump 目录下建立一个 test 目录,这个目录里面存放该数据库实例的备份数据。
模拟实例:
首先需要进入MongoDB安装目录的 bin 目录下,然后运行如下命令。
1 | $ mongodump -h localhost:27017 -d test -o /var/backups/mongobackups/'date+"%m-%d-%y"' |
之后等待备份完成。完成后可以在备份目录下找到一个以时间命名的文件(如:06-20-18),该文件就是备份数据的存储文件。
mongodump 命令可选参数列表如下所示:
语法 | 描述 | 实例 |
---|---|---|
mongodump –host HOST_NAME –port PORT_NUMBER | 该命令将备份所有 MongoDB 数据 | mongodump –host runoob.com –port 27017 |
mongodump –dbpath DB_PATH –out BACKUP_DIRECTORY | mongodump –dbpath /data/db/ –out /data/backup/ | |
mongodump –collection COLLECTION –db DB_NAME | 该命令将备份指定数据库的集合。 | mongodump –collection mycol –db test |
1.3 还原数据
mongodb 使用 mongorestore
命令来恢复备份的数据。
mongorestore
命令脚本语法如下:
1 | $ mongorestore -h <hostname><:port> -d dbname <path> |
参数说明:
–host <:port>, -h <:port>:
MongoDB 所在的目的服务器地址(既可以在本地还原,也可以还原到任意的目的服务器),默认为: localhost:27017
–db , -d :
需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如 test2
–drop:
恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
: mongorestore
最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。你不能同时指定
和 –dir 选项,–dir 也可以设置备份目录。 –dir:
指定备份的目录
你不能同时指定
和 –dir 选项。
模拟实例:
接下来我们执行以下命令:
1 | $ mongorestore -h 111.231.84.43:27017 -d test /var/backups/mongobackups/06-20-18 --drop |
等待数据还原结束。然后我们利用 Robo 3T
连接目的服务器的数据库并查看迁移的情况。如下图所示:
表明已经成功迁移了数据。
2 实际操作
2.1 PuTTY的使用
我通过 PuTTY 远程连接服务器。下载该软件,然后运行。输入目的 IP 和端口(默认为22),然后点击 打开即可。
接着会出现交互窗口,输入用户名和密码登陆即可。
登陆之后就可以正式操作了。
2.2 备份
首先创建备份文件夹:
1 | $ mkdir /var/backups/mongobackups |
然后找到MongoDB的安装目录,这里是 /mongodb/bin
。此时我们将所有的数据库信息都进行备份,则相应的命令为:
1 | $ mongodump -h localhost:27123 -o /var/backups/mongobackups/'date+"%m-%d-%y"' |
然后等待备份完成。由于数据量比较大,这个过程需要一定的时间,同时也取决于网络情况是否良好。
2.3 还原(迁移)
跟上面一样,用一下命令进行迁移:
1 | $ mongorestore -h 111.231.84.43:27017 /var/backups/mongobackups/06-20/18 --drop |
然后等待迁移完成即可。
最后可以通过 Robo 3T
查看目标服务器上是否有迁移过去的数据。
这样就大功告成了!