509 Stimmen

MySQLDump ohne Sperren von Tabellen ausführen

Ich möchte eine Live-Produktionsdatenbank in meine lokale Entwicklungsdatenbank kopieren. Gibt es eine Möglichkeit, dies zu tun, ohne die Produktionsdatenbank zu sperren?

Ich benutze derzeit:

mysqldump -u root --password=xxx -h xxx my_db1 | mysql -u root --password=xxx -h localhost my_db1

Aber es sperrt jede Tabelle, während sie läuft.

16voto

Lex Punkte 4182

Für InnoDB-Tabellen verwenden Sie das Flag --single-transaction

wird der konsistente Zustand der Datenbank zu dem Zeitpunkt ausgegeben, zu dem BEGIN ausgegeben wurde, ohne Anwendungen zu blockieren

MySQL DOKS

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction

13voto

dtbarne Punkte 7944

Das ist ungefähr so spät im Vergleich zu dem Kerl, der gesagt hat, dass er zu spät ist, wie er zu der ursprünglichen Antwort war, aber in meinem Fall (MySQL über WAMP auf Windows 7), musste ich verwenden:

--skip-lock-tables

11voto

mike Punkte 4561

Ehrlich gesagt, würde ich dafür eine Replikation einrichten, denn wenn Sie die Tabellen nicht sperren, erhalten Sie inkonsistente Daten aus dem Dump.

Wenn der Dump länger dauert, könnten sich Tabellen, die bereits gedumpt wurden, zusammen mit einer Tabelle, die erst gedumpt werden soll, geändert haben.

Sperren Sie also entweder die Tabellen oder verwenden Sie die Replikation.

6voto

naveen_sfx Punkte 687
    mysqldump -uuid -ppwd --skip-opt --single-transaction --max_allowed_packet=1G -q db |   mysql -u root --password=xxx -h localhost db

3voto

Samuel Diogo Punkte 505

Wenn Sie MySQL Workbench verwenden, klicken Sie beim Datenexport auf Erweiterte Optionen und deaktivieren Sie die Option "Lock-Tables".

enter image description here

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X