PostgreSQL Replication Setup with Automatic Failover

Your web application is growing: 10,000 queries per second, the database is choking, LCP has climbed to 3 seconds. Users are leaving. The solution is setting up **Master-Slave replication** on PostgreSQL. This also saves up to 40% on read infrastructure costs—replicas can run on cheaper instances. O

Development and maintenance of all types of websites:

Informational websites or web applications
Business card websites, landing pages, corporate websites, online catalogs, quizzes, promo websites, blogs, news resources, informational portals, forums, aggregators
E-commerce websites or web applications
Online stores, B2B portals, marketplaces, online exchanges, cashback websites, exchanges, dropshipping platforms, product parsers
Business process management web applications
CRM systems, ERP systems, corporate portals, production management systems, information parsers
Electronic service websites or web applications
Classified ads platforms, online schools, online cinemas, website builders, portals for electronic services, video hosting platforms, thematic portals

These are just some of the technical types of websites we work with, and each of them can have its own specific features and functionality, as well as be customized to meet the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1287
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1245
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    983
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    1034
  • image_website-sbh_0.webp
    Website development for SBH Partners
    1108
  • image_website-_0.webp
    Website development for Red Pear
    555

Your web application is growing: 10,000 queries per second, the database is choking, LCP has climbed to 3 seconds. Users are leaving. The solution is setting up Master-Slave replication on PostgreSQL. This also saves up to 40% on read infrastructure costs—replicas can run on cheaper instances. Our master-slave replication solution uses WAL streaming and Patroni for automatic failover, ensuring a high-availability database. We handle complete PostgreSQL replication setup including pg_hba configuration and replication slots. We configure a resilient cluster in 2-3 days.

Challenges We Address with Master-Slave Replication

At 10,000 read queries per second, replication reduces LCP from 3 seconds to 200 ms. We use hot standby—replicas serve SELECT queries, offloading the primary. Synchronous replication guarantees zero data loss but consumes 30% more resources due to waiting for acknowledgment. Asynchronous replication is faster but may lose the last transaction (less than 1% loss on failure). Choice depends on consistency requirements: for financial systems—synchronous, for web apps—asynchronous. Infrastructure budget savings can reach 30-50% by using replicas for reads.

How We Set Up Automatic Failover with Patroni

Patroni is the standard for automatic PostgreSQL failover in production. It uses a distributed lock via etcd. When the primary fails, Patroni automatically promotes the replica with the smallest lag, minimizing downtime to under 10 seconds. For example, Patroni is 3x faster than repmgr in failover scenarios, reducing downtime from 30s to under 10s. Operational costs are reduced by 40% by using replicas for reads and avoiding expensive high-availability hardware.

Setup steps:

  1. Deploy an etcd cluster of 3 nodes.
  2. Install Patroni on each PostgreSQL server.
  3. Configure Patroni with etcd endpoints.
  4. Start Patroni—it automatically elects a master.
  5. Configure HAProxy to route write queries to master and read queries to replicas.

How We Configure Replication

Architecture: The application writes only to the primary; reads go to replicas. WAL is transferred via streaming replication.

Primary and Replica Configuration
# Primary postgresql.conf wal_level = replica max_wal_senders = 5 wal_keep_size = 1GB max_replication_slots = 5 synchronous_commit = on # pg_hba.conf host replication replicator 10.0.1.0/24 scram-sha-256 # Create replication user (run on primary) -- CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD 'strong_password'; # On replica: run pg_basebackup # pg_basebackup -h 10.0.1.10 -U replicator -D /var/lib/postgresql/14/main -P -Xs -R # Replica postgresql.conf hot_standby = on hot_standby_feedback = on max_standby_streaming_delay = 30s 
Monitoring and Management

Replication slots ensure the primary does not delete WAL until received by replicas. Without slots, a replica restart may require full resync. Monitor lag:

-- Monitoring replication slots SELECT slot_name, active, restart_lsn, confirmed_flush_lsn, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn)) AS lag_bytes FROM pg_replication_slots; -- Monitoring replica lag SELECT application_name, client_addr, state, write_lag, flush_lag, replay_lag FROM pg_stat_replication; 

Comparison: Synchronous vs. Asynchronous Replication

Parameter Synchronous Replication Asynchronous Replication
Write latency +30-50% 0-5%
Data loss 0 ≤ 1 transaction
Read performance High High
Recommended for Financial systems Web applications

Comparison: Failover Tools

Tool Coordination Failover time Complexity
Patroni etcd/Consul <10 s Medium
repmgr Standalone <30 s Low
PAF (Pacemaker) Corosync <20 s High

What Automatic Failover with Patroni Delivers

Automatic failover eliminates manual intervention when the primary fails. Downtime is reduced to under 10 seconds, critical for services requiring 99.9% uptime. Additionally, Patroni allows planned switchovers without stopping the application.

What Is Included in the Work (Deliverables)

This work includes the following deliverables:

  • Deployment of Master and 1-2 replicas with optimized WAL parameters.
  • Configuration of pg_hba, replication slots, and monitoring.
  • Setup of PgBouncer for connection pooling and request routing.
  • Installation and configuration of Patroni with etcd for automatic failover.
  • Application integration: configuring read/write routing.
  • Lag and performance monitoring (Prometheus + Grafana).
  • Documentation: detailed operational guide.
  • Access: SSH keys, database credentials, monitoring dashboards.
  • Training: 2-hour session for your team.
  • Support: 1 month of post-launch support.

Timelines and Cost

  • Basic setup (Master + 1 replica, without failover): 1 day.
  • Full cluster with Patroni and monitoring: 2-3 days.

Cost is calculated individually based on infrastructure complexity. Basic setup costs start at $2,000, and automatic failover adds $1,500. Potential monthly savings on read infrastructure exceed $1,000. Get a consultation—we will analyze your project free of charge and propose the optimal solution. Order the setup now and ensure 99.9% uptime!

Our Experience

We have completed over 50 projects configuring PostgreSQL clusters for web applications with loads up to 100,000 queries per second. Our engineers hold PostgreSQL Professional certifications and regularly speak at industry conferences. We guarantee quality and post-launch support.