/
Uppdateringar av InternGIS plattform

Uppdateringar av InternGIS plattform

Applikationer

PostgreSQL 15

Databasen PostgreSQL med PostGIS-tillägg.

DBeaver

Databashanterare för med stöd av flertalet databaser.

  1. Ladda hem programvaran: Download | DBeaver Community

  2. Starta installationsprogrammet och placera i D:\Programs\

Visual Studio Code

Textredigeringsprogram med stöd för flertalet format, inbyggd versionshantering etc.

  1. 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

  1. Ladda ned programvaran: PostgreSQL: Downloads.

  2. Starta installationsprogrammet och placera i D:\program\PostgreSQL\15

  3. Välj standardinställningar i efterföljande steg. Välj huvudlösenord och notera separat.

  4. För val av “Locale”, välj Swedish.

  5. Följ anvisningarna för Stack Builder för att ansluta till det nya klustret.

  6. 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.

  1. Gå över till NKO-P-INTGIS01 och öppna en kommandoprompt.

  2. Skapa en backup.

D:\Sweco\Apps\OpenGeo\pgsql\bin>pg_dumpall -h localhost -U nacka -g -f D:\program\temp\globals.sql

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.

  1. Från Database Navigator i DBeaver, expandera nko-p-intgis01 > Databases

  2. Välj databas för backup genom att markera den.

  3. Högerklicka och välj Tools > Backup

  4. Under “Objects”, välj “All” för att markera alla objekt. Tryck på nästa för att komma vidare.

  5. Kontrollera att katalogen för “Output folder“ existerar och att det finns tillräckligt med utrymme för en backup

  6. Välj start för att påbörja backupen.

  7. 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

  1. Från DBeaver, öppna globals.sql, som skapades i tidigare steg.

  2. 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

  1. Från Database Navigator i DBeaver, expandera nko-p-intgisb01 > Databases

  2. Högerklicka på Databases > Create > och välj Database

  3. Skriv in namnet på databasen och välj OK för att skapa databasen

  4. Om databasen ska innehålla Geografiska objekt måste Postgis aktiveras innan återläsning

    1. Välj menyvalet SQL Editor > New SQL Script

    2. Se till att den nya databasen är aktiv och skriv in

      • CREATE EXTENSION postgis;

    3. Exekvera skriptet

  5. Högerklicka på den nya databasen > Tools > Restore

  6. Välj filen för databasbackupen under Input > Backup file

  7. Välj start för att påbörja återläsningen.

  8. 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

  1. Öppna Kommandoprompten som administratör

    1. Från startmenyn, skriv “cmd”

    2. Högerklicka på “Command Prompt“ och välj “Run as Administrator”

  2. Skriv “D:” för att byta disk.

  3. Kör D:\Programs\geoserver_2_20\service\bat\installService.bat för att installera tjänsten

  4. Sök efter och starta “Services” från startmenyn

  5. 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:

  1. Skapa global backup

  2. Skapa backup för specificerade databaser

  3. Katalogisera backuper efter datum

  4. Rensa äldre backuper enligt specifikation (exempelvis, spara senaste 7 dagar, varje vecka senaste månaden, varje månad, årligt. Rensa övriga)

  5. Logga händelser

  6. 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

Mer info om pgpass.conf

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.

  1. Skapa en tillfällig databas för att återskapa mot. I bilden nedan kallar vi den för “temp”

  2. Högerklicka och gör den tillfälligt “set as default”

  3. Öppna en SQL editor och skriv CREATE EXTENSION postgis;

  4. Högerklicka på databasen och välj Tools/Restore. Välj den backupfil som ska återskapas

  5. Vänta till uppgiften är slutförd

Använda terminal (cmd) för att återskapa en databas.

  1. 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

  2. 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

  3. 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>
  4. Använd pg_restore för att återkapa databasen

  5. 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:
  6. Vänta till uppgiften är slutförd

Återställ anslutning och byt namn på databaser

  1. 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

  2. SELECT * FROM pg_stat_activity WHERE datname = 'nacka' and state = 'active';
  3. Byt namn på original-databasen (t.ex. nacka_old)

  4. Byt sen namn på den temporära databasen som ska ersätta original-databasen t.ex. temp till nacka

  5. Starta upp de program som databasen servar och testa att allt fungerar som det ska.

  6. 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

  1. 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.

    1. Alternativt kan det göras med SQL i DBeaver eller med PSQL

    2. ALTER SCHEMA fritid_kultur RENAME TO fritid_kultur_old; CREATE SCHEMA fritid_kultur;
  2. Använda DBeaver

    1. Högerklicka databasens namn och välj Tools/Restore

    2. Lägg till backup-fil och optionen --schema=fritid_kultur som exempel

    3. Starta körningen

  3. Använda kommando

    1. D:\Programs\PostgreSQL\15\bin\pg_restore.exe -U postgres --dbname temp1 --schema fritid_kultur --verbose nacka.backup
  4. Kontrollera att data är korrekt. Ta bort det temporära schemat. Anslut klienterna igen

Återskapa enstaka tabeller

  1. 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.

    1. Alternativt kan det göras med SQL i DBeaver eller med PSQL

    2. ALTER TABLE miljo.djurskydd RENAME TO djurskydd_old;
  2. Använda DBeaver

    1. Högerklicka databasens namn och välj Tools/Restore

    2. Lägg till optionen --schema miljo --table djurskydd

    3. Starta återställningen

  3. Använda kommando

    1. 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

  1. Under ../weave.x.x/platform/workspace/jdbc byts befintlig drivrutin ut. Denna påverkar all Weave-konfiguration

  2. 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

Related content