Datareplikering er processen med at kopiere dine data på tværs af flere servere for at forbedre datatilgængeligheden og forbedre en applikations pålidelighed og ydeevne. I MySQL replikering, kopieres data fra en database fra masterserveren til andre noder i realtid for at sikre konsistens af data og også for at give backup og redundans.
I denne guide viser vi, hvordan du kan konfigurere MySQL (Master-Slave ) replikering i RHEL-baserede distributioner såsom CentOS , Fedora , Rocky Linux, og AlmaLinux .
MySQL-replikeringsopsætning
Så her er vores MySQL opsætning af replikeringslaboratorium.
MySQL Master - 10.128.0.14MySQL Slave - 10.128.15.211
Lad os komme i gang...
Trin 1:Installer MySQL på master- og slaveserver
Vi starter med at installere MySQL database på både master og slave servere.
$ sudo dnf installer @mysql
Når installationen er fuldført, skal du gøre et punkt for at starte databaseserveren.
$ sudo systemctl start mysqld
Aktiver den derefter til at starte til systemstart eller ved genstart.
$ sudo systemctl aktiver mysqld
Bekræft derefter, at MySQL databaseserveren kører som vist:
$ sudo systemctl status mysqld
Trin 2:Sikker MySQL på master- og slaveserver
Det næste trin er at sikre MySQL database på både master og slave servere. Dette skyldes, at standardindstillingerne er usikre og præsenterer nogle smuthuller, som nemt kan udnyttes af hackere.
Så for at hærde MySQL skal du køre kommandoen:
$ sudo mysql_secure_installation
Først bliver du bedt om at indstille MySQL root-adgangskode. Sørg for at angive en stærk root-adgangskode, helst med mere end 8 tegn, som er en blanding af store bogstaver, små bogstaver, specialtegn og numeriske tegn.
For de resterende prompter skal du indtaste 'Y'
for at tilpasse databaseserveren til de anbefalede indstillinger.
Når du er færdig med at installere og hærde MySQL på master- og slaveknuden er det næste at konfigurere masterknuden.
Trin 3:Konfigurer Master Node (Server)
Det næste trin er at konfigurere Master node og tildel slaven node adgang til det. Først skal vi redigere mysql-server.cnf konfigurationsfil.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Tilføj følgende linjer under [mysqld]
afsnit.
bind-adresse =10.128.0.14server-id =1log_bin =mysql-bin
Når du er færdig, skal du gemme ændringerne og afslutte. Genstart derefter MySQL server.
$ sudo sysemctl genstart mysqld
Log derefter på MySQL skal.
$ sudo mysql -u root -p
Udfør følgende kommandoer for at oprette en databasebruger, der skal bruges til at binde masteren og slaven til replikering.
mysql> OPRET BRUGER 'replica'@'10.128.15.211' IDENTIFICERET AF '[email protected]';mysql> TILDEL REPLIKATIONSSLAVE PÅ *.*TIL 'replika'@'10.128.15.211';
Anvend ændringerne og afslut MySQL server.
mysql> FLUSH PRIVILEGES;mysql> AFSLUT;
Bekræft masterens status.
mysql> VIS MASTER STATUS\G
Noter filnavnet og positionen. Du får brug for dette senere, når du opsætter slaven til replikering. I vores tilfælde har vi filnavnet som mysql-bin.000001
og position 1232 .
Trin 4:Konfigurer slavenoden (server)
Gå nu tilbage til slaveknuden. Endnu en gang, rediger mysql-server.cnf konfigurationsfil.
$ sudo vim /etc/my.cnf.d/mysql-server.cnf
Som før, indsæt disse linjer under [mysqld]
afsnit. Skift IP-adressen, så den svarer til slavens IP. Tildel også et andet server-id . Her har vi tildelt den værdien 2 .
bind-adresse =10.128.15.211server-id =2log_bin =mysql-bin
Gem ændringerne og afslut filen. Genstart derefter databaseserveren.
$ sudo systemctl genstart mysqld
For at konfigurere slaven node for at replikere fra Master-noden, log ind på slavens MySQL-server.
$ sudo mysql -u root -p
Stop først og fremmest replikeringstrådene:
mysql> STOP SLAVE;
Udfør derefter følgende kommando for at konfigurere slavenoden til at replikere databaser fra masteren.
mysql> SKIFT MASTER TIL MASTER_HOST='10.128.0.14' , MASTER_USER='replika' , MASTER_PASSWORD='[email protected]' , MASTER_LOG_FILE='mysql-bin.000001' , MASTER>LOG_POS;12>LOGBemærk, at MASTER_LOG_FILE og MASTER_LOG_POS flag svarer til filen og positionen værdier fra Master node i slutningen af trin 1.
MASTER_HOST , MASTER_USER, og MASTER_PASSWORD svarer til henholdsvis Master IP-adressen, replikeringsbrugeren og replikeringsbrugerens adgangskode.
Start derefter slave-replikeringstrådene:
mysql> START SLAVE;Trin 4:Test af MySQL Master-Slave-replikering
For nu at teste, om replikering mellem master- og slaveknuden fungerer, skal du logge ind på MySQL-databaseserveren på masternoden:
$ sudo mysql -u root -pOpret en testdatabase. Her hedder vores testdatabase replikation_db .
mysql> OPRET DATABASE replikering_db;Bekræft eksistensen af databasen.mysql> VIS DATABASER;Gå nu over til slavenoden, log ind på MySQL-serveren og bekræft, at replikation_db database er til stede. Fra outputtet nedenfor kan vi se, at databasen er til stede. Dette er en bekræftelse af, at replikering har fundet sted fra masteren til slaveknuden.
mysql> VIS DATABASER;Og det er det, vi har med succes demonstreret, hvordan du kan konfigurere en MySQL master-slave-replikeringsmodel, der kan replikere databaser fra master-noden til slave-noden.