Direct naar content

How to run Postgres on Docker deel 3

In een vorige blogpost heb ik uitgelegd hoe je een PostgreSQL-database in een container kunt implementeren vanuit een standaard-image. In deze post bekijk ik de implementatie van een PostgreSQL-cluster. Nou ja, soort van…. PostgreSQL gebruikt de term cluster om te verwijzen naar ‘een verzameling databases beheerd door een enkele PostgreSQL-serverinstantie’. Ik gebruik het in meer algemene zin om te verwijzen naar High Availability.

Craig Healey

DBA Consultant en Database Reliability Engineer
Craig Healey - DBA Consultant en Database Reliability Engineer

Deze blog is een onderdeel van een drieluik serie. Lees hieronder de vorige blogposts.

DEEL 1 DEEL 2

Basis replicatie met behulp van een pre-built project

PostgreSQL beschikt sinds versie 9.0 over streamingreplicatie, waarbij de WAL-logs worden overgedragen tussen de masterdatabase en de read-only slave (meer informatie vind je hier). Het is vrij eenvoudig in te stellen, dus wat Docker toevoegt? Je kunt de docker-compose-opdracht en het bestand docker-compose.yml gebruiken om een aantal docker-containers te besturen. De master- en slave-database wordt dus als één eenheid behandeld.

Ik ga hiervoor Hamed Momeni’s Medium post, gebruiken maar met een aantal veranderingen.

Ten eerste moet er een dockernetwerk worden gecreëerd zodat onze containers met elkaar kunnen communiceren:

docker network create bridge-docker

Vervolgens halen wij de bestanden en directories uit BitBucket:

git clone https://bitbucket.org/CraigOptimaData/docker-pg-cluster.git

Verander directory naar de nieuw gecreëerde directory die docker-pg-cluster heet.

cd docker-pg-cluster

Daarna kun je gewoon de docker-compose up command gebruiken:

docker-compose up

Je moet nu even geduld hebben, want er moeten een aantal zaken gebeuren tijden het bouwen van de master- en slave-images. Je ziet een paar rode signalen die waarschuwen dat de pakketconfiguratie moet worden vertraagd. Dat is normaal. Uiteindelijk zijn de images klaar en worden ze daadwerkelijk uitgevoerd. Op dit punt moeten de logs van pg_master_1 en pg_slave_1 worden weergegeven terwijl ze worden geïnitialiseerd. Als alles goed is gegaan, zullen de logs niet meer omhoog scrollen.