Setup a Master-to-Master Replication Between two MariaDB

Master-to-master replication is a highly beneficial feature available in MariaDB that allows for the seamless synchronization of data between two database servers. Unlike the traditional master-slave setup, this bidirectional replication enables the servers to function as peers. Its advantages include redundancy, load balancing, and improved availability for critical databases.

By implementing master-to-master replication, you can effectively distribute the workload across multiple database servers, enhance fault tolerance, and ensure real-time data consistency. This setup is particularly valuable in scenarios where high availability and minimal downtime are crucial requirements. Industries such as e-commerce platforms, financial systems, and large-scale applications greatly benefit from this replication approach.

Our comprehensive guide will cover all the necessary steps to configure master-to-master replication. This includes preparing the environment, configuring replication settings, synchronizing initial data, initiating replication, monitoring and maintaining the setup, and considering failover and high availability mechanisms.

Master-to-Master Replication

The Master-to-master replication, or bidirectional replication, is a technique employed in MariaDB to synchronize data changes between two database servers. Unlike the conventional master-slave replication, where one server acts as the primary master and the other as the slave, master-to-master replication treats both servers as equals.

This setup enables each database server to independently handle both read and write operations. Whenever changes are made on one server, they are automatically replicated to the other server, ensuring that both databases remain synchronized. This bidirectional synchronization brings advantages such as load balancing, fault tolerance, and the ability to perform read and write operations locally on each server.

The process of master-to-master replication relies on binary logs and transaction-based replication. When a transaction is executed on one server, it is logged in the binary log and subsequently sent to the other server, where it is applied. This bidirectional flow ensures accurate propagation of data modifications between the servers.

Advantages Of Master-to-Master Replication

Master-to-master replication offers numerous advantages and can be applied in various scenarios:

  • High Availability: The redundancy provided by master-to-master replication ensures that if one server fails, the other can seamlessly take over, minimizing downtime and ensuring continuous availability of the database.
  • Load Balancing: With the ability to read and write from both servers, master-to-master replication allows for distributing the workload across multiple nodes. This improves performance and scalability by utilizing the resources of both servers.
  • Geographic Distribution: Master-to-master replication enables synchronization of data across geographically dispersed locations. This allows organizations to have local database servers that can serve regional users efficiently while keeping the data consistent and up to date.
  • Disaster Recovery: In the event of a disaster or server failure, having a replicated database ensures data availability and quick recovery. The secondary server can seamlessly take over the primary role, minimizing the impact of downtime and ensuring business continuity.

Master-to-master replication is particularly suitable for scenarios where data consistency, high availability, and scalability are crucial. It is commonly employed in e-commerce platforms, content management systems, and applications with a global user base that require continuous availability and reliable data synchronization across multiple locations.


To prepare the environment for setting up master-to-master replication between two MariaDB databases, it’s crucial to follow these steps:

  1. Verify that both database servers are running compatible versions of MariaDB. It is recommended to use the same major version to avoid compatibility issues.
  2. You need to Ensure that the operating system running on both servers is supported by MariaDB.
  3. Refer to the official MariaDB installation documentation to install the same version of MariaDB on both servers. Follow the installation instructions specific to your operating system.
  4. Adjust the server configuration files (my.cnf or my.ini) on both servers to meet the specific requirements of your environment. Pay attention to settings such as server IDs, network bindings, and buffer sizes. Ensure that the configuration is consistent on both servers.
  5. Start the MariaDB service on both servers to ensure they are up and running. Verify that you can connect to each server individually.

Configuring Replication Settings

To establish a master-to-master replication between two MariaDB databases, it is essential to correctly configure the replication settings on both servers. This involves several steps, as outlined below:

Identifying the primary and secondary nodes:

  • To begin, you need to determine which server will serve as the primary node initially. Consider factors such as server specifications, network connectivity, or any other relevant considerations to make this decision.
  • Next, designate the other server as the secondary node, which will initially replicate data from the primary node.

Configuring server IDs and unique identifiers:

  • Assign a unique numeric server ID to each MariaDB server. This ID helps identify each server in the replication process and prevents conflicts. For example, you can set server ID 1 for the primary node and server ID 2 for the secondary node.

Setting up the Replication User:

  • Create a dedicated user account on both servers specifically for handling the replication process. You can choose a name like “repl_user” or “replication_user” for this account.
  • Grant the replication user the necessary privileges to perform replication tasks. Ensure that the user has the replication slave and replication client privileges.

Adjusting Replication Settings:

  • Enable binary logging on both servers to record changes made to the databases. This is crucial for data replication.
  • Choose the appropriate binary log format based on your requirements. MariaDB supports statement-based logging (binlog_format=STATEMENT), row-based logging (binlog_format=ROW), or mixed logging (binlog_format=MIXED).
  • Configure replication-related settings in the server’s configuration file (my.cnf or my.ini). These settings include log_bin, binlog_do_db, binlog_ignore_db, replicate_do_db, replicate_ignore_db, and replicate_wild_ignore_table, among others.
  • Update the network-related settings to allow the servers to communicate with each other. This involves specifying the IP addresses or hostnames of the servers in the configuration file.

By following these steps and adjusting the necessary settings, you can establish a master-to-master replication between your two MariaDB databases. Remember to carefully review and test the configuration to ensure a reliable and consistent replication process.


In conclusion, setting up a master-to-master replication between two MariaDB servers involves configuring unique server IDs, enabling binary logging, creating a replication user, granting replication privileges, configuring replication settings, starting the replication process, and verifying its status. By following these steps, bidirectional replication can be established, allowing both servers to act as masters and slaves, enabling synchronized data replication.

Related Post

How to Fix the SSH Connection Refused Error

SSH, short for Secure Shell, is a cryptographic network...

How To Install Kali Linux – A Step-by-Step

There are many operating systems you could install on a...

How To Generate SSH Keys On Windows – A

SSH is a secure network protocol that allows you to con...

How to connect to a Windows server With RDP?

If you're working on a Windows Server network and need ...

Install and Run Vue on Ubuntu 19.04

Vue is a progressive JavaScript framework used for buil...

Understanding the Function, Types & Roles

What is a DNS Server? The Domain Name System (DNS) h...

Leave a Comment