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

Hvordan får man et korrekt dump ved hjælp af mysqldump og single-transaction, når DDL bruges på samme tid?

Åbn en mysql kommandovindue og udsend denne kommando:

mysql> FLUSH TABLES WITH READ LOCK;

Dette låser alle tabeller i alle databaser på denne MySQL-instans, indtil du udsteder UNLOCK TABLES (eller afbryd klientforbindelsen, der holder disse læselåse).

For at bekræfte dette kan du åbne et andet kommandovindue og prøve at lave en ALTER , DROP , RENAME eller TRUNCATE . Disse kommandoer hænger og venter på, at læselåsen udløses. Tryk på Ctrl-C for at afslutte ventetiden.

Men mens tabellerne har en læselås, kan du stadig udføre en mysqldump backup.

FLUSH TABLES WITH READ LOCK kommando kan være det samme som at bruge --lock-all-tables mulighed for mysqldump . Det er ikke helt klart, men dette dokument synes at understøtte det:

Begge FLUSH TABLES WITH READ LOCK og --lock-all-tables bruge sætningen "global læselås", så jeg tror, ​​det er sandsynligt, at disse gør det samme. Derfor bør du være i stand til at bruge denne mulighed til at mysqldump og beskytte mod samtidige ALTER, DROP, RENAME og TRUNCATE.

Vedr. din kommentar:Følgende er fra Guilhem Bichot i MySQL-fejlloggen, som du linkede til:

Ud fra dette lyder det, som om du ikke kan få samtidig adgang under en sikkerhedskopiering og samtidig blokere ALTER, DROP, RENAME og TRUNCATE.



  1. Få Hibernate og SQL Server til at spille godt med VARCHAR og NVARCHAR

  2. Hvad er den bedste måde at implementere en beskedkøtabel på i mysql

  3. Mysql - Lagret procedure OUT variabel returnerer null

  4. SQLite fælder og faldgruber