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.