Database: Opslaglocatie wijzigen (PostgreSQL)
Gevaar
Het wijzigen van de dataopslag breng het gevaar van datacorruptie met zich mee. Voer onderstaande stappen alleen uit als je begrijpt wat je doet!
Gezien de SD-kaart gevoelig is voor slijtage en corruptie, kun je ervoor kiezen om de database op een andere disk of USB-stick te draaien. Om dit te realiseren zul je de applicatie en database moeten stoppen, de databaseconfiguratie aanpassen, dataopslag verplaatsen en alles weer opstarten.
Zorg ervoor dat het OS toegang heeft tot de nieuwe locatie en maak eerst een back-up!
In onderstaand voorbeeld verplaatsen we de dataopslag van /var/lib/postgresql/
naar /data/postgresql/
(wat bijvoorbeeld op een externe disk zou kunnen zijn).
Notitie
N.B.: “9.5” in onderstaand voorbeeld is slechts het versienummer van de database en kan afwijken van je eigen situatie. Je kunt echter gewoon dezelfde stappen uitvoeren.
Voer de onderstaande commando’s uit:
Stop DSMR-reader:
sudo supervisorctl stop all
Stop database:
sudo systemctl stop postgresql
Controleer dat de database gestopt is, je zou geen processen meer moeten zien van
postgresql
met:sudo ps faux | grep postgres
Zorg ervoor dat de nieuwe locatie bestaat:
sudo mkdir /data/postgresql/
Verplaats nu de gehele data-map van de database:
sudo mv /var/lib/postgresql/9.5/ /data/postgresql/9.5/
Zorg ervoor dat de
postgres
gebruiker toegang heeft tot de nieuwe locatie (en eventuele bovenliggende mappen in het pad):sudo chown -R postgres:postgres /data/
Open de databaseconfiguratie met
sudo vi /etc/postgresql/9.5/main/postgresql.conf
en vind de volgende regel:data_directory = '/var/lib/postgresql/9.5/main'
Wijzig het naar de nieuwe locatie:
data_directory = '/data/postgresql/9.5/main'
Sla het bestand op en start de database weer:
sudo systemctl start postgresql
Controleer of de database weer draait, je zou nu meerdere processen moeten zien:
sudo ps faux | grep postgres
Wil de database niet starten? Bekijk dan de logs in
/var/log/postgresql/
voor hints.Start DSMR-reader weer met:
sudo supervisorctl start all
Alles zou weer moeten werken zoals voorheen, met de data voortaan op een andere locatie.