Database: Back-up terugzetten (PostgreSQL)

Of je daadwerkelijk een backup kan importeren hangt af van de huidige staat van de database. Zie de pre-checks hieronder hoe je de staat kan achterhalen, voordat je probeert te importeren.

Pre-checks

Hint

Hoe controleer ik of de database bestaat?

Voer uit:

sudo -u postgres psql --list | grep dsmrreader

Indien de database bestaat, dan zou je ongeveer deze output moeten zien:

dsmrreader | dsmrreader | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 |

Hint

Hoe controleer ik of de database al een tabelstructuur heeft?

Voer uit:

sudo -u postgres psql -d dsmrreader -c '\dt'

Indien de tabelstructuur bestaat, zou je een lange lijst van tabelnamen in de output moeten zien.


Hint

Hoe controleer ik of de database al bestaande uur-/dagstatistieken heeft?

Dit is alleen zinnig om te doen als de database bestaat en al een tabelstructuur heeft.

Voer uit:

sudo -u postgres psql -d dsmrreader -c 'select count(id) as hour_count from dsmr_stats_hourstatistics';
sudo -u postgres psql -d dsmrreader -c 'select count(id) as day_count from dsmr_stats_daystatistics';

Indien hour_count of day_count (of beiden) hoger dan nul zijn, dan zijn er uur- en/of dagstatistieken opgeslagen:

 hour_count
------------
      45766

 day_count
-----------
      1922

Volledige backup importeren

Een volledige backup bevat alle gegevens met bijbehorende tabelstructuur en heet meestal iets als: dsmrreader-postgresql-backup-Friday.sql.gz

Je kunt een volledige backup alleen importeren wanneer:

    1. De database wel bestaat.

    1. De database geen tabelstructuur heeft (en dus ook geen gegevens).

Hint

Als de database nog niet bestaat, maak deze dan aan:

sudo -u postgres createdb -O dsmrreader dsmrreader

Gevaar

Als het al een tabelstructuur heeft, doorgaans als je net een herinstallatie hebt gedaan, verwijder deze dan. Dit verwijdert ook alle gegevens in de database!

Voer uit:

sudo supervisorctl stop all

sudo -u postgres dropdb dsmrreader
sudo -u postgres createdb -O dsmrreader dsmrreader

Je kunt nu de volledige backup importeren.

Voer uit:

sudo supervisorctl stop all

# For example with a backup "dsmrreader-postgresql-backup-Friday.sql.gz" in "/home/dsmr/dsmr-reader/backups/"
sudo zcat /home/dsmr/dsmr-reader/backups/dsmrreader-postgresql-backup-Friday.sql.gz | sudo -u postgres psql dsmrreader

sudo su - dsmr
./deploy.sh

logout
sudo supervisorctl start all

Houd een oogje in het zeil of je bij bovenstaande stappen fouten ziet.


Gedeeltelijke backup importeren

Een gedeeltelijke backup bevat een subset aan gegevens en heet meestal iets als: dsmrreader-postgresql-partial-backup-2021-03-22.sql.gz

Je kunt een gedeeltelijke backup alleen importeren wanneer:

    1. De database wel bestaat.

    1. De tabelstructuur wel bestaat.

    1. De database geen bestaande uur-/dagstatistieken bevat.

Hint

Als de database nog niet bestaat, maak deze dan aan.

Voer uit:

sudo -u postgres createdb -O dsmrreader dsmrreader

Hint

Als de database nog geen tabelstructuur heeft, probeer deze dan aan te maken. Dit doet de aanname dat je DSMR-reader al weer geherinstalleerd hebt. Zo niet, voltooi eerst de herinstallatie en kom direct daarna hier weer terug.

Voer uit:

sudo su - dsmr
./deploy.sh
logout

Gevaar

Indien de database al bestaande uur-/dagstatistieken heeft wil je waarschijnlijk geen import doen, maar in plaats daarvan een issue aanmaken op Github voor ondersteuning.

Je kunt nu de gedeeltelijke backup importeren.

Voer uit:

# For example with a backup "dsmrreader-postgresql-partial-backup-2021-03-22.sql.gz" in "/home/dsmr/dsmr-reader/backups/"
sudo zcat /home/dsmr/dsmr-reader/backups/dsmrreader-postgresql-partial-backup-2021-03-22.sql.gz | sudo -u postgres psql dsmrreader

Houd een oogje in het zeil of je bij bovenstaande stappen fouten ziet.