This article is a fraction of a Number of Articles on MySQL, to access them click here.
Replication
Replication is the ability to duplicate data changes that occur on one server to another.
Basic components
Servers | Master, Slave, Relay Slave |
Configuration files | |
Threads | Binlog dump thread, I/O Thread, SQL Thread |
Sequential files | Binary Log, Relay Log |
Basic uses of Replication
Use | Description |
Backup | Run backup operations that require (or not) taking the server offline |
Scale out | Add more slaves to improve read throughput |
Hot Standby | Provide a replacement for the master to reduce downtime |
Data Analysis | Perform resource-intensive operations on a slave to avoid conflicts with other active applications |
Debugging | Carry diagnoses of complex queries, and refine database design without risking effects to the production databases. |
Development | Provide near-production-quality data for development of new applications that represent actual data values, ranges, and size |
Replication – how it works?
- Slave connects to Master and I/O Thread asks for data
- Binlog dump thread sends contents to I/O Thread
- SQL Thread applies data
Basic rules
- Slave can have only one Master
- Master can have many Slaves
- Each server must have a unique server_id
- Slave can propagate changes from its Master and be Master for other Slaves (Relay Slave) – enable log_slave_updates
Basic configuration – Master
1. Changes in .cnf file |
[mysqld] server_id=N log_bin=mysql-bin |
2. Set up a special user |
mysql> CREATE USER ‘slaveuser’@’%’ IDENTIFIED BY ‘haslo’; mysql> GRANT REPLICATION SLAVE ON *.* TO ‘slaveuser’@’%’; mysql> flush privileges; |
3. Get coordinates of binary log |
mysql> FLUSH TABLES WITH READ LOCK; mysql> SHOW MASTER STATUS; mysql> UNLOCK TABLES; |
Basic configuration – Slave
1. Changes in .cnf file |
[mysqld] server_id=N |
2. Connect to Master |
mysql> CHANGE MASTER TO MASTER_HOST=’1.1.1.1’, MASTER_USER=’slaveuser’, MASTER_PASSWORD=’password’, MASTER_LOG_FILE=’mysql-bin.000001’, MASTER_LOG_POS=107; |
3. Start the thread on the slave |
mysql> START SLAVE; |
Formats of Replication
- SBR (statement-based replication)
- RBR (row-based replication)
- MFL (mixed format logging)
[myslqd]
binlog_format=…
Master/Slave – multiple slaves
- Usefull with few writes and many reads
- Different slave for different roles (indexes, storage engines)
- Slave as standby master (with no traffic than replication)
- One of slaves backup, training, development
- Problems:
–Does not protect from DROP TABLE operation
–No guarantee that data from Master will be transferred correctly on Slave
Master/Master
- Each server is Master and Slave of the other
- e.g. 2 geographically separated offices. Each needs own locally writable copy of data
- Problems:
–Simultaneously changes the same row
–Insert at the same time into table with AUTO_INCREMENT column
1 Comment
Articles on MySQL – Virtono Community · August 7, 2016 at 7:37 AM
[…] MySQL replication […]