Kopieren Sie MyISAM-Tabellen nur auf Dateiebene zwischen Versionen von Servern mit demselben:
- CPU 'endian' ( SPARC !=x86 )
- MySQL-Versionen können ohne Konvertierung aktualisiert werden (Kopie von 5.0.48 auf 5.0 .52 ist aufgrund von Änderungen der Indexstruktur schlecht, aber 5.0.52-Kopie nach 5.1.45 ist gültig).
Achten Sie auf Race Conditions... Möglicherweise greifen Sie mit FTP oder einem anderen Tool auf die Dateien zu, während die Datenbank die Tabelle liest. Es gibt Tabellenzähler, die innerhalb der .MYI-Datei selbst für die harmlosesten Tabellenlesevorgänge aktualisiert werden.
Ich habe festgestellt, dass Folgendes die Integrität von MyISAM-Tabellen für jede Manipulation auf Dateiebene sicherstellt:
LOCK TABLE x WRITE;
FLUSH TABLE x; -- closes all file handles into table by mysql.
< perform file-level manipulations >
FLUSH TABLE x; -- A 'stat' of the table occurs and info-schema is updated appropriately.
UNLOCK TABLES;
Wenn Sie Ihre Tabelle NICHT sperren und schreiben, kann mysql darauf zugreifen (lesen oder schreiben), während Sie Ihre Kopie/Manipulation auf Dateiebene durchführen.
Dies ist auch derselbe Mechanismus, der verwendet wird, um 'myisampack', 'myisamchk' für Tabellen in einer HOT-Datenbank zuzulassen, die sogar externes Sperren deaktiviert hat, ohne sich Sorgen um Beschädigung machen zu müssen.
-- J. Jorgenson --