sql >> Database teknologi >  >> RDS >> Mysql

Hvordan synkroniseres Mysql DB igen, hvis Master og slave har forskellige databaser i tilfælde af Mysql-replikering?

Dette er den fulde trinvise procedure for at gensynkronisere en master-slave-replikering fra bunden:

Hos masteren:

RESET MASTER;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

Og kopier værdierne for resultatet af den sidste kommando et eller andet sted.

Uden at lukke forbindelsen til klienten (fordi det ville frigive læselåsen), udsend kommandoen for at få et dump af masteren:

mysqldump -u root -p --all-databases > /a/path/mysqldump.sql

Nu kan du frigøre låsen, selvom dumpet ikke er afsluttet endnu. For at gøre det skal du udføre følgende kommando i MySQL-klienten:

UNLOCK TABLES;

Kopier nu dumpfilen til slaven ved hjælp af scp eller dit foretrukne værktøj.

Hos slaven:

Åbn en forbindelse til mysql og skriv:

STOP SLAVE;

Indlæs masterens datadump med denne konsolkommando:

mysql -uroot -p < mysqldump.sql

Synkroniser slave- og masterlogfiler:

RESET SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;

Hvor værdierne i ovenstående felter er dem, du kopierede før.

Skriv til sidst:

START SLAVE;

For at kontrollere, at alt fungerer igen, efter at have skrevet:

SHOW SLAVE STATUS;

du skal se:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

Det er det!



  1. Mere SQL, mindre kode, med PostgreSQL

  2. Sådan får du data fra de sidste 7 dage fra den nuværende dato og klokkeslæt til de sidste 7 dage i sql-serveren

  3. INSTR() Svarende til SQL Server

  4. Spark Dataframes UPSERT til Postgres Table