Hvordan sette opp MySQL-replikering i RHEL, Rocky og AlmaLinux
Datareplikering er prosessen med å kopiere dataene dine på tvers av flere servere for å forbedre datatilgjengeligheten og forbedre påliteligheten og ytelsen til en applikasjon. I MySQL-replikering kopieres data fra en database fra hovedserveren til andre noder i sanntid for å sikre konsistens av data og også for å gi sikkerhetskopiering og redundans.
I denne veiledningen viser vi hvordan du kan sette opp MySQL (Master-Slave) replikering i RHEL-baserte distribusjoner som CentOS, >Fedora, Rocky Linux, og AlmaLinux.
MySQL-replikeringsoppsett
Så her er vårt MySQL-replikeringslaboratorieoppsett.
MySQL Master - 10.128.0.14
MySQL Slave - 10.128.15.211
La oss komme i gang…
Trinn 1: Installer MySQL på Master og Slave Server
Vi starter med å installere MySQL-databasen på både master- og slave-servere.
sudo dnf install @mysql
Når installasjonen er fullført, gjør et poeng for å starte databaseserveren.
sudo systemctl start mysqld
Aktiver den deretter til å starte til systemoppstart eller ved omstart.
sudo systemctl enable mysqld
Deretter bekrefter du at MySQL-databasetjeneren kjører som vist:
sudo systemctl status mysqld
Trinn 2: Sikre MySQL på Master og Slave Server
Det neste trinnet er å sikre MySQL-databasen på både master- og slave-servere. Dette er fordi standardinnstillingene er usikre og presenterer noen smutthull som enkelt kan utnyttes av hackere.
Så for å herde MySQL, kjør kommandoen:
sudo mysql_secure_installation
Først må du angi MySQL-rotpassordet. Sørg for å oppgi et sterkt root-passord, helst med mer enn 8 tegn som er en blanding av store, små, spesielle og numeriske tegn.
For de resterende ledetekstene, skriv inn 'Y'
for å justere databaseserveren til de anbefalte innstillingene.
Når du er ferdig med å installere og herde MySQL på master- og slavenoden, er det neste å konfigurere masternoden.
Trinn 3: Konfigurer masternoden (server)
Det neste trinnet er å konfigurere Master-noden og gi slaven-noden tilgang til den. Først må vi redigere mysql-server.cnf konfigurasjonsfilen.
sudo vim /etc/my.cnf.d/mysql-server.cnf
Legg til følgende linjer under [mysqld]
-delen.
bind-address = 10.128.0.14
server-id = 1
log_bin = mysql-bin
Når du er ferdig, lagre endringene og avslutt. Start deretter MySQL-serveren på nytt.
sudo sysemctl restart mysqld
Deretter logger du på MySQL-skallet.
sudo mysql -u root -p
Utfør følgende kommandoer for å opprette en databasebruker som skal brukes til å binde masteren og slaven for replikering.
mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY 'P@ssword321';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';
Bruk endringene og gå ut av MySQL-serveren.
mysql> FLUSH PRIVILEGES;
mysql> EXIT;
Bekreft statusen til masteren.
mysql> SHOW MASTER STATUS\G
Legg merke til filnavnet og posisjonen. Du vil trenge dette senere når du setter opp slaven for replikering. I vårt tilfelle har vi filnavnet som mysql-bin.000001
og posisjon 1232.
Trinn 4: Konfigurer slavenoden (server)
Gå nå tilbake til slavenoden. Igjen, rediger mysql-server.cnf-konfigurasjonsfilen.
sudo vim /etc/my.cnf.d/mysql-server.cnf
Som før, lim inn disse linjene under [mysqld]
-delen. Endre IP-adressen slik at den samsvarer med slavens IP. Tilordne også en annen server-ID. Her har vi tildelt den verdien 2.
bind-address = 10.128.15.211
server-id = 2
log_bin = mysql-bin
Lagre endringene og avslutt filen. Start deretter databaseserveren på nytt.
sudo systemctl restart mysqld
For å konfigurere Slave-noden til å replikere fra Master-noden, logg inn på Slavens MySQL-server.
sudo mysql -u root -p
Stopp først og fremst replikeringstrådene:
mysql> STOP SLAVE;
Utfør deretter følgende kommando for å konfigurere slavenoden til å replikere databaser fra masteren.
mysql> CHANGE MASTER TO
MASTER_HOST='10.128.0.14' ,
MASTER_USER='replica' ,
MASTER_PASSWORD='P@ssword321' ,
MASTER_LOG_FILE='mysql-bin.000001' ,
MASTER_LOG_POS=1232;
Merk at MASTER_LOG_FILE- og MASTER_LOG_POS-flaggene tilsvarer filen og Posisjon-verdiene fra Master-noden på slutten av Trinn 1.
MASTER_HOST, MASTER_USER og MASTER_PASSWORD tilsvarer henholdsvis Master IP-adressen, replikeringsbrukeren og replikeringsbrukerens passord.
Start deretter slavereplikeringstrådene:
mysql> START SLAVE;
Trinn 4: Testing av MySQL Master-Slave-replikering
Nå, for å teste om replikering mellom master- og slavenoden fungerer, logg inn på MySQL-databaseserveren på masternoden:
sudo mysql -u root -p
Lag en testdatabase. Her heter testdatabasen vår replikasjon_db.
mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;
Gå nå over til slavenoden, logg på MySQL-serveren og bekreft at replication_db-databasen er til stede. Fra utdataene nedenfor kan vi se at databasen er til stede. Dette er en bekreftelse på at replikering har funnet sted fra masteren til slavenoden.
mysql> SHOW DATABASES;
Og det er det, vi har demonstrert hvordan du kan sette opp en MySQL master-slave-replikeringsmodell som kan replikere databaser fra masternoden til slavenoden.