Hoe importeer je data van een bestaande PostgreSQL-database in ServBay
ServBay is een krachtig lokaal webontwikkelplatform, speciaal ontworpen voor ontwikkelaars. Het bundelt meerdere programmeeromgevingen, webservers en databasesystemen, waaronder PostgreSQL. Heb je buiten ServBay al een werkende PostgreSQL-database en wil je de data migreren naar de ingebouwde PostgreSQL van ServBay, dan biedt deze handleiding een duidelijke stap-voor-stap instructie.
We leggen uit hoe je met de standaard PostgreSQL-tools pg_dump en pg_restore het importproces uitvoert, en hoe je daarbij het socket-pad van ServBay PostgreSQL correct aanwijst. Zo zorg je voor een soepele datamigratie.
Overzicht
Het migreren van data uit een bestaande PostgreSQL-database naar ServBay omvat doorgaans deze kerntaken:
- Data exporteren vanuit de bron-database.
- Doeldatabase aanmaken in de PostgreSQL van ServBay.
- Exporteerbestand importeren in ServBay's doeldatabase.
- Controleren of de import volledig en correct is verlopen.
Deze stappen splitsen we uit en we leggen uit hoe je ServBay’s socket-verbinding gebruikt.
Typische scenario’s
- Een productie- of testdatabase klonen naar ServBay voor lokale ontwikkeling en debugging.
- Data migreren van een losse PostgreSQL-installatie naar ServBay voor centrale beheer.
- Lokale kopieën maken in ServBay die qua structuur en data gelijk zijn aan externe databases.
Voorwaarden
Voor je begint met importeren, zorg dat je aan het volgende voldoet:
- ServBay is geïnstalleerd en gestart: ServBay moet actief zijn op je macOS-systeem; PostgreSQL zit standaard inbegrepen.
- PostgreSQL van ServBay draait: Controleer in het ServBay-dashboard dat het PostgreSQL-pakket gestart is.
- Bron PostgreSQL draait: Je hebt toegang tot een werkende bron-database.
- PostgreSQL-cli tools geïnstalleerd: Tools als
pg_dumpenpg_restoremoeten op je systeem staan (komen vaak mee met de PostgreSQL-server of client). - Toereikende rechten: Je moet exportrechten hebben op de bron-database, en beheerdersrechten (zoals
postgres) in ServBay om database aan te maken en data te importeren.
Stap 1: Data exporteren uit de bron PostgreSQL
Eerst zet je de data van de bron-database om in een bestand met pg_dump.
Open Terminal op je Mac.
Voer exportcommando uit: Gebruik
pg_dumpom te koppelen aan je bron-database en exporteer naar een bestand.bashpg_dump -U your_source_username -d your_source_database_name -F c -b -v -f mydatabase_source.dump1-U your_source_username: Vul hier je bron-database gebruiker in.-d your_source_database_name: De naam van de te exporteren database.-F c: Exporteert in het custom archive format. Aanbevolen voorpg_restorevanwege de flexibiliteit (zoals selectief herstellen van tabellen of data).-b: Neemt grote objecten (blobs) mee.-v: Gedetailleerde output van de voortgang.-f mydatabase_source.dump: Naam en locatie van het exportbestand; pas aan naar je gewenste pad, zoals/pad/naar/map/mydatabase_source.dump.
Mogelijk moet je het hostadres (
-h) of poort (-p) meegeven, bijvoorbeeld als je bron-database op een andere poort draait dan 5432:bashpg_dump -U your_source_username -d your_source_database_name -h localhost -p 5433 -F c -b -v -f mydatabase_source.dump1Na het uitvoeren moet je waarschijnlijk het wachtwoord van de brongebruiker invoeren.
Stap 2: ServBay-doeldatabase aanmaken
Importeren in ServBay vereist een lege database als bestemming.
Maak verbinding met ServBay PostgreSQL: ServBay gebruikt standaard verbinding via een socket-bestand, meestal te vinden in
/Applications/ServBay/tmp. Verbind metpsql:bashpsql -U postgres -h /Applications/ServBay/tmp postgres1-U postgres: De standaard beheerder in PostgreSQL; ServBay gebruikt deze meestal.-h /Applications/ServBay/tmp: Essentieel voor ServBay! Zo verbindtpsqlvia het socket-bestand, niet via TCP/IP.postgres: De standaardbeheer-database.
Je krijgt dan een wachtwoordprompt. Ben je het kwijt, dan kun je die vinden of resetten via het ServBay-dashboard of documentatie. Na succes zie je de
psqlprompt.Maak een nieuwe database aan: Voer dit SQL-commando uit in
psql:sqlCREATE DATABASE mydatabase_servbay;1Vervang
mydatabase_servbaydoor een naam naar keuze. Na aanmaken kun je met\qpsql afsluiten.
Stap 3: Data importeren in ServBay PostgreSQL
Nu importeer je het exportbestand met pg_restore in de doel-database.
Open Terminal (opnieuw indien je deze sloot).
Start import: Voer dit commando uit:
bashpg_restore -U postgres -d mydatabase_servbay -v mydatabase_source.dump -h /Applications/ServBay/tmp1-U postgres: Log in als beheerder.-d mydatabase_servbay: De doel-database die je net hebt aangemaakt.-v: Voor gedetailleerd import-verslag en foutmeldingen.mydatabase_source.dump: Het pad en de naam van je exportbestand.-h /Applications/ServBay/tmp: Kritisch voor socket-verbinding met ServBay!
Opnieuw krijg je mogelijk een wachtwoordprompt. De importduur hangt af van de bestandsgrootte en databasecomplexiteit.
Stap 4: Controleren of de data juist is geïmporteerd
Na de import moet je nagaan of alle tabellen en gegevens goed zijn overgezet.
Connect naar ServBay-doeldatabase:
bashpsql -U postgres -h /Applications/ServBay/tmp mydatabase_servbay1Vervang
mydatabase_servbaydoor de juiste naam. Voer je wachtwoord in.Voer queries uit ter controle: In de
psql-prompt:- Lijst van tabellen:
\dt - Bekijk de eerste rijen van een bepaalde tabel:sqlVervang
SELECT * FROM your_table_name LIMIT 10;1your_table_namedoor een daadwerkelijke tabelnaam. - Totaal aantal rijen:sql
SELECT COUNT(*) FROM your_table_name;1
Zet deze queries in voor een snelle controle van de structuur, data en het aantal regels.
- Lijst van tabellen:
Mogelijke compatibiliteitsproblemen aanpakken
Hoewel PostgreSQL doorgaans goed compatibel is tussen versies, kunnen er toch verschillen bestaan bij migratie of specifieke configuraties.
- Versieverschillen: Grote verschillen in PostgreSQL-versies kunnen leiden tot afwijkingen in functionaliteit, syntax en systeemtabellen.
- Oplossing: Raadpleeg de officiële PostgreSQL-documentatie voor compatibiliteitswijzigingen tussen je versies. Pascaleer je .sql-bestanden of voer migratiescripts uit indien nodig.
- Niet-ondersteunde extensies/modulen: De bron-database kan extensies (zoals
uuid-ossp,pgcrypto) gebruiken die niet in ServBay zijn geïnstalleerd of onverenigbaar zijn.- Oplossing: Installeer de benodigde extensies op ServBay vóór of na de import:sqlBij versieconflicten kun je alternatieven zoeken of ServBay’s PostgreSQL bijwerken (indien beschikbaar).
CREATE EXTENSION IF NOT EXISTS your_extension_name;1
- Oplossing: Installeer de benodigde extensies op ServBay vóór of na de import:
- Gebruikers en rechten:
pg_dumpexporteert standaard gebruikers, rollen en rechten. Maar die moeten in ServBay opnieuw aangemaakt of aangepast worden, vooral als de brongebruikers niet standaard zijn.- Oplossing: Maak gebruikers en rollen handmatig aan en geef juiste privileges:sqlJe kunt bij het exporteren ook de opties
CREATE USER your_source_username WITH PASSWORD 'your_password'; GRANT ALL PRIVILEGES ON DATABASE mydatabase_servbay TO your_source_username; -- Indien nodig meer gedetailleerde rechten1
2
3--no-owneren--no-aclgebruiken, en rechten na de import handmatig toewijzen.
- Oplossing: Maak gebruikers en rollen handmatig aan en geef juiste privileges:
- Problemen met encoding of locale: Verschillen in tekencodering of locale tussen bron en doel kunnen importfouten of onleesbare data veroorzaken.
- Oplossing: Geef bij het aanmaken van ServBay’s doeldatabase dezelfde encodering en locale mee als de bron:sqlPas dit aan naar je actuele broninstellingen.
CREATE DATABASE mydatabase_servbay ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';1
- Oplossing: Geef bij het aanmaken van ServBay’s doeldatabase dezelfde encodering en locale mee als de bron:
Gebruik de gedetailleerde output van de -v parameter bij pg_restore om snel fouten te identificeren.
Belangrijke aandachtspunten
- Socket-pad van ServBay: PostgreSQL in ServBay verbindt standaard via het socket-bestand in
/Applications/ServBay/tmp. Gebruik altijd-h /Applications/ServBay/tmpin je connectiecommando’s (psql,pg_dump,pg_restore). - Rechten: Je uitvoerende gebruiker moet rechten hebben op de exportbestanden en de databasegebruiker (zoals
postgres) moet databases mogen aanmaken en data importeren. - Bestandsgrootte: Grote databases kunnen veel tijd en schijfruimte vragen. Zorg voor voldoende vrije opslag.
- Wachtwoordbeheer: Je zult het wachtwoord van PostgreSQL’s
postgresnodig hebben bij iedere connectie. Beheer dit veilig.
FAQ
Q1: Wat doe ik als ik het wachtwoord van ServBay PostgreSQL’s postgres ben vergeten?
A1: Zoek of reset het root (postgres) wachtwoord via het ServBay-dashboard of de documentatie.
Q2: Waarom lukt het niet om via localhost of 127.0.0.1 ServBay's PostgreSQL te benaderen?
A2: ServBay’s PostgreSQL accepteert standaard alleen socket-connecties voor extra veiligheid. Wil je TCP/IP-verbinding, dan moet je ServBay’s configuratie aanpassen (voor lokale ontwikkeling niet aanbevolen). Gebruik altijd -h /Applications/ServBay/tmp voor ServBay.
Q3: Wat als ik een fout krijg bij het importeren?
A3: Controleer de output van pg_restore goed, zeker met de -v optie. Foutmeldingen verraden het probleem: syntax, rechten, bestaande objecten of ontbrekende onderdelen. Raadpleeg de sectie 'Mogelijke compatibiliteitsproblemen aanpakken' voor oplossingen.
Q4: Kan ik grafische tools als pgAdmin gebruiken om te importeren?
A4: Ja, het kan! Geef bij het verbinden als host of socketpad /Applications/ServBay/tmp op, niet als hostname of IP. Gebruik vervolgens de import-/herstel-functie van de tool om je .dump bestand te laden.
Samenvatting
Data migreren van een bestaande PostgreSQL-database naar de ingebouwde database van ServBay is een routineklus. Gebruik de standaardtools pg_dump en pg_restore, en geef het juiste ServBay-socketpad (-h /Applications/ServBay/tmp) op voor een gestroomlijnd proces. Volg de stappen in deze handleiding en houd rekening met compatibiliteit om snel een lokale kopie van je externe database in ServBay op te zetten. Dankzij ServBay’s geïntegreerde ontwikkelomgeving wordt databasebeheer en migratie een stuk makkelijker voor elke ontwikkelaar.
