Datareplikering är processen att kopiera dina data över flera servrar för att förbättra datatillgängligheten och förbättra tillförlitligheten och prestandan för en applikation. I MySQL replikering, data kopieras från en databas från huvudservern till andra noder i realtid för att säkerställa konsistens av data och även för att tillhandahålla backup och redundans.
I den här guiden visar vi hur du kan ställa in MySQL (Mästare-Slav) replikering i RHEL-baserade distributioner Till exempel CentOS, Fedora, Rocky Linux, och AlmaLinux.
Så här är vår MySQL inställning av replikeringslabb.
MySQL Master - 10.128.0.14. MySQL-slav - 10.128.15.211.
Låt oss börja…
Vi börjar med att installera MySQL databas på både bemästra och slav servrar.
$ sudo dnf installera @mysql.
När installationen är klar, gör en punkt för att starta databasservern.
$ sudo systemctl starta mysqld.
Aktivera sedan den för att starta till systemstart eller vid omstart.
$ sudo systemctl aktivera mysqld.
Bekräfta därefter att MySQL databasservern körs som visas:
$ sudo systemctl status mysqld.
Nästa steg är att säkra MySQL databas på både bemästra och slav servrar. Detta beror på att standardinställningarna är osäkra och uppvisar några kryphål som lätt kan utnyttjas av hackare.
Så, för att härda MySQL, kör kommandot:
$ sudo mysql_secure_installation.
Först måste du ställa in MySQL root-lösenord. Var noga med att ange ett starkt root-lösenord, helst med fler än 8 tecken som är en blandning av versaler, gemener, specialtecken och numeriska tecken.
För de återstående uppmaningarna, skriv in 'Y'
för att justera databasservern till de rekommenderade inställningarna.
När du är klar med installation och härdning MySQL på master- och slavnoden är nästa att konfigurera masternoden.
Nästa steg är att konfigurera Bemästra nod och bevilja slav nodåtkomst till den. Först måste vi redigera mysql-server.cnf konfigurationsfil.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf.
Lägg till följande rader under [mysqld]
sektion.
bind-adress = 10.128.0.14. server-id = 1. log_bin = mysql-bin.
När du är klar, spara ändringarna och avsluta. Starta sedan om MySQL server.
$ sudo sysemctl starta om mysqld.
Därefter loggar du in MySQL skal.
$ sudo mysql -u root -p.
Utför följande kommandon för att skapa en databasanvändare som kommer att användas för att binda master och slav för replikering.
mysql> SKAPA ANVÄNDARE 'replika'@'10.128.15.211' IDENTIFIERAD AV '[e-postskyddad]'; mysql> GRANTA REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';
Tillämpa ändringarna och avsluta MySQL server.
mysql> SPOLA PRIVILEGIER; mysql> AVSLUTA;
Verifiera masterns status.
mysql> VISA MASTER STATUS\G.
Notera filnamnet och positionen. Du kommer att behöva detta senare när du ställer in slaven för replikering. I vårt fall har vi filnamnet som mysql-bin.000001
och Position 1232.
Gå nu tillbaka till slavnoden. Än en gång, redigera mysql-server.cnf konfigurationsfil.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf.
Som tidigare, klistra in dessa rader under [mysqld]
sektion. Ändra IP-adressen så att den motsvarar slavens IP. Tilldela också en annan server-id. Här har vi tilldelat det värdet av 2.
bind-adress = 10.128.15.211. server-id = 2. log_bin = mysql-bin.
Spara ändringarna och avsluta filen. Starta sedan om databasservern.
$ sudo systemctl starta om mysqld.
För att konfigurera Slav nod för att replikera från masternoden, logga in på slavens MySQL-server.
$ sudo mysql -u root -p.
Först och främst, stoppa replikeringstrådarna:
mysql> STOPPA SLAV;
Kör sedan följande kommando för att konfigurera slavnoden för att replikera databaser från mastern.
mysql> ÄNDRA MASTER TILL MASTER_HOST='10.128.0.14', MASTER_USER='replika', MASTER_PASSWORD='[e-postskyddad]', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1232;
Observera att MASTER_LOG_FILE och MASTER_LOG_POS flaggor motsvarar filen och Placera värden från Bemästra nod i slutet av steg 1.
De MASTER_HOST, MASTER_USER, och HUVUDLÖSENORD motsvarar huvud-IP-adressen, replikeringsanvändaren respektive replikeringsanvändarens lösenord.
Starta sedan slavreplikeringstrådarna:
mysql> STARTA SLAV;
För att nu testa om replikering mellan master- och slavnoden fungerar, logga in på MySQL-databasservern på masternoden:
$ sudo mysql -u root -p.
Skapa en testdatabas. Här heter vår testdatabas replikeringsdb.
mysql> SKAPA DATABAS replikering_db;
Kontrollera att databasen finns.
mysql> VISA DATABASER;
Gå nu över till slavnoden, logga in på MySQL-servern och bekräfta att replikeringsdb databas finns. Från utgången nedan kan vi se att databasen finns. Detta är en bekräftelse på att replikering har skett från mastern till slavnoden.
mysql> VISA DATABASER;
Och det är det, vi har framgångsrikt visat hur du kan ställa in en MySQL master-slave replikeringsmodell som kan replikera databaser från masternoden till slavnoden.