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.

1voto

Dmytro Gierman Punkte 302

Aufgrund von https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_lock-tables :

Einige Optionen, wie --opt (standardmäßig aktiviert), aktivieren automatisch --lock-tables. Wenn Sie dies außer Kraft setzen wollen, verwenden Sie --skip-lock-tables am Ende der Optionsliste.

1voto

user14570900 Punkte 51

Wenn Sie den Percona XtraDB Cluster verwenden - Ich habe festgestellt, dass das Hinzufügen von --skip-add-locks
für den Befehl mysqldump Ermöglicht es dem Percona XtraDB Cluster, die Dump-Datei auszuführen ohne ein Problem mit LOCK TABLES-Befehlen in der Dump-Datei.

0voto

Andrés Morales Punkte 793

Eine weitere späte Antwort:

Wenn Sie versuchen, eine Hot Copy der Server-Datenbank (in einer Linux-Umgebung) zu erstellen und die Datenbank-Engine aller Tabellen MyISAM ist, müssen Sie devrait verwenden. mysqlhotcopy .

Entsprechend der Dokumentation:

Es verwendet FLUSH TABLES, LOCK TABLES und cp oder scp, um eine Datenbank zu erstellen Sicherung. Es ist ein schneller Weg, um eine Sicherung der Datenbank oder einzelner Tabellen zu erstellen, aber es kann nur auf demselben Rechner ausgeführt werden, auf dem sich die Datenbankverzeichnisse befinden. Verzeichnisse befinden. mysqlhotcopy funktioniert nur für Backups von MyISAM- und ARCHIVE-Tabellen.

Le site LOCK TABLES Zeit hängt von der Zeit ab, in der der Server die MySQL-Dateien kopieren kann (er macht keinen Dump).

-3voto

augustomen Punkte 7810

Da keiner dieser Ansätze bei mir funktionierte, habe ich einfach einen gemacht:

mysqldump [...] | grep -v "LOCK TABLE" | mysql [...]

Ausgeschlossen werden sowohl LOCK TABLE <x> y UNLOCK TABLES Befehle.

Anmerkung: Hoffentlich enthalten Ihre Daten diese Zeichenfolge nicht!

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