Kopiuj tylko tabele MyISAM na poziomie plików między wersjami serwerów z tymi samymi:
- CPU 'endian' ( SPARC !=x86 )
- Wersje MySQL można aktualizować bez konwersji (kopia 5.0.48 do 5.0 .52 jest zły z powodu zmian w strukturze indeksu, ale kopia 5.0.52 do 5.1.45 jest prawidłowa).
Uważaj na warunki wyścigu... Możesz uzyskiwać dostęp do plików za pomocą FTP lub innego narzędzia, podczas gdy baza danych odczytuje tabelę. Istnieją zaktualizowane „liczniki” tabeli w .MYI nawet dla najbardziej łagodnych odczytów tabeli.
Odkryłem, że następujące elementy zapewnią integralność tabel MyISAM przy każdej manipulacji na poziomie pliku:
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;
Jeśli NIE zapiszesz swojej tabeli z blokadą, mysql może uzyskać do niej dostęp (odczytuje lub zapisuje) podczas kopiowania/manipulacji na poziomie plików.
Jest to również ten sam mechanizm, który umożliwia „myisampack”, „myisamchk” dla tabel w bazie danych HOT, która ma nawet wyłączone zewnętrzne blokowanie, bez obaw o uszkodzenie.
-- Jorgenson --