【原创】Nominatim 快速部署/备份还原(PGSQL 数据库文件)

35 篇文章 0 订阅

nominatim 物理迁移, 其实是迁移 PGSQL 的数据库文件.
因为 nominatim 数据库文件少则几个GB, 多则几百 GB. 如果每次部署都使用 setup.php 进行导入, 时间非常慢. 测试 1.5MB 的马尔代夫地理信息 pbf 文件, 整个入库用了5分钟. (测试机用的1核1G, 不过1.5MB 用5分钟实在有点过分)
使用物理备份恢复, 脚本可以做到一键且秒级恢复.
搭配上 docker, 会更简单. docker 中部署 nominatim 和 pgsql 服务, 宿主机解压 pgsql 的数据库文件, 将宿主的 pgsql 文件目录挂载到 docker 中, 即可一键部署.

Nominatim 安装: http://nominatim.org/release-docs/latest/appendix/Install-on-Centos-7/
可选地图数据库: http://download.geofabrik.de/

修改 PGSQL 配置

# /usr/lib/systemd/system/postgresql.service
# 默认端口: 5432, 数据库文件地址: /usr/local/var/postgres
修改后端口使用5433, 数据库文件地址: /pgsql_data
Environment=PGPORT=5433
Environment=PGDATA=/pgsql_data

pgsql 数据库中, nominatim 数据库是地理信息, postgres 数据库包含授权信息等. 迁移时不要删除任何数据.

修改 Nominatim 配置

// 如果需要重新编译, 可以在编译前修改路径
// PATH: /home/nominatim/new/Nominatim-3.1.0/settings/defaults.php

// 如果不需要重新编译, 可以直接改已经编译后的路径
// PATH: /home/nominatim/new/Nominatim-3.1.0/build/settings/settings.php

// @define('CONST_Database_DSN', 'pgsql://@/nominatim'); // <driver>://<username>:<password>@<host>:<port>/<database>
@define('CONST_Database_DSN', 'pgsql://@:5433/nominatim');

修改 HTTPD Nominatim 配置(其实只要配置 pgsql 就可以, 这步可以不用操作)

# /etc/httpd/conf.d/nominatim.conf 
nominatim 初始位置位于 /home/nominatim, 后迁移至 /home/nominatim/new
<Directory "/home/nominatim/new/Nominatim-3.1.0/build/website">
  Options FollowSymLinks MultiViews
  AddType text/html   .php
  DirectoryIndex search.php
  Require all granted
</Directory>

Alias /nominatim /home/nominatim/new/Nominatim-3.1.0/build/website

注意: Directory 和 Alias 路径保持一致, 否则会报 403

// 需要注意, 一定要确保 local.php 存在, 否则 Apache 无法解析路径
// /home/nominatim/new/Nominatim-3.1.0/build/settings/settings.php
<?php
 @define('CONST_Database_Web_User', 'apache');
 @define('CONST_Website_BaseURL', '/nominatim/');

pgsql 修改端口, 数据库文件位置: /usr/lib/systemd/system/postgresql.service
apache 解析 php的 位置: /etc/httpd/conf.d/nominatim.conf
nominatim 路径解析配置(必须设置, 否则网址会变成 hostname): Nominatim-3.1.0/build/settings/local.php
nominatim 配置(配置数据库连接), build/settings/settings.php

我测试的时候用的马尔代夫的地理信息 1.5MB, 是最小的文件.
http://download.geofabrik.de/asia/maldives-latest.osm.pbf
更多的国家从 http://download.geofabrik.de/ 选择下载.

# 导入 pbf 地理信息
# 删除 pgsql 中的 nom 数据库, 不删除没法导入. 没做其他测试, 或许可以在不删除的情况下导入.
dropdb nominatim
# 下载全球的国家信息, 必须下载.
wget -O data/country_osm_grid.sql.gz http://lonvia.de/nominatim/country_grid.sql.gz
# 下载 国家的的地理数据库.
wget -O data/maldives-latest.osm.pbf http://download.geofabrik.de/asia/maldives-latest.osm.pbf
./build/utils/setup.php  --osm-file data/maldives-latest.osm.pbf --all

参考

Installing nominatimhttp://nominatim.org/release-docs/latest/appendix/Install-on-Centos-7/
Centos 7 environment variables for Postgres servicehttps://stackoverflow.com/questions/26848495/
Archlinux PostgreSQLhttps://wiki.archlinux.org/index.php/PostgreSQL
Nominatim Importing and Updatinghttp://nominatim.org/release-docs/latest/admin/Import-and-Update/
localhost/nominatim ERROR 403 Forbiddenhttps://github.com/openstreetmap/Nominatim/issues/591
OpenStreetMaphttps://wiki.openstreetmap.org/wiki/Beginners%27_guide

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Kubernetes 上部署 PostgreSQL 数据库后,要恢复备份文件,请使用 Kubernetes 提供的 PostgreSQL 客户端工具,如 psql 和 pg_restore。以下是恢复备份文件的基本步骤: 1. 将备份文件复制到 Kubernetes 集群中。例如,使用 kubectl cp 命令将备份文件复制到名为 pg-backup 的 Pod 中: ```kubectl cp mydb_backup.sql pg-backup:/backup``` 这里的 mydb_backup.sql 是您要恢复的备份文件的名称,pg-backup 是部署 PostgreSQL 数据库的 Pod 的名称,/backup 是备份文件在 Pod 中的路径。 2. 进入部署 PostgreSQL 数据库的 Pod。例如: ```kubectl exec -it pg-0 -- bash``` 这里的 pg-0 是部署 PostgreSQL 数据库的 Pod 的名称。 3. 使用 psql 或 pg_restore 工具恢复备份文件。例如,以下命令使用 psql 工具将备份文件还原到名为 mydb 的数据库中: ```psql -U <username> -h <host> -d mydb < /backup/mydb_backup.sql``` 这里的 <username> 和 <host> 分别是 PostgreSQL 数据库的用户名和主机。如果还原备份文件是经过 pg_dumpall 工具生成的,则可以使用以下命令将备份文件还原到所有数据库中: ```psql -U <username> -h <host> -f /backup/all_databases_backup.sql``` 在这里,all_databases_backup.sql 是您要还原备份文件的名称。 恢复完成后,您可以使用 psql 工具验证数据库是否已成功还原。例如,以下命令将连接到名为 mydb 的数据库并列出其中的表: ```psql -U <username> -h <host> -d mydb -c "\dt"``` 这里的 <username> 和 <host> 分别是 PostgreSQL 数据库的用户名和主机。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值