Uppdateringar av InternGIS plattform
- 1 Applikationer
- 1.1 PostgreSQL 15
- 1.2 DBeaver
- 1.3 Visual Studio Code
- 1.4 Geoserver
- 2 Migrering och uppgardering av PostgreSQL
- 2.1 Installation av PostgreSQL
- 2.2 Skapa backup av befintlig databas och återläsning
- 2.2.1 Backup
- 2.2.1.1 Global backup
- 2.2.1.2 Databasbackup
- 2.2.2 Återläsning
- 2.2.1 Backup
- 3 Överföring av fildatalagring
- 4 Installera Geoserver
- 5 Test av servern
- 5.1 QGIS
- 5.2 Weave (InternGIS)
- 6 Schemalagd Databasbackup
- 7 Restore från backup
- 8 Anslut Weave server mot den nya servern
- 8.1 Konfiguration
- 8.2 Drivrutiner
Applikationer
PostgreSQL 15
Databasen PostgreSQL med PostGIS-tillägg.
DBeaver
Databashanterare för med stöd av flertalet databaser.
Ladda hem programvaran: Download | DBeaver Community
Starta installationsprogrammet och placera i D:\Programs\
Visual Studio Code
Textredigeringsprogram med stöd för flertalet format, inbyggd versionshantering etc.
Ladda hem och installera detta i D:\Programs\
Geoserver
Kartmotor
Migrering och uppgardering av PostgreSQL
2023-02-16
Inför skarp uppgradering av PortgreSQL 9.3 på NKO-P-INTGIS01 så gjordes en testinstallation av PortgreSQL 15.1 på NKO-P-IKART01
Installation av PostgreSQL
Ladda ned programvaran: PostgreSQL: Downloads.
Starta installationsprogrammet och placera i D:\program\PostgreSQL\15
Välj standardinställningar i efterföljande steg. Välj huvudlösenord och notera separat.
För val av “Locale”, välj Swedish.
Följ anvisningarna för Stack Builder för att ansluta till det nya klustret.
Välj PostGIS och JDBC. Gå vidare och följ anvisningarna för att färdigställa installationen.
Skapa backup av befintlig databas och återläsning
Från den befintliga databasklustret är det totalt två typer av backuper som kommer att göras. Den ena typen är en så kallad global backup. En global backup innehåller roller och användare som är gällande för samtliga databaser inom klustret. Den andra typen är databasbackup som innehåller den lagrade information. Vid återställning av en databasbackup är det viktigt att roller och användare som är refererade finns tillgängliga i den globala databasen. Det är således viktigt att den globala backupen läses in innan databasbackuperna.
Backup
Global backup
Denna typ av backup görs på det befintliga databasklustret.
Gå över till NKO-P-INTGIS01 och öppna en kommandoprompt.
Skapa en backup.
D:\Sweco\Apps\OpenGeo\pgsql\bin>pg_dumpall -h localhost -U nacka -g -f D:\program\temp\globals.sql
Förklaring av parametrar: PostgreSQL: Documentation: 15: pg_dumpall
Databasbackup
Denna typ av backup kan enklast utföras från den nya servern och databashanteraren DBeaver. DBeaver tillåter att göra backup på en annan server och placera direkt i en lokal katalog.
Från Database Navigator i DBeaver, expandera nko-p-intgis01 > Databases
Välj databas för backup genom att markera den.
Högerklicka och välj Tools > Backup
Under “Objects”, välj “All” för att markera alla objekt. Tryck på nästa för att komma vidare.
Kontrollera att katalogen för “Output folder“ existerar och att det finns tillräckligt med utrymme för en backup
Välj start för att påbörja backupen.
Repetera steg 2-5 för varje databas.
Återläsning
Den globala backupen består av en textfil med SQL och läses in via kommando eller i DBeaver. Databasbackuperna är binära och läses in via pg_restore eller i DBeaver.
Var noga med att det nya databasklustret är aktivt i DBeaver och inte den kopplingen mot NKO-P-INTGIS01. Återläsning mot fel kluster kan resultera i korrupt data.
Global backup
Från DBeaver, öppna
globals.sql
, som skapades i tidigare steg.Kör skriptet
Global backup kan återläsas från kommandoprompt:
D:\program\PostgreSQL\15\bin\psql -h localhost -U postgres < D:\temp\globals.sql
Databasbackup
Från Database Navigator i DBeaver, expandera nko-p-intgisb01 > Databases
Högerklicka på Databases > Create > och välj Database
Skriv in namnet på databasen och välj OK för att skapa databasen
Om databasen ska innehålla Geografiska objekt måste Postgis aktiveras innan återläsning
Välj menyvalet SQL Editor > New SQL Script
Se till att den nya databasen är aktiv och skriv in
CREATE EXTENSION postgis;
Exekvera skriptet
Högerklicka på den nya databasen > Tools > Restore
Välj filen för databasbackupen under Input > Backup file
Välj start för att påbörja återläsningen.
Repetera steg 2-7 för varje databas
Justera möjlighet till inloggning med gamla användare med MD5 kryptering
Redigera filen pg_hba.conf
som ligger under PostgreSQL/15/data . 15 är her den aktuella versionen
Kopiera rad 1 och kommentera bort denna (#). Redigera rad 2 som bilden nedan
#host all all ::1/128 md5
host all all all md5
Överföring av fildatalagring
Skapa katalogen d:/data
Navigera till nuvarande Interngis server genom //NKO-P-INTGIS01. Högerklicka DATA katalogen och välj kopiera.
Navigera till d:, högerklicka på data katalogen och välj klistra in. Det är en katalog med stora mängder data så det kommer ta en bra stund.
Högerklicka igen och välj egenskaper och dela (share) katalogen som NKO-P-INTGISB1/DATA
Kontakta IT personal för att ge korrekta rättigheter för denna delning. Under den här installationen ges alla rättigheter
För Geoserver behövs bara läsrättigheter
För GIS ingenjörer som lägger in data här behövs skrivrättigheter
Kontrollera till slut att all data har kommit över
Installera Geoserver
Eftersom versionen av Geoserever är ganska ny kan vi bara kopiera den nuvarande till nya servern.
Öppna till \\NKO-P-INTGIS och navigera till d:\program. Markera katalogerna jre1.8.0_25 och geoserver_2_20. Högerklicka och klicka kopiera. Navigera till d:\Programs i den nya servern, högerklicka och klicka klistra in
När servern är är kopierad måste vi ändra sökvägar i två filer startup.bat och shutdown.bat. Båda filerna ligger i katalogen bin under Geoserver. Det är tre rader där sökvägen ska ändras så att program ändras till Programs
Nu är servern klar att starta men alla sökvägar hänvisas till databaser och fildata från den gamla internGIS. Därför måste det göras ett antal förändringar:
Använd Visual Code och öppna en file folder (file/open_folder) och börja på D:\Programs\geoserver-2.20\data_dir. Kör sedan edit/find in files och sök på NKO-P-INTGIS01.
Nu listas de rader som vi ska ändra referens från NKO-P-INTGIS01 till NKO-P-INTGISB1. Var noga med att kontrollera raderna. Dels ska det vara de som refererar till Postgres <entry key="host">nko-p-intgisb1</entry>
och dels de som refererar till DATA katalogen <url>file://nko-p-INTGISB1/...
Kör förändringarna:
Sök även på localhost (databaskoppling på samma dator)och kör samma förändring.
Sök även på “Apps/Data“. Vissa SLD-filer har absoluta sökvägar till bildfiler. Ta bort hela sökvägen utom filnamnet (filerna finns i samma katalog).
Starta med bin/startup.bat och testa i webbläsaren med http://localhost/geoserver. Logga in med det tillfälliga användaren admin/geoserver. Nu ska det mesta fungera. Ta ner servern genom bin/shutdown.bat.
Slutligen så konfigureras Geoserver för att kunna startas och stoppas som en Service
Installera Geoserver som service
Öppna Kommandoprompten som administratör
Från startmenyn, skriv “cmd”
Högerklicka på “Command Prompt“ och välj “Run as Administrator”
Skriv “D:” för att byta disk.
Kör D:\Programs\geoserver_2_20\service\bat\installService.bat för att installera tjänsten
Sök efter och starta “Services” från startmenyn
Markera tjänsten “Geoserver-2.20”och välj “Start the service” för att starta tjänsten
Test av servern
QGIS
QGIS installeras på servern. Med QGIS kan vi ansluta både data i Postges och tjänster från Geoserver. Lägg till anslutning till Postgres för databasen Nacka. Samtliga lager blir då tillgängliga. Anslut sedan varje workspace från Geoserver. När de väl är anslutna så finns enkelt tillgängliga lager-utforkaren och kan enkelt läggas till kartan genom ett dubbeklick. På så vis kan lager efter lager testas.
Weave (InternGIS)
Weave testserver kopieras från NKO-P-IKART01 till NKO-P-IKARTB1. Konfigurationsfilerna datasource.xml och mapengines.xml redigeras så att datakälla respektive URL ändras från NKO-P-IKART01 till NKO-P-IKARTB1. Servern startas upp med startup.bat i Weave-test rotkatalog.
I webbläsaren anropas http:8080/weave . Klienten ska nu bete sig och se ut precis som InternGIS. Är det något som inte stämmer så är det Geoserver eller postgres som förmodligen löser problemet.
Schemalagd Databasbackup
Backup av databasen bör göras dagligen. Ett skript med rutin för backup och kataloghantering sätts upp samt en schemaläggning.
Backupskript
Backupskriptet har i uppgift att:
Skapa global backup
Skapa backup för specificerade databaser
Katalogisera backuper efter datum
Rensa äldre backuper enligt specifikation (exempelvis, spara senaste 7 dagar, varje vecka senaste månaden, varje månad, årligt. Rensa övriga)
Logga händelser
Larma vid avvikelser
Rotkatalogen för Databasbackuper är D:\Backup\PostgreSQL
. backup.cmd
startar backuprutinen. Skripten inklusive inställningar ligger i underkatalogen script
Säkerställ att inställningarna är korrekta innan skriptet startas
Konfigurera backupskript
Backupskriptet ställs in med parametrar i filen D:\Backup\PostgreSQL\script\ExecuteBackup.ps1
Här ställs grundläggande parametrar in som användare, port, backupkatalog, vilka databaser som ska ingå i backuprutinen samt hur rensning av tidigare backuper ska hanteras. Varje parameter i filen har instruktioner för dess användning.
Kör backup.cmd
för att säkerställa att rutinen ger förväntat resultat.
Schemalägga backup
När skriptet är redo för driftsättning schemaläggs skriptet i Windows Task Scheduler
PostgreSQL kräver lösenord vid backup. För schemalagda backuper måste pgpass.conf
sättas upp. För Systemet är katalogen C:\Windows\System32\config\systemprofile\AppData\Roaming\postgresql
1. Öppna Startmenyn > Öppna Task Scheduler
2. Öppna meny Action och välj “Create Task”
3. Skriv lämpligt namn. Som standard är det den aktuella användaren som är den som står som användare när en händelse körs. För backupskript är det lämpligare att det är systemet som kör.
Under Security Options, välj “Change User or Group“. Skriv in “system“ och välj sedan “Check Names“. Välj OK för att komma tillbaka.
4. Gå till “Trigger“-tabben och välj “New“ för att skapa en ny schemaläggning. Under “Begin the task” väljer du “On a Schedule“ och ange därefter tidsschema. I nedan exempel är dagligt schema varje dag 23:00. Välj OK för att bekräfta.
5. Gå vidare till Actions och välj “New“. Fyll i sökväg till backup.cmd och välj OK för att bekräfta.
6. Under Settings, sätt eventuellt “Stop the if it runs longer than“ till kortare tid. Exempelvis 2 timmar
Välj OK för att spara schemaläggningen.
7. Schemaläggningen har lagts till. Välj “Task Scheduler Library“ till vänster för att lista alla schemaläggningar. Där visas bl.a. Namn, Status, Senast körning och nästa shemalagda körning.
Det går även att starta en körning manuellt genom att markera den och sedan välja Action > Run, vilket kan vara bra för att bekräfta att rutinen körs som planerat.
Restore från backup
Här är några exempel att återskapa databaser, schema och tabeller från tidigare backup.
Återskapa en hel databas
Använda DBeaver för att återskapa en databas.
DBeaver finns installerad i InternGIS servern och är ett utmärkt verktyg för att hantera databaser och inte minst Postgres.
Skapa en tillfällig databas för att återskapa mot. I bilden nedan kallar vi den för “temp”
Högerklicka och gör den tillfälligt “set as default”
Öppna en SQL editor och skriv CREATE EXTENSION postgis;
Högerklicka på databasen och välj Tools/Restore. Välj den backupfil som ska återskapas
Vänta till uppgiften är slutförd
Använda terminal (cmd) för att återskapa en databas.
Börja med att använda filhanteraren för att navigera till katalogen med backup-filen t.ex. D:\Backup\PostgreSQL\backups\2023-04-02T23_00
Skriv cmd i filhanteraren för att få upp en terminal och börja med att starta psql, skapa en databas “temp1” och lägga till PostGIS extension. Avsluta psql med \q
D:\Backup\PostgreSQL\backups\2023-04-02T23_00>D:\Programs\PostgreSQL\15\bin\psql -U postgres Password for user postgres: psql (15.2) postgres=# create database temp1; CREATE DATABASE postgres=# \connect temp1; You are now connected to database "temp1" as user "postgres". temp1=# create extension postgis; CREATE EXTENSION temp1-# \q D:\Backup\PostgreSQL\backups\2023-04-02T23_00>
Använd pg_restore för att återkapa databasen
D:\Backup\PostgreSQL\backups\2023-04-02T23_00>D:\Programs\PostgreSQL\15\bin\pg_restore.exe -U postgres --dbname temp1 --verbose nacka.backup pg_restore: connecting to database for restore Password:
Vänta till uppgiften är slutförd
Återställ anslutning och byt namn på databaser
Se till att alla anslutningar till original-databasen (t.ex. nacka) är bortkopplade (Geoserver, InternGIS, FME, mfl.) SQL-frågan nedan visar aktiva anslutningar för databasen nacka
SELECT * FROM pg_stat_activity WHERE datname = 'nacka' and state = 'active';
Byt namn på original-databasen (t.ex. nacka_old)
Byt sen namn på den temporära databasen som ska ersätta original-databasen t.ex. temp till nacka
Starta upp de program som databasen servar och testa att allt fungerar som det ska.
Nu kan de temporära databaserna tas bort
Återskapa ett schema eller en tabell
Att återskapa ett schema eller enstaka tabeller kan medföra fel om det finns beroenden med andra scheman eller tabeller i samma databas.
Det kan vara lämpligt att använda en tillfällig databas för att vara säker att det fungerar. Annars återskapar vi direkt i produktions databasen nacka.
Se också till att det ta bort aktiva anslutningar så att inte schema eller tabeller är låsta
Återskapa ett schema
Använd DBeaver för att gå in i databasen nacka och expandera navigerings trädet med scheman. Byt namn på det schema som ska bytas ut. Skapa sedan ett nytt schema med det ursprungliga namnet.
Alternativt kan det göras med SQL i DBeaver eller med PSQL
ALTER SCHEMA fritid_kultur RENAME TO fritid_kultur_old; CREATE SCHEMA fritid_kultur;
Använda DBeaver
Högerklicka databasens namn och välj Tools/Restore
Lägg till backup-fil och optionen --schema=fritid_kultur som exempel
Starta körningen
Använda kommando
D:\Programs\PostgreSQL\15\bin\pg_restore.exe -U postgres --dbname temp1 --schema fritid_kultur --verbose nacka.backup
Kontrollera att data är korrekt. Ta bort det temporära schemat. Anslut klienterna igen
Återskapa enstaka tabeller
Använd DBeaver för att gå in i databasen nacka och expandera navigerings trädet med scheman och tabbellerna. Byt namn på det/de tabeller som ska bytas ut.
Alternativt kan det göras med SQL i DBeaver eller med PSQL
ALTER TABLE miljo.djurskydd RENAME TO djurskydd_old;
Använda DBeaver
Högerklicka databasens namn och välj Tools/Restore
Lägg till optionen --schema miljo --table djurskydd
Starta återställningen
Använda kommando
D:\Programs\PostgreSQL\15\bin\pg_restore.exe -U postgres --dbname temp1 --schema miljo --table djurskydd --verbose nacka.backup
Anslut Weave server mot den nya servern
Konfiguration
Ändringarna är att byta server-namn från NKO-P-INTGIS01 till NKO-P-INTGISB1. Detta görs i tre filer
Datasource.xml som innehåller databaskopplingar
Mapengine80.xml som innehåller kopplingar mot kartjänster där de flesta är mot Geoserver
Weave.xml ligger under katalogen jetty-base/webbapps och innehåller databas-koppling mot anavändardatabasen Weave/useradmin. (servern måste startas om när denna ändras)
Nu kan Postgres och Geoserver stoppas i NKO-P-INTGIS01 och allt ska fungera mot den nya servern
Drivrutiner
Drivrutin för PostgreSQL uppdateras. Det görs på två platser
Under ../weave.x.x/platform/workspace/jdbc byts befintlig drivrutin ut. Denna påverkar all Weave-konfiguration
Under ./weave.x.x/jettylib/ext byts uppgraderas också drivrutinen. Detta därför att Jetty behöver tillgång till användare och statistik databasen innan Weave är inläst och konfigurerad