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"`
 | 
					- Validate with `cat /var/lib/postgresql/data/postgresql.conf | grep "max_connections"`
 | 
				
			||||||
- `sudo docker restart <ID>`
 | 
					- `sudo docker restart <ID>`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Seeding the data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
> The following steps are also automated in `update.sh`
 | 
					> The following steps are also automated in .forgejo/workflows/update_database.yml
 | 
				
			||||||
 | 
					 | 
				
			||||||
## 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`
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Importing data
 | 
					## 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