PostgreSQL bringt neben dem interaktiven Client psql eine ganze Familie von Kommandozeilen-Werkzeugen mit, die in der bin/-Verzeichnis der Installation liegen. Diese Referenz stellt die wichtigsten Server- und Wartungsbefehle vor.

Server steuern mit pg_ctl

pg_ctl -D /var/lib/postgresql/15/main start
pg_ctl -D /var/lib/postgresql/15/main stop -m fast
pg_ctl -D /var/lib/postgresql/15/main reload
pg_ctl -D /var/lib/postgresql/15/main status

-D zeigt auf das Datenverzeichnis (PGDATA). stop -m fast beendet sauber mit Checkpoint; -m immediate ist der harte Abbruch. reload liest postgresql.conf neu ein, ohne den Dienst zu stoppen — viele Parameter wie shared_buffers benötigen aber einen Neustart.

Datenbanken anlegen und löschen

createdb -U postgres meine_datenbank
dropdb -U postgres meine_datenbank

createdb ist die Kommandozeilen-Variante von CREATE DATABASE, dropdb entsprechend von DROP DATABASE. Beide verstehen -h (Host) und -p (Port) für entfernte Server.

Backup und Restore

pg_dump -U postgres -F c meine_datenbank > backup.dump
pg_restore -U postgres -d neue_datenbank backup.dump
pg_dumpall -U postgres > kompletter_cluster.sql
  • pg_dump sichert eine einzelne Datenbank; -F c erzeugt das komprimierte Custom-Format, -F p reines SQL. Mit -t tabelle lässt sich der Export auf einzelne Tabellen begrenzen.
  • pg_restore liest nur das Custom-Format (-F c) und erlaubt selektives Wiederherstellen (-t, --list).
  • pg_dumpall sichert den ganzen Cluster inklusive Rollen und Tablespaces als SQL-Skript.

Wartung und Diagnose

vacuumdb -U postgres -f meine_datenbank
pgbench -U postgres -i -s 10 meine_datenbank
pgbench -U postgres -c 10 -T 30 meine_datenbank
  • vacuumdb wendet VACUUM auf alle Tabellen einer Datenbank an — -f für FULL (kompaktiert Speicherplatz), -z für ANALYZE.
  • pgbench ist das eingebaute Lasttest-Werkzeug: -i initialisiert die Testdaten, dann misst -c 10 -T 30 Transaktionen pro Sekunde über 30 Sekunden.

Für den Alltag: Datenbank-Konzepte wie PostgreSQL-Datenbank und MariaDB im Vergleich, die verwandte CLI-Familie MySQL-Befehle — und für verteilte NoSQL-Systeme die Cassandra-Befehle.