Gegevens importeren van een bestaande PostgreSQL in ServBay
ServBay is een krachtige lokale webontwikkelomgeving voor ontwikkelaars, met ondersteuning voor meerdere programmeertalen, webservers en databasesystemen — waaronder PostgreSQL. Als je buiten ServBay al een PostgreSQL-database hebt draaien en de data wilt migreren naar de ingebouwde PostgreSQL van ServBay, dan biedt deze handleiding een stap-voor-stap uitleg.
In dit artikel lees je hoe je gebruik maakt van de standaard PostgreSQL-tools pg_dump
en pg_restore
en hoe je door het specificeren van het PostgreSQL socketbestand van ServBay het importproces succesvol afrondt.
Overzicht
Het migreren van gegevens van een bestaande PostgreSQL-database naar ServBay bestaat meestal uit deze kernstappen:
- Data exporteren uit de bron-PostgreSQL.
- Een doeldatabase aanmaken in ServBay’s eigen PostgreSQL.
- De geëxporteerde gegevens importeren in de doelomgeving binnen ServBay.
- Controleren of de data correct en volledig is geïmporteerd.
We leggen elk van deze stappen duidelijk uit en tonen hoe je rekening houdt met de specifieke verbinding via het socketbestand van ServBay.
Gebruiksscenario’s
- Productie- of testdatabases van PostgreSQL klonen naar je lokale ServBay-omgeving voor ontwikkeling en debugging.
- Data migreren van een standalone PostgreSQL-installatie naar het centraal beheerde ServBay.
- Maken van een lokale ontwikkelkopie binnen ServBay die volledig overeenkomt met structuur en inhoud van een externe database.
Vereisten
Zorg dat je voor het importeren van gegevens aan deze voorwaarden voldoet:
- ServBay is geïnstalleerd en actief: Zorg ervoor dat ServBay draait op macOS. PostgreSQL is standaard inbegrepen.
- De ingebouwde PostgreSQL van ServBay is gestart: Controleer in het ServBay-configuratiescherm of PostgreSQL actief is.
- Beschikbare bron-PostgreSQL: Je hebt een werkende PostgreSQL-server als bron nodig, met toegang tot de gegevens.
- PostgreSQL clienttools geïnstalleerd: Hulpmiddelen als
pg_dump
enpg_restore
moeten op je systeem aanwezig zijn — deze worden meestal met de server of de client geïnstalleerd. - Toereikende toegangsrechten: Je moet exportrechten hebben op de bron en de juiste rechten (meestal superuser, zoals
postgres
) om databases aan te maken en data te importeren op de ServBay-omgeving.
Stap 1: Data exporteren uit de bron-PostgreSQL
Om te beginnen exporteer je de data uit de bron-PostgreSQL naar een dumpbestand — hiervoor gebruik je best pg_dump
.
Open de terminal: Start je terminalapp op.
Voer het exportcommando uit: Gebruik
pg_dump
om verbinding te maken met de gewenste database en de data op te slaan in een dumpbestand.bashpg_dump -U your_source_username -d your_source_database_name -F c -b -v -f mydatabase_source.dump
1-U your_source_username
: Vervang door de gebruikersnaam van de bron-PostgreSQL.-d your_source_database_name
: Vervang door de naam van de te exporteren database.-F c
: Bepaalt het exportformaat (custom archive), aangeraden voor flexibel herstel viapg_restore
.-b
: Inclusief blobdata (grote objecten).-v
: Geeft een gedetailleerd overzicht van de export.-f mydatabase_source.dump
: Bestandsnaam en locatie voor de export (pas dit naar wens aan).
Afhankelijk van je bronconfiguratie moet je mogelijk ook een host (
-h
) of poort (-p
) opgeven. Bijvoorbeeld, bij een andere poort dan 5432:bashpg_dump -U your_source_username -d your_source_database_name -h localhost -p 5433 -F c -b -v -f mydatabase_source.dump
1Je krijgt waarschijnlijk een wachtwoordprompt voor de gebruiker van de brondatabase.
Stap 2: ServBay-doeldatabase voorbereiden
Voordat je de data importeert, maak je een lege database aan op de ingebouwde PostgreSQL van ServBay.
Verbind met ServBay PostgreSQL: ServBay gebruikt als standaard lokale verbinding een socketbestand, meestal in
/Applications/ServBay/tmp
. Gebruikpsql
om te verbinden:bashpsql -U postgres -h /Applications/ServBay/tmp postgres
1-U postgres
:postgres
is doorgaans de superuser.-h /Applications/ServBay/tmp
: Deze parameter is essentieel! Zo verbind je lokaal via het juiste socketpad.postgres
: De standaarddatabase voor beheertaken.
Vul het wachtwoord voor
postgres
in wanneer gevraagd. Weet je dit niet, raadpleeg dan het ServBay-configuratiescherm of relevante documentatie. Bij succes krijg je hetpsql
-prompt.Maak de doeldatabase aan: In de
psql
-prompt kun je nu de nieuwe database aanmaken. Houd de naam zo nodig gelijk aan de bron, bijvoorbeeldmydatabase_servbay
.sqlCREATE DATABASE mydatabase_servbay;
1Gebruik een gewenste naam in plaats van
mydatabase_servbay
. Is de database aangemaakt, verlaat psql met\q
.
Stap 3: Data importeren in ServBay PostgreSQL
Nu kun je via pg_restore
je eerder gemaakte dumpbestand importeren in de nieuw aangemaakte database.
Open de terminal: Start opnieuw een terminal indien je die afgesloten had.
Voer het importcommando uit:
bashpg_restore -U postgres -d mydatabase_servbay -v mydatabase_source.dump -h /Applications/ServBay/tmp
1-U postgres
: Verbindt als superuser.-d mydatabase_servbay
: Vervang door de eerder aangemaakte doeldatabase.-v
: Gedetailleerde uitvoer (voor voortgang en foutanalyse).mydatabase_source.dump
: Pad en naam van de dumpfile.-h /Applications/ServBay/tmp
: Belangrijk: socketverbinding!
Je systeem vraagt om het superuserwachtwoord. De import kan even duren, afhankelijk van bestandsgrootte en structuur.
Stap 4: Controleren van de import
Na de import is het belangrijk om te controleren of alles correct is overgekomen.
Verbind met de doeldatabase in ServBay:
bashpsql -U postgres -h /Applications/ServBay/tmp mydatabase_servbay
1Vervang
mydatabase_servbay
door jouw databasenaam. Vul het wachtwoord in.Voer controlevragen uit: In
psql
kun je bijvoorbeeld het volgende uitvoeren:- Lijst met tabellen tonen:
\dt
- Eerste tien rijen van een bepaalde tabel:sqlVervang
SELECT * FROM your_table_name LIMIT 10;
1your_table_name
door een bestaande tabelnaam. - Aantal rijen tellen:sql
SELECT COUNT(*) FROM your_table_name;
1
Daarmee controleer je de aanwezigheid en volledigheid van je data.
- Lijst met tabellen tonen:
Mogelijke compatibiliteitsproblemen oplossen
In de praktijk zijn verschillende PostgreSQL-versies vaak compatibel, maar soms kunnen er bij migraties tóch problemen optreden.
- Versieverschillen: Zijn de PostgreSQL-versies flink verschillend, dan kunnen bepaalde functionaliteit, syntax of systemtables wijzigen.
- Oplossing: Raadpleeg de officiële PostgreSQL-documentatie voor versieverschillen. Pas zo nodig de SQL aan of voer extra migratiescripts uit.
- Uitbreidingen en modules: Extensies zoals
uuid-ossp
ofpgcrypto
, of eigen functies, zijn soms niet (of in een andere versie) geïnstalleerd in de ServBay-omgeving.- Oplossing: Installeer de benodigde uitbreiding(en) in de doeldatabase:sqlZijn de versies onverenigbaar, zoek dan een alternatief of upgrade indien mogelijk PostgreSQL binnen ServBay.
CREATE EXTENSION IF NOT EXISTS your_extension_name;
1
- Oplossing: Installeer de benodigde uitbreiding(en) in de doeldatabase:
- Gebruikers en rechten:
pg_dump
slaat standaard gebruikers, rollen en rechten op, maar deze objecten bestaan mogelijk niet in ServBay.- Oplossing: Maak na de import de benodigde gebruikers en rollen aan, en wijs rechten toe:sqlJe kunt
CREATE USER your_source_username WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE mydatabase_servbay TO your_source_username; -- Wijs extra rechten toe waar nodig
1
2
3--no-owner
en--no-acl
gebruiken bijpg_dump
om rechteninformatie uit te sluiten en die handmatig na de import instellen.
- Oplossing: Maak na de import de benodigde gebruikers en rollen aan, en wijs rechten toe:
- Tekencodering of locale: Verschillen in tekencoding of locale-instellingen kunnen importfouten of karakterproblemen veroorzaken.
- Oplossing: Kies bij het aanmaken van de doeldatabase dezelfde encoding en locale als bij de bron:sqlPas de waarden aan naar wat op de bronserver is ingesteld.
CREATE DATABASE mydatabase_servbay ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
1
- Oplossing: Kies bij het aanmaken van de doeldatabase dezelfde encoding en locale als bij de bron:
Loop bij problemen het uitvoerige resultaat van pg_restore
(met -v
) goed na — daar staat meestal een duidelijke foutmelding.
Belangrijke aandachtspunten
- ServBay socketpad: De standaardverbinding verloopt via het socketbestand op
/Applications/ServBay/tmp
. Vergeet het-h /Applications/ServBay/tmp
argument niet in je commando’s! - Rechten: Zorg dat je gebruiker lees-/schrijfrechten heeft op het dumpbestand, en dat de PostgreSQL-gebruiker over voldoende privileges beschikt.
- Bestandsgrootte: Grote databases kosten meer tijd en schijfruimte. Controleer of je systeem dit aankan.
- Wachtwoorden: Beheer je
postgres
-wachtwoord goed; dit heb je nodig voor de verbindingen binnen ServBay.
Veelgestelde vragen (FAQ)
Vraag 1: Wat als ik het postgres
-wachtwoord voor ServBay PostgreSQL ben vergeten?
Antwoord: Je kunt het wachtwoord terugvinden of resetten via het configuratiescherm van ServBay, of raadpleeg de relevante ServBay-documentatie.
Vraag 2: Waarom kan ik ServBay’s PostgreSQL niet bereiken via localhost
of 127.0.0.1
?
Antwoord: Omwille van veiligheid accepteert PostgreSQL in ServBay standaard enkel lokale socketverbindingen. Wil je via TCP/IP werken, moet je de configuratie handmatig aanpassen (niet aanbevolen voor lokale ontwikkeling). De standaard is verbinden via -h /Applications/ServBay/tmp
.
Vraag 3: Mijn import geeft fouten, hoe los ik dit op?
Antwoord: Controleer de uitvoer van pg_restore
, vooral met de -v
-optie. Foutboodschappen wijzen je meestal direct naar het probleem, zoals syntaxfouten, rechten, of ontbrekende objecten. Raadpleeg het hoofdstuk over compatibiliteitsproblemen.
Vraag 4: Kan ik grafische hulpmiddelen zoals pgAdmin gebruiken voor import?
Antwoord: Ja, dat kan. Stel bij het verbinden het Host/socket-path in op /Applications/ServBay/tmp
(niet bij Hostname of IP). Je kunt dan de ingebouwde import-/herstelfuncties gebruiken om je .dump
te laden.
Samenvatting
Het importeren van een bestaande PostgreSQL-database in de ingebouwde database van ServBay is een veelvoorkomende ontwikkelingstaak. Door gebruik te maken van standaardtools zoals pg_dump
en pg_restore
en er steeds op te letten dat je het socketpad (-h /Applications/ServBay/tmp
) correct instelt, kun je betrouwbaar en efficiënt migreren. Volg de stappen uit deze gids, beheer mogelijke compatibiliteitsproblemen en bouw snel een lokale werkomgeving die overeenkomt met je externe database. Dankzij ServBay werk je sneller en eenvoudiger met databases in een geïntegreerde ontwikkelomgeving.