Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysqldump-Parallelität

Nun, das ist nicht sicher, aus dem Mysql-Handbuch :

Diese Option sendet eine START TRANSACTIONSQL-Anweisung an den Server, bevor Daten ausgegeben werden. Es ist nur bei Transaktionstabellen wie InnoD und BDB sinnvoll, da es dann den konsistenten Zustand der Datenbank zum Zeitpunkt der Ausgabe von BEGIN ausgibt, ohne Anwendungen zu blockieren.

Wenn Sie diese Option verwenden, sollten Sie bedenken, dass nur InnoDB-Tabellen in einem konsistenten Zustand ausgegeben werden. Beispielsweise können alle MyISAM- oder MEMORY-Tabellen, die während der Verwendung dieser Option ausgegeben werden, immer noch ihren Status ändern.

Während ein --single-transaction Dump verarbeitet wird, sollte keine andere Verbindung die folgenden Anweisungen verwenden, um sicherzustellen, dass eine gültige Dumpdatei (korrekter Tabelleninhalt und binäre Protokollkoordinaten) vorhanden ist:ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATETABLE. Ein konsistenter Lesevorgang wird nicht von diesen Anweisungen isoliert, daher kann ihre Verwendung auf eine zu sichernde Tabelle dazu führen, dass das SELECT, das von mysqldump ausgeführt wird, um den Tabelleninhalt abzurufen, falsche Inhalte erhält, oder fehlschlägt.

Die Option --single-transaction und die Option --lock-tables schließen sich gegenseitig aus, da LOCK TABLES bewirkt, dass alle anstehenden Transaktionen implizit festgeschrieben werden.

Diese Option wird für MySQLCluster-Tabellen nicht unterstützt; Die Konsistenz der Ergebnisse kann nicht garantiert werden, da die NDBCLUSTER-Speicher-Engine nur die Transaktionsisolationsebene READ_COMMITTED unterstützt. Sie sollten stattdessen immer NDBbackup und Restore verwenden.

Um große Tabellen zu sichern, sollten Sie die Option --single-transaction mit --quick kombinieren.

Wenn Sie Ihre Live-Datenbank sichern/verschieben möchten, sollten Sie MySQL-Replikation