MySQL Replicatie instellen (Master-Slave)
MySQL Replicatie
Met MySQL replicatie kunt u gegevens automatisch kopiëren van één MySQL-server (de master) naar één of meerdere slave-servers. Deze vorm van database-replicatie wordt veel gebruikt voor load balancing, back-ups, failover-oplossingen en het verhogen van de beschikbaarheid van databases.
MySQL-replicatie werkt asynchroon. Dit betekent dat de slave-server niet voortdurend verbonden hoeft te zijn met de master om wijzigingen te ontvangen. Hierdoor is replicatie ook mogelijk via langzame of niet-permanente netwerkverbindingen.
Afhankelijk van de configuratie kunt u:
- Alle databases repliceren.
- Specifieke databases repliceren.
- Alleen geselecteerde tabellen repliceren.
Stap 1: Master-server configureren
Open het MySQL-configuratiebestand:
vi /usr/local/my.cnf
Voeg de onderstaande configuratie toe of pas deze aan. Vervang de IP-adressen, gebruikersnamen en wachtwoorden door uw eigen gegevens.
[mysqld]
log-bin
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
master-host = 192.168.100.69
master-user = slave1_user
master-password = slave1_password
master-connect-retry = 60
replicate-do-db = pdns
binlog-do-db = pdns
binlog-ignore-db = mysql
Replicatiegebruiker aanmaken
Maak een gebruiker aan die door de slave-server gebruikt wordt voor replicatie.
GRANT REPLICATION SLAVE ON *.* TO 'slave2_user'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Database exporteren
Maak vervolgens een back-up van de database die gerepliceerd moet worden.
mysqldump -u root -p pdns > export.sql
MySQL opnieuw opstarten
Sluit de MySQL-console af en herstart de MySQL-server zodat de configuratie actief wordt.
/usr/local/etc/rc.d/mysql-server restart
Stap 2: Slave-server configureren
Open het configuratiebestand:
vi /etc/my.cnf
Voeg de volgende configuratie toe:
[mysqld]
server-id = 2
Database aanmaken
Maak dezelfde database aan op de slave-server.
CREATE DATABASE pdns;
GRANT REPLICATION SLAVE ON *.* TO 'slave1_user'@'%' IDENTIFIED BY 'slave1_password';
FLUSH PRIVILEGES;
Database importeren
Importeer vervolgens de eerder gemaakte database-export.
mysql -u root -p pdns < export.sql
MySQL opnieuw opstarten
Herstart de MySQL-server zodat alle instellingen actief worden.
/usr/local/etc/rc.d/mysql-server restart
Stap 3: Replicatie op de master voorbereiden
Log opnieuw in op de master-server.
mysql -u root -p
Voer vervolgens de onderstaande opdrachten uit.
FLUSH TABLES WITH READ LOCK;
USE pdns;
SHOW MASTER STATUS;
Noteer de waarden van:
FilePosition
Deze gegevens zijn nodig bij de configuratie van de slave-server.
Stap 4: Slave verbinden met de master
Ga naar de slave-server en configureer de verbinding met de master.
Vervang hierbij:
MASTER_HOSTMASTER_USERMASTER_PASSWORDMASTER_LOG_FILEMASTER_LOG_POS
door de juiste waarden.
CHANGE MASTER TO
MASTER_HOST='81.4.79.81',
MASTER_USER='slave1_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='ns1-bin.000001',
MASTER_LOG_POS=98;
START SLAVE;
Wanneer de configuratie correct is uitgevoerd, zal de slave-server automatisch wijzigingen van de master-server synchroniseren.
Handige MySQL Replicatie-commando’s
Controleer de status van de replicatie met de volgende opdrachten.
SHOW MASTER STATUS;
SHOW SLAVE STATUS;
SHOW PROCESSLIST;
Met name SHOW SLAVE STATUS is belangrijk. Controleer of zowel:
Slave_IO_Running: YesSlave_SQL_Running: Yes
op Yes staan. Alleen dan functioneert de MySQL-replicatie correct.
Conclusie
Met MySQL Master-Slave replicatie creëert u een betrouwbare omgeving waarin databases automatisch worden gesynchroniseerd. Dit verhoogt de beschikbaarheid van uw applicaties en maakt het eenvoudiger om back-ups, failover-oplossingen en leesverkeer over meerdere servers te verdelen.
Gerelateerde onderwerpen
- MySQL Replicatie
- MySQL Master-Slave
- Database Replicatie
- MySQL Replication
- MySQL High Availability
- MySQL Backup