Guide on Testing pgEdge Platform Multi-Master Replication


In the realm of database management, ensuring the reliability and efficiency of replication systems is crucial. pgEdge Platform’s Multi-Master Replication (MMR) offers a robust solution for maintaining continuous synchronization across multiple servers, enhancing both availability and fault tolerance. But how do you test this complex system effectively? This blog will guide you through the nuances of testing, ensuring that you can confidently deploy a system that stands up to real-world demands.

When diving into the testing and deployment of database systems like pgEdge Platform Multi-Master Replication (MMR), it’s crucial to consider foundational principles that govern the behaviour of distributed systems. One such principle is the CAP Theorem, which offers critical insights into system design and capabilities.

Understanding the CAP Theorem:

The CAP Theorem, proposed by Eric Brewer, states that a distributed database system can only simultaneously provide two out of the following three guarantees:

  • Consistency (C): Every read receives the most recent write or an error.
  • Availability (A): Every request receives a response, without guarantee that it contains the most recent write.
  • Partition tolerance (P): The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes.

In the context of MMR, this theorem is especially pertinent because it highlights the trade-offs involved in designing and testing a replication system. Since network partitions are a reality that must be handled, choosing between consistency and availability becomes a strategic decision based on the specific requirements of your application.

Here’s what I feel the building blocks of testing:

  • Understanding MMR Basics: What is Multi-Master Replication in PostgreSQL and why is it important?
  • Setting Up Your Test Environment: Steps to prepare an optimal testing landscape.
  • Key Metrics for Testing : What to measure and why.
  • Common Challenges and Solutions: Troubleshooting common issues during testing.
  • Automating MMR Tests: Tools and scripts to streamline the process.
  • Real-World Testing Scenarios: Simulating real user transactions to gauge performance.


 multi-master (active-active) distributed PostgreSQL allows you to have   multiple master databases spread across different locations (multiple nodes), each capable of handling read and write traffic simultaneously

MMR improves data access times for your applications by using bi-directional replication and conflict resolution.

This is done through pgEdge’s Spock extension that allows you to create a multi-master (active-active) replication solution for your PostgreSQL database.


git clone

Test Strategies:

So,what are the strategies that i follow for MMR testing:

  • Test scripts were written in perl(python is also preferred)
  • Test Scripts can run individually or by using a schedule
  • To run a schedule, include the -s flag and the name of the schedule file – like:  ./runner -s schedule_name
  • 4)To run an individual test, include the -t flag, and the name of a test – like: ./runner -t testname
  • 5)As each test script executes (individually or through a schedule), it returns a pass or fail on the command line. 

a)setup scripts

 b)node creation

c)Selective replication


e)uninstall pgedge


Testing PostgreSQL Multi-Master Replication is essential for any business that relies on continuous data availability and integrity. By following this blog, you can ensure that your PostgreSQL databases are resilient, efficient, and prepared for high-demand scenarios. Remember, the key to successful MMR deployment lies in meticulous planning, comprehensive testing, and continuous optimization. In conclusion, one can seamlessly setup MMR with pgEdge Platform which provides solutions for modern applications and can easily point out the failure through script-based testing, which makes the testing process hassle-free.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>