forked from MapComplete/MapComplete
Scripts: add script to automatically update the database
This commit is contained in:
parent
72df69a2d6
commit
602cc1f8c9
3 changed files with 44 additions and 47 deletions
42
.forgejo/workflows/update_database.yml
Normal file
42
.forgejo/workflows/update_database.yml
Normal file
|
@ -0,0 +1,42 @@
|
|||
on:
|
||||
schedule:
|
||||
- cron: "0 0 1 */2 *"
|
||||
|
||||
|
||||
jobs:
|
||||
daily_data_maintenance:
|
||||
runs-on: [ lain ]
|
||||
steps:
|
||||
- uses: https://source.mapcomplete.org/actions/checkout@v4
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: https://source.mapcomplete.org/actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: "npm"
|
||||
cache-dependency-path: package-lock.json
|
||||
|
||||
- name: Init all dependencies and layers
|
||||
shell: bash
|
||||
run: npm run init
|
||||
|
||||
- name: Create export script
|
||||
shell: bash
|
||||
run: npm run build:dbscript # output: build_db.lua
|
||||
|
||||
|
||||
- name: Print planet file date
|
||||
shell: bash
|
||||
run: |
|
||||
# LAIN has a weekly updated planet file in /data/planet-latest.osm.pbf
|
||||
# See https://source.mapcomplete.org/MapComplete/planet-file-updater
|
||||
TIMESTAMP=$(osmium fileinfo /data/planet-latest.osm.pbf -g header.option.timestamp)
|
||||
DATE=$(echo $TIMESTAMP | sed "s/T.*//")
|
||||
echo $DATE
|
||||
# Create a new database in postgres
|
||||
vite-node scripts/osm2pgsql/createNewDatabase.ts -- $DATE
|
||||
echo "Seeding database '$DATE'"
|
||||
osm2pgsql -O flex -S build_db.lua -s --flat-nodes=import-help-file -d postgresql://user:password@localhost:5444/osm-poi.${DATE} /data/planet-latest.osm.pbf
|
||||
npm run delete:database:old
|
||||
|
||||
|
|
@ -13,16 +13,9 @@ Increase the max number of connections. osm2pgsql needs connection one per table
|
|||
- Validate with `cat /var/lib/postgresql/data/postgresql.conf | grep "max_connections"`
|
||||
- `sudo docker restart <ID>`
|
||||
|
||||
# Seeding the data
|
||||
|
||||
> The following steps are also automated in `update.sh`
|
||||
|
||||
## Create a database in the SQL-server
|
||||
|
||||
Run `vite-node scripts/osm2pgsql/createNewDatabase.ts -- YYYY-MM-DD` to create a new, appropriate, database
|
||||
|
||||
## Create export scripts for every layer
|
||||
|
||||
Use `npm run build:dbscript`
|
||||
> The following steps are also automated in .forgejo/workflows/update_database.yml
|
||||
|
||||
## Importing data
|
||||
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
#! /bin/bash
|
||||
|
||||
# Full database update. Downloads the latest from planet.osm.org, build update script, setup and seed it
|
||||
# Meant to be run with 'nohup'
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
nvm use 20.12.2
|
||||
npm run init # contains a 'npm run generate, which builds the layers'
|
||||
npm run generate:buildDbScript
|
||||
mv build_db.lua ~/data/
|
||||
|
||||
|
||||
cd ~/data || exit
|
||||
rm planet-latest.osm.pbf
|
||||
|
||||
wget https://planet.osm.org/pbf/planet-latest.osm.pbf
|
||||
|
||||
TIMESTAMP=$(osmium fileinfo ~/data/planet-latest.osm.pbf -g header.option.timestamp)
|
||||
DATE=$(echo $TIMESTAMP | sed "s/T.*//")
|
||||
echo $DATE
|
||||
cd ~/git/MapComplete/ || exit
|
||||
npm run create:database -- -- ${DATE/T.*//}
|
||||
cd ~/data || exit
|
||||
|
||||
rm seeddb.log
|
||||
osm2pgsql -O flex -S build_db.lua -s --flat-nodes=import-help-file -d postgresql://user:password@localhost:5444/osm-poi.${DATE} planet-latest.osm.pbf >> seeddb.log
|
||||
|
||||
# To see the progress
|
||||
# tail -f seeddb.log
|
||||
|
||||
cd ~/git/MapComplete || exit
|
||||
npm run delete:database:old
|
||||
nohup npm run server:summary >> summary_server.log &
|
||||
cd - || exit
|
||||
|
||||
# Restart tileserver
|
||||
export DATABASE_URL=postgresql://user:password@localhost:5444/osm-poi.${DATE}
|
||||
nohup ./pg_tileserv >> pg_tileserv.log &
|
Loading…
Add table
Add a link
Reference in a new issue