MySQL Replication Tutorial

MySQL gir asynkron replikering der en mester databasetjeneren er replikert til en eller flere slave server. Du kan konfigurere replikering for å inkludere alle eller utvalgte databaser eller bare velge tabeller. Replication kan du spre arbeidsmengden over flere slaver, utføre sikkerhetskopiering på slavene uten å ødelegge master, utføre analyser på slaver uten å påvirke ytelsen til master og distribuere data over lange avstander.

Det grunnleggende

Replication er utført gjennom de binære logger. Disse loggene inneholder alle uttalelser som oppdaterer data, inkludert uttalelser som potensielt kan oppdatere data, men ikke gjør det. Hovedserveren registrerer alle utsagnene, og serveren er konfigurert til å motta en kopi av loggen. Slavene kan konfigureres til å utføre hele loggen eller bare deler av det (for eksempel bare hendelser på enkelte databaser).

Replikering informasjonen blir lagret i en fil som heter "master.info", som er opprettet med "CHANGE MASTER FOR" statement. Denne filen inneholder informasjon om vertsnavnet til master, loggfilen navn og posisjon til å bli lest i loggfilen.

Den Replication Bruker

Slaven vil koble til master ved hjelp av en standard MySQL konto med "replikasjonsslave '" privilegium. Brukernavnet og passordet til denne kontoen vil bli lagret som en ren tekst oppføring i "master.info" filen, så det er best å lage en bruker som bare har replikering privilegier.

konfigurasjonsfiler

Hoved må ha binære logging aktivert for utveksling av data. Det må også være konfigurert med en unik server-id verdi. Disse verdiene er satt gjennom "my.cnf" filen som leses når serveren starter. Verdiene er plassert i "[mysqld]" -delen med følgende syntaks:

[Mysqld]
log-bin = mysql-bin
server-id = 1

Slave må også konfigureres med en unik "server-id" gjennom "my.cnf" fil. Binary logging trenger ikke å være aktivert, men det kan være nyttig for sikkerhetskopiering av data og gjenoppretting etter katastrofe.

Replication

For replikering å starte riktig, først klart ut master binærlogg med "FLUSH BORD MED LES LOCK," statement. Bruk deretter "SHOW MASTER STATUS" setningen for å finne den binære loggfilen navn og offset posisjon.

Lag et øyeblikksbilde av dataene på master databasen med "mysqldump" -verktøyet. Fra operativsystemet ledeteksten skriver "mysqldump --Alle-databaser --lock-all-bord> dbdump.db". Deretter, fra i mysql-klienten, skriver "UNLOCK tabeller;" statement å slippe lese låsen. Kopier "dbdump.db" fil til hver av slavene med kommandoen "mysql <dbdump.db" utstedt fra operativsystemets ledeteksten.

Endelig satt opp slavene til å koble til master med følgende kommando:

ENDRE MASTER FOR MASTER_HOST = 'master_host_name', MASTER_USER = 'replication_user_name', MASTER_PASSWORD = 'replication_password', MASTER_LOG_FILE = 'recorded_log_file_name', MASTER_LOG_POS = recorded_log_position

Endre variabelverdier å reflektere informasjonen for systemet.