MySQL Replication (M-M)


Prerequisites:

  1. Two MySQL Servers — You need two MySQL servers, each with a unique hostname (e.g., server1.example.com and server2.example.com).

  2. Network Access — Ensure that both MySQL servers can communicate with each other over the network (typically port 3306).

  3. Admin Access — You need to have root access to both servers to configure replication and make the necessary changes.


Step 1: Initial MySQL Configuration

  1. Configure MySQL on both servers to enable binary logging and unique server IDs.

    Edit the my.cnf file on both servers (/etc/my.cnf or /etc/mysql/my.cnf depending on your system):

    • On Server 1 (e.g., server1.example.com):

    • On Server 2 (e.g., server2.example.com):

    After making these changes, restart MySQL on both servers:


Step 2: Create Replication User

  1. Create a replication user on both servers. This user will have the necessary privileges to replicate data between the servers.

    • On Server 1 (run from mysql client):

    • On Server 2 (run from mysql client):


Step 3: Get the Binary Log Coordinates

  1. Find the current binary log position on each server.

    • On Server 1, execute:

      This will show something like this:

      Note the File and Position values. In this example, it’s mysql-bin.000001 and 107.

    • On Server 2, execute the same command to get the binary log status:

      Again, note the File and Position.


Step 4: Set Up Replication on Server 1

  1. Configure Server 1 to replicate from Server 2.

    • On Server 1, connect to the MySQL client and run:

  2. Start the replication on Server 1:

  3. Check the status of replication on Server 1 to ensure it’s running:

    • Look for Slave_IO_Running: Yes and Slave_SQL_Running: Yes in the output. If both are Yes, replication is working.


Step 5: Set Up Replication on Server 2

  1. Configure Server 2 to replicate from Server 1.

    • On Server 2, connect to the MySQL client and run:

  2. Start the replication on Server 2:

  3. Check the status of replication on Server 2:

    • Look for Slave_IO_Running: Yes and Slave_SQL_Running: Yes in the output. If both are Yes, replication is working.


Step 6: Verify and Test the Setup

  1. Test replication by inserting data into Server 1:

  2. Check if the data appears on Server 2:

    • On Server 2, run:

    You should see the data inserted on Server 1 appearing on Server 2.

  3. Repeat the same on Server 2, inserting data into Server 2, and check if it appears on Server 1.


Step 7: Monitor Replication

  1. Regularly monitor the replication status using:

    • Ensure that both Slave_IO_Running and Slave_SQL_Running are Yes.

  2. Check for any replication errors. If you encounter errors, resolve them before proceeding to prevent data inconsistencies.


Last updated