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:
De database wel bestaat.
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:
De database wel bestaat.
De tabelstructuur wel bestaat.
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.