ServBay macOS Lokale Ontwikkelomgeving PostgreSQL Probleemoplossingsgids
PostgreSQL is een krachtig en veelzijdig open-source object-relationeel databasesysteem, dat breed wordt ingezet voor uiteenlopende webapplicaties en datatoepassingen. Als een van de kerncomponenten van de ServBay lokale ontwikkelomgeving functioneert PostgreSQL doorgaans stabiel. Toch kan het voorkomen dat het PostgreSQL-pakket niet start, verbindingen niet slagen, prestaties afnemen of onverwachte datafouten optreden.
Dit document biedt ontwikkelaars die met ServBay werken een gedetailleerde probleemoplossingsgids voor PostgreSQL. We behandelen veelvoorkomende problemen, diagnose-stappen en bijbehorende oplossingen binnen de ServBay-omgeving. Let op: ServBay draait op macOS en integreert verschillende PostgreSQL-versies, dus bij sommige diagnose- of herstelacties kan het nodig zijn specifieke versienummers, configuratiebestanden of datamappaden te hanteren.
Overzicht
Deze handleiding is gericht op technische problemen die zich kunnen voordoen bij het beheren en gebruiken van het PostgreSQL-pakket in ServBay. We starten met veelvoorkomende start- en verbindingsproblemen en behandelen vervolgens gecompliceerdere scenario’s, zoals prestatieproblemen, onverwachte crashes en back-up/herstel. Door de in deze handleiding beschreven stappen te volgen, kun je systematisch de meeste PostgreSQL-gerelateerde problemen diagnosticeren en oplossen.
Vereisten
Voordat je begint met probleemoplossing, zorg dat je aan de volgende voorwaarden voldoet:
- ServBay is succesvol geïnstalleerd en actief.
- Het specifieke PostgreSQL-pakket dat je wilt onderzoeken is via ServBay geïnstalleerd.
- Je hebt basiskennis van het werken met de macOS command line.
- Je kent het pad naar de configuratie en datamap van je PostgreSQL-pakket (meestal
/Applications/ServBay/db/postgresql/<versie>
). - Je weet de naam van de database, gebruikersnaam en wachtwoord waarmee je wilt verbinden.
Veelvoorkomende problemen en oplossingen
1. Het PostgreSQL-pakket start niet
Wanneer je via ServBay probeert PostgreSQL te starten, maar de status blijft “gestopt” of geeft “opstarten mislukt” aan, kan dat meerdere oorzaken hebben.
Mogelijke oorzaken
- Fouten in het configuratiebestand of tegenstrijdige instellingen.
- De door PostgreSQL gebruikte poort (standaard 5432) is al in gebruik door een ander proces op het systeem.
- ServBay of PostgreSQL-data/configuratiebestanden missen de juiste lees-/schrijfrechten.
- De PostgreSQL-datamap is corrupt.
- Onderliggende issues binnen het ServBay-beheer.
Oplossingen
Controleer de ServBay GUI-status en logbestanden: Open de ServBay-applicatie en controleer de status van het PostgreSQL-pakket. Probeer eventueel handmatig op te starten via de GUI. Check de hoofdlog van ServBay of het specifieke log voor PostgreSQL (indien beschikbaar in de GUI). Logbestanden zijn doorgaans te vinden in
/Applications/ServBay/logs/
. Bekijk specifiek het bestandpostgresql/<version>/postgresql-<version>.log
voor uitgebreide foutmeldingen bij het opstarten.Controleer de configuratiebestanden: Het belangrijkste configuratiebestand van PostgreSQL is
postgresql.conf
. Zorg dat de syntax klopt en er geen typefouten of ongeldige instellingen zijn. Voor het geïntegreerde PostgreSQL 13-pakket is het gebruikelijke pad:bash/Applications/ServBay/db/postgresql/13/postgresql.conf
1Een tweede belangrijk bestand is
pg_hba.conf
, dat client-authenticatie regelt. Een fout hierin veroorzaakt vaak verbindingsproblemen en kan soms het opstarten beïnvloeden (bijv. als interne checks vereist zijn). Dit bestand staat doorgaans in dezelfde map alspostgresql.conf
.PostgreSQL beschikt niet over een commandotool die direct de hele configuratie valideert, maar logbestanden geven foutmeldingen bij het laden van de configuratie. Indien je verbinding hebt met een draaiende database (al is het een andere versie of tijdelijke instantie), kun je via
psql
instellingen inspecteren. Maar het belangrijkste in geval van opstartproblemen is het grondig doornemen van het logbestand.Voor
pg_hba.conf
kun je na het verbinden met de database de regels bekijken via:sql-- Vereist een bestaande databaseverbinding SELECT * FROM pg_hba_file_rules();
1
2Om bij geladen instellingen eventuele fouten te zien kun je:
sql-- Vereist een bestaande databaseverbinding SELECT sourcefile, name, sourceline, error FROM pg_file_settings WHERE error IS NOT null;
1
2Let op: Deze SQL-commando's werken alleen als PostgreSQL al succesvol draait. Als het pakket niet kan starten, is het analyseren van de logbestanden veruit het belangrijkste.
Controleer poortgebruik: Standaard luistert PostgreSQL op poort 5432. Als deze poort wordt gebruikt door een ander proces, kan PostgreSQL niet opstarten. Gebruik het commando
lsof
om het poortgebruik te bekijken:bashlsof -i :5432
1Geeft het commando een resultaat, dan gebruikt een ander proces de poort. Bepaal via het proces-ID (PID) of je dat proces kunt stoppen, of verander de poortinstelling in
postgresql.conf
(parameterport
) en herstart of herlaad PostgreSQL via ServBay.Controleer bestands- en map-toegang: ServBay vereist de juiste lees-/schrijfrechten op de installatie- en submappen. Ook PostgreSQL-data en configuratiebestanden moeten toegankelijk zijn. ServBay draait meestal onder de huidige gebruikersrol; zorg dus dat je voor
/Applications/ServBay/
en alle inhoud eigenaar bent of deel van de juiste groep en schrijfrechten hebt. Controleer de rechten als volgt:bashls -ld /Applications/ServBay/db/postgresql/13 # Controleer datamapprechten ls -l /Applications/ServBay/db/postgresql/13/postgresql.conf # Controleer configuratierechten ls -l /Applications/ServBay/db/postgresql/13/pg_hba.conf # Controleer authenticatiebestand
1
2
3Kloppen de rechten niet, pas deze eventueel aan met
chmod
ofchown
. Doe dit alleen als het strikt noodzakelijk is, want normaalgesproken stelt ServBay zelf correcte rechten in tijdens installatie. Zijn er rechtenproblemen, dan kan de installatie incompleet zijn of zijn er bestanden onbedoeld aangepast.Controleer op corruptie van de datamap: De datamap van PostgreSQL bevat alle databasebestanden. Is die beschadigd (bijv. door plots afsluiten of schijffouten), dan kan PostgreSQL niet starten. In de logbestanden vind je meestal aanwijzingen voor defecte databestanden. Herstel van een corrupte datamap is lastig, vereist vaak geavanceerde tools of herstel vanuit een back-up. PostgreSQL biedt bijvoorbeeld
pg_resetwal
, maar verkeerd gebruik kan tot dataverlies leiden. Maak altijd een back-up van de bestaande datamap (ook als deze beschadigd lijkt) voordat je reparaties uitvoert.Herstart via ServBay-controlecommando's: Heb je bovenstaande mogelijke oorzaken uitgesloten, probeer dan PostgreSQL opnieuw op te starten via de ServBay command line tool. Geef het correcte versienummer:
bashservbayctl restart postgresql 13
1Of gebruik daarvoor de ServBay GUI.
2. Kan geen verbinding maken met PostgreSQL
Ook wanneer het PostgreSQL-pakket als “actief” staat aangemerkt, kunnen verbindingen vanuit tools (psql
, pgAdmin
, applicatiecode) toch mislukken.
Mogelijke oorzaken
- Het PostgreSQL-pakket draait feitelijk niet correct.
pg_hba.conf
laat je verbinding niet toe.- De firewall blokkeert de verbinding.
- Onjuiste verbindingsinstellingen (host, poort, database, gebruikersnaam, wachtwoord).
- Onvoldoende toegang tot de database voor de gebruikte gebruiker.
Oplossingen
Controleer de status via de ServBay GUI of
servbayctl
: Bevestig via de GUI of het pakket echt draait. Is dat niet zo, volg dan de stappen onder “Het PostgreSQL-pakket start niet”. Je kunt het ook nagaan met:bashservbayctl status postgresql 13
1Zorg dat de uitvoer aangeeft dat PostgreSQL draait.
Controleer authenticatieconfiguratie (
pg_hba.conf
): Inpg_hba.conf
wordt geregeld welke hosts, gebruikers en databases, via welk authenticatiemechanisme, verbinding mogen maken. Voor lokale ontwikkeling moet in elk gevallocalhost
(of127.0.0.1
/::1
) toegestaan zijn.Zorg dat er een regel is voor de gebruiker, database en verbindingsbron die je gebruikt (meestal local/127.0.0.1/::1), en stel een passend authenticatiemechanisme in, zoals
md5
oftrust
voor lokale toegang.Bijvoorbeeld, voor een lokale demo-gebruiker (
servbay-demo
):ini# TYPE DATABASE USER ADDRESS METHOD host all servbay-demo 127.0.0.1/32 md5 host all servbay-demo ::1/128 md5
1
2
3Pas je het bestand aan, herlaad dan de instellingen (een herstart is niet nodig):
bashservbayctl reload postgresql 13
1Of herlaad via de ServBay GUI.
Controleer firewallinstellingen: De ingebouwde macOS-firewall of andere firewalls kunnen het PostgreSQL-poortverkeer (5432) blokkeren. Zorg dat de
postgres
executable van ServBay binnenkomt. Gebruik de volgende commando’s om de ServBaypostgres
-app te whitelisten in de macOS-firewall:bash# Voeg de applicatie toe aan de toegestane lijst sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/postgres # Ontblokkeer de applicatie sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/postgres
1
2
3
4Vul je beheerderswachtwoord in wanneer daarom gevraagd wordt.
Bevestig de connectieparameters en gebruikersrechten: Controleer of de host (
localhost
of127.0.0.1
), poort (5432), database, gebruikersnaam en wachtwoord correct zijn. Test de verbinding in de terminal metpsql
:bashpsql -U your_username -d your_database -h localhost -p 5432
1Vervang
your_username
enyour_database
door je werkelijke gebruikersnaam en database. Een succesvolle verbinding toont de psql-prompt; mislukking levert meestal een bruikbare foutmelding (wachtwoordfout, database bestaat niet, onvoldoende rechten, enz.).Kun je wel verbinden maar geen specifieke tabellen bereiken, dan kan dit een toegangsprobleem zijn. In psql zie je met:
sql-- Binnen de psql-cli \du
1
2de rollen en hun rechten. Verleen via het
GRANT
-commando extra permissies, indien nodig, met een beheerder- of postgres-account.
3. Prestatieproblemen
Het PostgreSQL-pakket draait en is bereikbaar, maar query’s reageren traag: mogelijk kamp je met prestatieproblemen.
Mogelijke oorzaken
- SQL-query’s zijn inefficiënt of niet geoptimaliseerd.
- De database-structuur is niet doordacht.
- Onjuiste instellingen voor cache/memory.
- Ontbrekende benodigde indexen.
- Onvoldoende hardwarecapaciteit (CPU, RAM, schijf).
- Verouderde statistieken binnen de database.
Oplossingen
Analyseer en optimaliseer trage query’s: Gebruik
EXPLAIN
ofEXPLAIN ANALYZE
om te zien hoe PostgreSQL je query’s uitvoert: welke indexen gebruikt worden, join-volgorde, scanmethode enzovoorts. Zo spoor je bottlenecks op.sql-- Uitvoeren in psql of een andere SQL-client EXPLAIN ANALYZE SELECT * FROM your_table_name WHERE column_name = 'value';
1
2Op basis van de uitvoer herschrijf je query’s, pas je indexen toe of verbeter je de databaseopzet.
Pas PostgreSQL-instellingen aan: Instellingen in
postgresql.conf
kunnen sterk van invloed zijn op de performance, vooral de geheugen- en I/O-parameters. De belangrijkste zijn:shared_buffers
: bepaalt hoeveel geheugen PostgreSQL reserveert voor caching. Meer geheugen zorgt vaak voor betere prestaties, maar op een ontwikkelmachine niet te veel (>25% RAM wordt afgeraden).work_mem
: bepaalt de hoeveelheid geheugen voor sorteringen/hashes. Helpt bij complexe query’s zonder excessieve disk-I/O.
Pas deze aan op basis van je systeem en werkbelasting. Na wijziging is een herstart of reload vereist.
ini# Voorbeeld: stel dit af op systeemgeheugen shared_buffers = 1GB # Bijvoorbeeld, bij 4GB RAM work_mem = 64MB # Pas aan op de query’s
1
2
3Zorg voor de juiste indexen: Voor kolommen die vaak voorkomen in WHERE, JOIN of ORDER BY is een index vaak een flinke snelheidswinst. Gebruik eerst
EXPLAIN
om te bepalen welke kolom het meest baat heeft bij een index.sql-- Voorbeeld: maak een index op column_name CREATE INDEX idx_column_name ON your_table_name(column_name);
1
2Wees terughoudend: te veel indexen vertragen schrijfacties en nemen extra schijfruimte in.
Werk statistieken bij: PostgreSQL’s query-optimizer is afhankelijk van up-to-date statistieken van tabellen en indexen. Bij veel datamutaties kan de optimizer minder slimme plannen maken. Voer daarom regelmatig:
sql-- Analyseer de hele database ANALYZE; -- Specifieke tabel analyseren ANALYZE your_table_name;
1
2
3
4Standaard doet ServBay’s PostgreSQL automatisch autovacuum/autoanalyze, maar handmatig bijwerken is extra nuttig bij prestatieproblemen.
Check hardwaregebruik: Zelfs in een lokale ontwikkelomgeving kun je tegen hardwarelimieten aanlopen, zoals bij grote databases of zware bewerkingen. Gebruik Activity Monitor (macOS) om CPU, geheugen, schijf en netwerk te monitoren.
4. Databasecrash
Het PostgreSQL-pakket stopt uit het niets, of reageert niet meer—mogelijk een crash.
Mogelijke oorzaken
- Hardwarefouten (RAM of disk).
- Besturingssysteemproblemen of resource-limieten.
- Een softwarefout in PostgreSQL zelf (zelden; meestal bij specifieke versies of gebruik).
- Gecorrumpeerde datamap.
- Foute configuratie met als gevolg resource-uitputting (bijv. te veel gelijktijdige verbindingen).
Oplossingen
Bekijk de PostgreSQL-foutlogs: Bij een crash legt PostgreSQL uitgebreide foutmeldingen vast. Dit is je primaire bron voor diagnose. Bekijk
/Applications/ServBay/logs/postgresql/<version>/postgresql-<version>.log
. Zoek op berichten met “FATAL” of “ERROR”, vooral rond het crashtijdstip. Vaak wijzen logs concreet de oorzaak aan (bijv. geheugenfout, assertion error, errors met datafiles).Bekijk de systeemlog van macOS: Ook het systeemlog (via de Console-app van macOS) kan aanwijzingen bieden over hardware- of OS-fouten die met PostgreSQL te maken hebben.
Controleer hardwarestatus: Gebruik de ingebouwde diagnostiek van macOS of andere tools om RAM/schijven te controleren. Schijffouten zijn een veelvoorkomende oorzaak van corruptie en crashes.
Herstel of zet de datamap opnieuw op (voorzichtig!): Duidt de log op een corrupte datamap, kun je overwegen om PostgreSQL’s low-level tools zoals
pg_resetwal
in te zetten. Let op, dit brengt risico’s op dataverlies mee. Alleen gebruiken als een beperkte mate van dataverlies acceptabel is.Veiliger en sterk aanbevolen: a. Back-up van de datamap: Ook als deze beschadigd lijkt, maak altijd eerst een volledige kopie. b. Initialiseer een nieuwe datamap: Stop PostgreSQL, rename de oude map, en voer met
initdb
een nieuwe lege datamapinitiatie uit (ServBay regelt dit bij herinstallatie van het pakket). c. Herstel vanuit recente back-up: Gebruikpg_restore
ofpsql
om data uit een betrouwbare back-up te laden.Herstel data vanuit een back-up: Is de datamap niet te repareren, of wil je terug naar een eerdere staat, herstel je gegevens uit een ServBay-back-up. De ServBay-PostgreSQL back-ups vind je onder
/Applications/ServBay/backup/postgresql/<version>/
.
5. Back-up- en herstelproblemen
ServBay ondersteunt handmatige én automatische back-ups van PostgreSQL-pakketten. Problemen bij back-up of herstel los je als volgt op.
Mogelijke oorzaken
- De back-up is beschadigd of onvolledig.
- Er is een fout gemaakt met commando’s of parameters bij het herstel.
- Doeldatabase bestaat niet of gebruiksrechten ontbreken.
- Te weinig vrije schijfruimte.
- Onderbrekingen tijdens back-up of herstel.
Oplossingen
Controleer de integriteit van de back-up: Verifieer dat de back-upfile qua omvang plausibel is en niet beschadigd raakte tijdens transport of opslag. Bij tekstformaat kun je de file aan begin/einde bekijken. Bij custom/directory formats kun je op errors letten bij
pg_restore
. De bestanden zijn te vinden onder:bash/Applications/ServBay/backup/postgresql/13/your_backup_file.dump
1Gebruik
ls -lh
om de grootte te checken.Gebruik de juiste herstelinstructie (
pg_restore
ofpsql
): Het herstelcommando hangt af van het type back-upbestand.- Voor plain/text back-ups (
pg_dump -Fp
of standaard): Herstel metpsql
:bashDe doeldatabase moet al bestaan.psql -U your_username -d your_database -h localhost -p 5432 -f /path/to/your_backup_file.sql
1 - Voor custom (
-Fc
) of directory (-Fd
) back-ups: Herstel metpg_restore
:bashOok hier geldt: de doeldatabase moet voor het herstel zijn aangemaakt. Metpg_restore -U your_username -d your_database -h localhost -p 5432 /path/to/your_backup_file.dump
1pg_restore
kun je selectief objecten terugzetten.
Zorg ervoor dat je gebruikersaccount voldoende rechten heeft in de doel-database (meestal de eigenaar of superuser
postgres
).- Voor plain/text back-ups (
Zorg dat de doeldatabase bestaat: Of je nu herstelt via
psql -f
ofpg_restore
, de database moet vooraf aangemaakt zijn:bashcreatedb -U your_username -h localhost -p 5432 your_database
1Of maak een database aan via de ServBay GUI of een managementtool.
Controleer beschikbare schijfruimte: Het herstellen van grote databases vereist voldoende vrije ruimte op je schijf. Controleer je macOS-apparaat hierop voor je start.
Bekijk ServBay's back-uplog en instellingen: Loopt een automatische ServBay-back-up mis, controleer dan of de geplande taak, doelmap en retention correct zijn ingesteld en raadpleeg het hoofdlog voor details over de mislukking.
Veelgestelde Vragen (FAQ)
Vraag: Waar vind ik de datamap van PostgreSQL in ServBay? Antwoord: De datamap staat doorgaans onder
/Applications/ServBay/db/postgresql/<version>/data
, waarbij<version>
het geïnstalleerde versienummer voorstelt (bijvoorbeeld13
). De configuratiebestandenpostgresql.conf
enpg_hba.conf
vind je meestal in/Applications/ServBay/db/postgresql/<version>/
.Vraag: Hoe reset ik het wachtwoord van de
postgres
-gebruiker in ServBay? Antwoord: Ben je het superuser-wachtwoord (postgres
) vergeten, of wil je andere gebruikerswachtwoorden wijzigen, volg dan deze procedure (je moet tenminste op trusted wijze of met een andere superuser kunnen verbinden):- Stop het PostgreSQL-pakket in ServBay.
- Bewerk het bestand
pg_hba.conf
(bijvoorbeeld/Applications/ServBay/db/postgresql/13/pg_hba.conf
) en zet tijdelijke de lokale verbinding optrust
, dus zonder wachtwoord. Zoek regels als:iniWijzig deze voor uitsluitend lokale verbindingen:# TYPE DATABASE USER ADDRESS METHOD local all all peer # of md5 host all all 127.0.0.1/32 md5 # of scram-sha-256 etc.
1
2
3ini# TYPE DATABASE USER ADDRESS METHOD local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust
1
2
3
4 - Start het PostgreSQL-pakket weer op via ServBay.
- Verbind als
postgres
zonder wachtwoord:bashpsql -U postgres -h localhost -p 5432
1 - Gebruik op de psql-prompt het
ALTER USER
-commando:sqlVervangALTER USER postgres PASSWORD 'nieuw_veilig_wachtwoord';
1'nieuw_veilig_wachtwoord'
door het gekozen wachtwoord. Voor andere gebruikers wijzig jepostgres
naar de betreffende gebruikersnaam. - Verlaat psql met
\q
. - Belangrijk: Stop onmiddellijk het pakket, herstel in
pg_hba.conf
weer het oorspronkelijke authenticatiemechanisme (bijv.md5
ofscram-sha-256
) en start of herlaad PostgreSQL via ServBay opnieuw.
Vraag: Ondersteunt ServBay high availability of replicatie voor PostgreSQL? Antwoord: ServBay is ontwikkeld voor lokale ontwikkeling en biedt makkelijk beheer van softwarepakketten. Productiewaardige high-availability of replicatie via een GUI wordt niet geboden. Het is wel mogelijk handmatig streaming replicatie op te zetten, maar vereist gevorderde kennis van PostgreSQL-configuraties en command line.
Vraag: Hoe upgrade ik het PostgreSQL-pakket binnen ServBay? Antwoord: In ServBay kun je meerdere PostgreSQL-versies installeren en beheren. Upgraden doe je doorgaans door een nieuwe, hogere versie te installeren en daarna het PostgreSQL-tool
pg_upgrade
te gebruiken om data van de oude naar de nieuwe datamap over te zetten. Hiermee moet je beide versies stoppen,pg_upgrade
uitvoeren en daarna de nieuwe versie starten. Zie de officiële PostgreSQL-pg_upgrade
-documentatie voor details. ServBay bewaart de datamappen van verschillende versies gescheiden, wat dit type upgrade makkelijker maakt.