Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




6.1. Introduction to Replication

MySQL features support for one-way, asynchronous replication, in which one server acts as the master, while one or more other servers act as slaves. This is in contrast to the synchronous replication which is a characteristic of MySQL Cluster (see Chapter 16, MySQL Cluster).

In single-master replication, the master server writes updates to its binary log files and maintains an index of those files to keep track of log rotation. The binary log files serve as a record of updates to be sent to any slave servers. When a slave connects to its master, it informs the master of the position up to which the slave read the logs at its last successful update. The slave receives any updates that have taken place since that time, and then blocks and waits for the master to notify it of new updates.

A slave server can itself serve as a master if you want to set up chained replication servers.

Multiple-master replication is possible, but raises issues not present in single-master replication. See Section 6.15, “Auto-Increment in Multiple-Master Replication”.

When you are using replication, all updates to the tables that are replicated should be performed on the master server. Otherwise, you must always be careful to avoid conflicts between updates that users make to tables on the master and updates that they make to tables on the slave. Keep in mind as well that updates on the slave side might be affected differently depending on whether you are using statement-based or row-based replication. Consider the following scenario, where a row is inserted on the slave, followed by a statement on the master side that should empty the table:

slave> INSERT INTO tbl VALUES (1);
master> DELETE FROM tbl;

The master doesn't know about the INSERT operation on the slave server. With statement-based replication, tbl will be empty on both master and slave as soon as the slave catches up with the master, because the master sends its DELETE statement to the slave. As a result, tbl has the same contents on both servers. With row-based replication, the effect of the DELETE on the slave is different. The master writes to its binary log each row to be deleted from the table. The slave deletes only those rows, and not the row that was inserted on the slave side. As a result, the table has different contents on the master and server, which may cause replication problems.

For information about row-based replication, see Section 6.3, “Row-Based Replication”.

Replication offers benefits for robustness, speed, and system administration:

  • Robustness is increased with a master/slave setup. In the event of problems with the master, you can switch to the slave as a backup.

  • Better response time for clients can be achieved by splitting the load for processing client queries between the master and slave servers. SELECT queries may be sent to the slave to reduce the query processing load of the master. Statements that modify data should still be sent to the master so that the master and slave do not get out of synchrony. This load-balancing strategy is effective if non-updating queries dominate, but that is the normal case.

  • Another benefit of using replication is that you can perform database backups using a slave server without disturbing the master. The master continues to process updates while the backup is being made. See Section 5.9.1, “Database Backups”.

  Published under the terms of the GNU General Public License Design by Interspire