Installer PostgreSQL og test backup og restore
Installer PostgreSQL på Ubuntu 26.04, begrens tilgangen, opprett en appdatabase og test en pg_dump-backup med restore.
Denne guiden installerer PostgreSQL fra Ubuntu 26.04-pakkene og lar databasen lytte lokalt. Deretter oppretter du en role for appen og tester at en logisk backup kan restores til en separat database.
Før du starter
- En Ubuntu 26.04-VPS med en vanlig bruker som har sudo
- Sikkerhetsoppsettet for VPS
- Nok ledig disk til databasen, temp-filer og minst én backup
Installer og sjekk PostgreSQL
sudo apt update
sudo apt install postgresql
sudo systemctl enable --now postgresql
sudo systemctl status postgresql --no-pager
sudo -u postgres psql -c 'SELECT version();'
sudo -u postgres psql -c 'SHOW listen_addresses;'
sudo ss -lntp | grep 5432
Hvis appen kjører på samme VPS, lar du listen_addresses stå på loopback. Ikke åpne port 5432 offentlig i UFW.
Opprett role og database
Åpne PostgreSQL som administrator:
sudo -u postgres psql
Opprett en login role og database. Sett passordet interaktivt slik at det ikke havner i shell history:
CREATE ROLE example_app LOGIN;
CREATE DATABASE example OWNER example_app;
\password example_app
\q
Legg connection string i appens beskyttede environment-fil. Test tilkoblingen og at rollen kan opprette, skrive, lese og fjerne et midlertidig objekt:
psql 'postgresql://example_app@127.0.0.1/example' --set ON_ERROR_STOP=1 --command "CREATE TEMP TABLE permission_check (value text); INSERT INTO permission_check VALUES ('ok'); TABLE permission_check; DROP TABLE permission_check;"
Klienten spør etter passordet og skal skrive ut ok. Temp-tabellen forsvinner med sessionen og endrer ikke appdata. For automatiserte jobber bruker du en .pgpass-fil med modus 600 i stedet for å skrive passordet i kommandoen.
Opprett en kjent testrecord
sudo -u postgres psql example
CREATE TABLE restore_check (id integer PRIMARY KEY, value text NOT NULL);
INSERT INTO restore_check VALUES (1, 'backup-test');
\q
Ta backup og test restore
sudo install -d -o postgres -g postgres -m 0700 /var/backups/postgresql
sudo -u postgres pg_dump --format=custom --file=/var/backups/postgresql/example.dump example
sudo -u postgres pg_restore --list /var/backups/postgresql/example.dump | head
Restore til en ny database. --no-owner gjør testen uavhengig av metadata om eieren i kildedatabasen, mens --role=example_app gir app-rollen eierskap til objektene.
sudo -u postgres createdb --owner=example_app example_restore_test
sudo -u postgres pg_restore --exit-on-error --no-owner --role=example_app --dbname=example_restore_test /var/backups/postgresql/example.dump
sudo -u postgres psql example_restore_test -c 'TABLE restore_check;'
Resultatet skal inneholde 1 | backup-test. Slett testdatabasen etterpå:
sudo -u postgres dropdb example_restore_test
Kopier backups til separat storage, krypter dem, sett retention og monitorer både backup-jobber og faste restore-tester. Exit code 0 fra pg_dump beviser ikke alene at restore fungerer.
Monitoring og vedlikehold
- Varsle om lite ledig disk før PostgreSQL eller operativsystemet går tomt.
- Monitorer databasestørrelse, connections, trege queries, feilede backups og autovacuum.
- Les release notes før minor og major upgrades.
- Test major upgrades og app-rollback i staging.
Se databaser på VPS for dimensjonering og valg mellom egen drift og en administrert database.
Kilder: PostgreSQL client authentication, pg_dump og pg_restore.