Databasadministration

Copy database from production to test

This page describes how to update test.ikartan.se with data from ikartan.se, using Dbeaver installed in your local computer. You need to have administrators permission on test.ikartan.se , the Seco VPN client running on your local computer and a connection ready in Dbeaver

  1. Get the latest backup from lab2.ikartab.se (target of the daily auto backup) to local computer

    1. #replace <username> with your usernamne ssh -p 13738 <username>@lab2.ikartan.se cd /opt/backups/database ls exit #Now, you can select the backup to use #copy the file scp -P 13738 <username>@lab2.ikartan.se:/opt/backups/database/2023-10-10_01-00-05-sive.backup C:\opt\Ikartan
  2. Start Dbeaver and read in the backup file into a database.

    1. Start Dbeaver

    2. Connect to test.ikartan.se

    3. Right click on “Databases” and select new database

    4. Enter a name e.g. siv_new (must be a name that not exist)

    5. Right click on the new database e.g. siv_new and select tools/restore

    6. Browse for the backup e.g. C:\opt\Ikartan\2023-10-10_01-00-05-sive.backup

    7. Press Start button and the restore begins

  3. Log in to test.ikartan.se and stop Weave and Geoserver to release all connection to the present database we will replace

    1. #Seco clieent must be running ssh -i C:/Users/sven-/.ssh/id_ed25519 b30502@10.202.8.12 Enter passphrase for key 'C:/Users/sven-/.ssh/id_ed25519':<your locla password for the ssh file> b30502@viamap-ikartan-test02:~$ #stop weave service sudo systemctl stop weave.service #stop Geoserver sudo systemctl stop geoserver.service

       

  4. Use Dbeaver to rename databases

    -- Problem of database that is still connected! Try this-. SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
    1. Right click on the present database e.g. sive and select rename

    2. Enter another name e.g. sive_23-10-01

    3. Click Persist when the SQL command is shown

    4. Now right click on the newly restored database e.g. siv_new and select rename

    5. Rename this database to the same name as as the previous database

  5. Start Geoserver and Weave

 

Create a connection with Dbeaver to test.ikartan.se using the Seco VPN client running

 

Uppgradering av PostgreSQL

Gäller ikartan installerad i Ubuntu server

se även motsvarande dokumentation för Nacka https://viamap.atlassian.net/wiki/spaces/NACKA/pages/2991849473/Uppdateringar+av+InternGIS+plattform#Migrering-och-uppgardering-av-PostgreSQL

Det finns två vägar att uppgradera PostgeSQL

  1. Genom en ny installation där alla databaser från den gamla installationen backas upp och sen läses in i den nya. Passar bäst om uppgraderingen sker över många versioner.

  2. Genom att använda Postgres Upgrade verktyget som mer automatiserat uppgraderar till en ny version

Uppgradering genom ny installation med backup

 

Global backup sparar hela instansens inställningar. Den är speciellt viktig för att få med användare (rollr) med dess behörighet och lösenord. Global backup bör göras som med kommando rad.

Den här dokumentationen är skriven i samband med att lab2 servern skall uppdatera version av PostgreSQL så exempel och beskrivning är utformade för detta

För all SQL använd Dbeaver

Gör backup på befintliga data

Anslut mot databasen med Dbeaver. Kontrollera versionen av Postgres samt vilka databaser den innehåller

Listan med databaser syns bäst i Dbeaver navigations-träd

Skapa gärna en ny mapp t.ex. lab2_postgres_full_backup eftersom det är många backupers som ska tas.

Fortsätt sedan att ta en backup tools>Backup för varje databas. Se till att kryssa i alla scheman i databasen. (Databaser som uppenbarligen är temporär eller en äldre kopia skippas)

Alternativ 2, backa upp med kommandon pg_dump och pg_dumpall

Eller alternativ 3 backa upp allt innehåll med pg_dump_all.

Kontrollera instanser av PostgesSQL

I katalogen /etc/postgresql visas alla nuvarande installationer. Under varje instans finns katalogen main och under den flera konfigurationsfiler

Filen postgresql.conf innehåller bl.a. konfiguration för anslutning och anges vilken port dom används. Varje instans av PostgreSQL måste ha en unik port för att vara unik. Default port är 5432 (Det som den aktuella versionen 9.6 har)

Avinstallera eventuella gamla instanser

För att avinstallera en instans av PostgreSQL används kommandot apt-get --purge remove postgresql-12. I detta fall instans 12

Installera PostgreSQL och PosGIS

Sensate versionen av PostgreSQL är 16 och PostGIS är 3

Kontrollera att databasen är igång

När det finns flera instanser av PostgreSQL så startas alla med sudo systemctl start postgresql.service. Det går bra att starta enbart en instans med sudo systemctl start postgresql@16-main. Nedan exempel visar status för en given instans

Redigera konfigurations-filerna pg_hba.conf och postgresql.conf. Båda filerna finns under /etc/postgresql/16/main respektive den gamla databasen /etc/postgresql/9.6/main. Visual code kan startas i sudo läge med.

pg_hba.conf innehåller information om hur databasen för anslutas. I princip så ska den nya instansen se ut som den gamla. Nedan visar hur den ska se ut

För postgresql.conf så ändra vi portnummer för båda gamla och ny instsansen. Vi sätter nya instansen till port = 5432 och den gamla till port=5433. Nedan visar ett utdrag ur filen

Starta om databaserna

Skapa och återställ databaser med dess innehåll

Nu kan Dbeaver även används. Justera anslutningarna så det är åtkomst till den nya instansen.

Återställ globala den globala backupen

Det är enklast att kopiera av inställningarna från backupfilen och kör SQL script enligt nedan

Återställ övriga databaser

Varje databas läggs tillbaka från sin backup som togs innan installationen eller en direkt från produktionsmiljön där nattliga backuper sparas i Lab2.

För varje ny databas som ska återställas så skapas den först:

Om databasen inte finns som en daglig backup så laddas den med Dbeaver. Högerklicka på databsen (t.ex. bal) och välj tool > restore. Välj rätt backup-fil och kör

De databaser som har daglig backup så kan pg_restore användas från lab2 servern

Trimma databaser för prestanda

Nu är det dags att testa klienterna Geoserver och Weave

Under testen upptäcks att att användren ikartarw inte har fått sitt ursprungliga lösenord. Detta beror på att den globala backupen inte tagit med lösenord. Åtgärden är :