A replication architecture database is a valuable approach for separating read and write responsibilities into different database servers. This allows for efficient scaling of the database based on the type of operations or transactions that occur. In this guide, we will set up a replication architecture database in a Docker environment using Docker Compose, specifically for our development environment.
Technologies Used
- PostgreSQL
- Docker Compose
Getting Started
- Install Docker Desktop
Docker Compose Setup
Begin by creating a docker-compose.yaml
file to define the services, configurations, and dependencies for the PostgreSQL replication setup.
version: "3"
services:
postgresql-master:
image: bitnami/postgresql
restart: always
ports:
- '5432:5432'
volumes:
- postgresql_master_data:/bitnami/postgresql
- ./db.sql:/docker-entrypoint-initdb.d/db.sql
environment:
- POSTGRESQL_PGAUDIT_LOG=READ,WRITE
- POSTGRESQL_LOG_HOSTNAME=true
- POSTGRESQL_REPLICATION_MODE=master
- POSTGRESQL_REPLICATION_USER=repl_user
- POSTGRESQL_REPLICATION_PASSWORD=repl_user
- POSTGRESQL_USERNAME=postgres
- POSTGRESQL_PASSWORD=postgres
- POSTGRESQL_DATABASE=development_database
- ALLOW_EMPTY_PASSWORD=yes
postgresql-slave:
image: bitnami/postgresql
restart: always
ports:
- '5432'
depends_on:
- postgresql-master
environment:
- POSTGRESQL_PASSWORD=postgres
- POSTGRESQL_MASTER_HOST=postgresql-master
- POSTGRESQL_PGAUDIT_LOG=READ
- POSTGRESQL_LOG_HOSTNAME=true
- POSTGRESQL_REPLICATION_MODE=slave
- POSTGRESQL_REPLICATION_USER=repl_user
- POSTGRESQL_REPLICATION_PASSWORD=repl_user
- POSTGRESQL_MASTER_PORT_NUMBER=5432
- ALLOW_EMPTY_PASSWORD=yes
volumes:
postgresql_master_data:
driver: local
This docker-compose.yaml
file defines two services: postgresql-master
and postgresql-slave
. The postgresql-master
service acts as the master node, while the postgresql-slave
service acts as the slave node.
Explanation of Key Configurations
- PostgreSQL Master Service:
POSTGRESQL_REPLICATION_MODE=master
: Specifies that this PostgreSQL instance is the master.POSTGRESQL_REPLICATION_USER
andPOSTGRESQL_REPLICATION_PASSWORD
: Credentials for replication.POSTGRESQL_DATABASE
: Name of the development database.POSTGRESQL_PGAUDIT_LOG=READ,WRITE
: Enables audit logging for read and write operations.
- PostgreSQL Slave Service:
POSTGRESQL_REPLICATION_MODE=slave
: Specifies that this PostgreSQL instance is the slave.POSTGRESQL_MASTER_HOST
: Points to the host of the master node.POSTGRESQL_MASTER_PORT_NUMBER
: Port number on which the master node is running.POSTGRESQL_PGAUDIT_LOG=READ
: Enables audit logging for read operations.
Running the Setup
To start the PostgreSQL replication setup, navigate to the directory containing the docker-compose.yaml
file and run:
docker-compose up -d
This will launch the services in detached mode. You can then access the master and slave databases separately, and any changes made in the master will be replicated to the slave.
This Docker-Compose setup provides a convenient way to implement PostgreSQL database replication for your development environment. Adjust the configurations based on your specific requirements and scaling needs.
Keep Reading
-
Testcontainers and Playwright
Discover how Testcontainers-Playwright simplifies browser automation and testing without local Playwright installations. Learn about its features, limitations, compatibility, and usage with code examples.
-
Getting Started with the Low-Cost RPLIDAR Using NVIDIA Jetson Nano
Conclusion Getting started with low-code RPlidar with Jetson Nano is an exciting journey that can open up a wide range of possibilities for building robotics projects. In this blog post, we covered the basic steps to get started with low-code RPlidar with Jetson Nano, including setting up ROS, installing the RPlidar driver and viewing RPlidar…
-
Docker and Wasm Containers – Better Together
Learn how Docker Desktop and CLI both manages Linux containers and Wasm containers side by side.
-
Introducing AutoGen v0.4: Revolutionizing Agentic AI with Enhanced Scalability, Flexibility, and Reliability
Over the past year, Microsoft developments with AutoGen have underscored the remarkable capabilities of agentic AI and multi-agent systems. Microsoft is thrilled to unveil AutoGen v0.4 , a major update shaped by invaluable feedback from our vibrant community of users and developers. This release marks a comprehensive overhaul of the AutoGen library, designed to elevate…
-
Transforming Patient Care with IoT in Digital Health
Explore the impact of IoT on digital health, from improving patient monitoring to transforming healthcare services in general.
-
How AI Enhances Cloud-Native App Deployment
Artificial Intelligence transforms how cloud-native applications are deployed. It simplifies tasks like managing resources and predicting workloads, offering real-time solutions to common challenges. Teams no longer struggle with manual adjustments or complex configurations. AI-powered tools streamline processes, making deployment faster and more efficient. This shift doesn’t just save time – it drives innovation. Developers focus…