作者:夕阳
1. 备份背景
针对大数据量的地图数据切图使用MongoDB存储时,当地图瓦片的存储机发生变动前,瓦片的迁移工作就成为首要任务,针对MongoDB库中的瓦片迁移,有三种方法,各有优缺点,首推第1种,具体如下:
1.1 MongoDB库的备份与恢复
MongoDB数据的备份与恢复,MongoDB数据的备份与恢复相对以下两种,经过测试,备份与恢复使用的时间短,而且不存在数据丢失和增加等问题,同时可以跨MongoDB版本进行恢复,还可以跨系统恢复,在Linux系统上备份的数据在Windows上也可以恢复。
1.2 MongoDB库导入导出
数据的导入导出,MongoDB数据导入与导出主要针对的是数据库中的表,命令mongoexport和mongoimport两个命令分别是对库中的表或者表中指定的字段进行导出和导入。
1.3 Data文件夹拷贝
通过将MongoDB的数据库data文件夹拷贝到客户环境的MongoDB的data文件夹目录来实现数据的迁移,但是拷贝的过程中可能会存在数据的增加或者删减,而且对于不同的MongoDB版本,经过测试,直接拷贝data文件夹数据非常不稳定,会存在拷贝过去后无法使用的问题。
2. 备份测试数据说明
本次备份测试数据为全国全要素地图矢量数据,原始数据的大小为64G,然后对其切14级瓦片,切图后瓦片数量为1.6亿张,瓦片总大小为98.5G。
3. 备份操作流程
3.1 数据库备份
本次需要备份的数据为全国地图数据瓦片,在MongoDB中数据库名称为Quanguo。
我们将本次备份的数据库存放在/opt/rh的目录下面。在进行备份和恢复前,第一步先启动MongoDB服务,首先进入到MongoDB的bin目录下面,然后执行./mongod命令,如下图:
3.2 执行MongoDB数据备份
首先进入到MongoDB的安装包的bin目录下面,mongodump命令即为备份命令,命令的执行格式为:
mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径
如果数据库没有部分参数可以将上面对应的参数去掉,例如没有用户名,可以在命令格式中去掉 -U 用户名。
例如要备份本机的Quanguo数据库到opt/rh的目录下如下:
这样即可把Quanguo数据库备份。
备份后检查备份文件,主要包括以下7个文件,如图:
3.3 数据库恢复
首先我们将我们备份的文件夹拷贝到我们需要恢复的服务器的指定路径下面,例如我们将Quanguo备份数据放在需要恢复的服务器的home/lcc目录下面。
启动需要恢复数据的服务器上的MongoDB,启动方法与上面备份时启动MongoDB数据库的方法一致。
3.4 MongoDB数据恢复
首先进入到MongoDB的安装包的bin目录下面,mongorestore命令即为恢复命令,命令的执行格式为:
mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 文件存在路径
如果数据库没有部分参数可以将上面对应的参数去掉,与备份一致。例如我们需要将我们备份的数据恢复到新的数据库Quanguo1中,可执行以下命令即可恢复:
有时候在一些环境中若无法恢复时,需要将IP以及端口加上执行。
3.5 备份前备份后的检查
备份前后的检查我们可以通过MongoDB的可视化工具查看数据库中的表,或者我们可以将瓦片发布为地图服务,查看地图是否有瓦片的缺失。