MySQL replicatie zorgt ervoor dat wijzigingen op een hoofddatabase (master) automatisch worden gekopieerd naar een of meerdere kopieΓ«n (slaves). Dit gebruik je voor uitvalbeveiliging, het verdelen van leesverkeer of als extra back-uplaag. In dit artikel lees je hoe replicatie werkt, hoe je het stap voor stap instelt en welke valkuilen je moet vermijden.
Wat is MySQL replicatie
Bij MySQL replicatie stuurt de master-server een logboek van alle schrijfacties (de binary log) naar een of meerdere slave-servers. De slave voert diezelfde acties lokaal uit, waardoor de data gesynchroniseerd blijft. Dit gebeurt vrijwel realtime, al is er altijd een kleine vertraging tussen de master en slave.
Replicatie wordt vaak gebruikt voor: een actuele back-up op een andere server, het verdelen van leesbelasting over meerdere servers, of het opzetten van een failover-omgeving. Let op: replicatie is geen vervanging voor een volwaardige back-upstrategie, omdat foutieve of schadelijke queries ook naar de slave worden doorgezet.
Voorbereiding op de master
Voordat je replicatie instelt, moet je de master-server voorbereiden. Dit doe je door binary logging te activeren en een apart gebruikersaccount aan te maken dat de slave gebruikt om verbinding te maken.
Open het MySQL-configuratiebestand (meestal my.cnf of my.ini) en zorg dat de volgende instellingen aanwezig zijn onder [mysqld]:
log_bin = mysql-bin
server_id = 1
Herstart de MySQL-service na het aanpassen van de configuratie. Elke server in een replicatie-opzet moet een uniek server_id hebben, dus geef de slave bijvoorbeeld server_id = 2.
Stap-voor-stap replicatie instellen
Volg onderstaande stappen om een werkende master-slave replicatie op te zetten.
Maak een replicatiegebruiker aan
Log in op de master en maak een gebruiker die alleen replicatierechten heeft: CREATE USER 'replica'@'%' IDENTIFIED BY 'wachtwoord'; GRANT REPLICATION SLAVE ON . TO 'replica'@'%';
Noteer de masterstatus
Voer op de master SHOW MASTER STATUS; uit en onthoud de bestandsnaam en positie. Deze gegevens heb je nodig om de slave op het juiste punt te laten starten.
Maak een export van de database
Exporteer de bestaande data met mysqldump zodat de slave met dezelfde startsituatie begint. Importeer dit bestand op de slave-server.
Koppel de slave aan de master
Voer op de slave het volgende uit, met de gegevens uit stap 2: CHANGE MASTER TO MASTER_HOST='masterip', MASTER_USER='replica', MASTER_PASSWORD='wachtwoord', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=12345;
Start de replicatie
Voer START SLAVE; uit en controleer vervolgens met SHOW SLAVE STATUSG of Slave_IO_Running en Slave_SQL_Running beide op Yes staan.
Beheer, controle en veelgemaakte fouten
Controleer regelmatig de replicatiestatus met SHOW SLAVE STATUSG. Let vooral op het veld Seconds_Behind_Master, dat aangeeft hoeveel vertraging er is. Een oplopende waarde kan duiden op een trage verbinding of een zware query die de slave vertraagt.
Veelgemaakte fouten zijn: vergeten om een uniek server_id in te stellen, firewallregels die het verkeer tussen master en slave blokkeren, en het niet synchroniseren van de startpositie waardoor de slave data mist. Controleer ook of beide servers dezelfde MySQL-versie draaien, om compatibiliteitsproblemen te voorkomen.
Wil je replicatie gebruiken als onderdeel van een bredere migratie, bijvoorbeeld bij het overstappen naar Tandata, dan is het verstandig om eerst te testen op een kopie van de omgeving voordat je live gaat. Zo voorkom je dataverlies tijdens de overgang.
Veelgestelde vragen
Kan ik meerdere slaves aan één master koppelen?
Ja, één master kan data repliceren naar meerdere slaves. Elke slave heeft wel een eigen uniek server_id nodig en een eigen verbinding met de master.
Is replicatie hetzelfde als een back-up?
Nee. Replicatie kopieert wijzigingen direct door, dus foutieve verwijderingen of schadelijke queries worden ook naar de slave gestuurd. Gebruik replicatie als aanvulling op, niet als vervanging van, dagelijkse back-ups.
Wat doe ik als de replicatie vastloopt?
Controleer eerst de foutmelding met SHOW SLAVE STATUS. Vaak gaat het om een conflicterende query. Je kunt deze overslaan of de replicatie opnieuw synchroniseren vanaf een verse export van de master.
Werkt replicatie ook tussen servers bij verschillende providers?
Ja, zolang de servers elkaar kunnen bereiken via het netwerk en de juiste poorten open staan. Let op firewallinstellingen en gebruik bij voorkeur een beveiligde verbinding.
Heb ik replicatie nodig bij een kleine website?
Voor de meeste kleine websites volstaat gewone webhosting met dagelijkse back-ups. Replicatie is vooral nuttig bij hoge belasting, kritieke beschikbaarheid of het verdelen van leesverkeer.
Conclusie
MySQL replicatie is een krachtige manier om databases te synchroniseren tussen servers, mits je de stappen zorgvuldig volgt: binary logging activeren, een replicatiegebruiker aanmaken, de startpositie noteren en de koppeling testen. Combineer dit altijd met reguliere back-ups voor echte veiligheid. Bekijk onze webhosting of kennisbank voor meer technische achtergrondinformatie.