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.