Mysql
 sql >> Base de données >  >> RDS >> Mysql

Sauvegarde MySQL :puis-je copier des fichiers de table MyISAM individuels sur un autre serveur avec une version MySQL différente et un système d'exploitation différent ?

Seules les tables MyISAM de copie de niveau fichier entre les versions de serveurs avec le même :
- CPU 'endian' ( SPARC !=x86 )
- Les versions MySQL peuvent être mises à niveau sans conversion (copie 5.0.48 vers 5.0 .52 est mauvais à cause des changements de structure d'index, mais la copie de 5.0.52 vers 5.1.45 est valide).

Méfiez-vous des conditions de concurrence... Vous accédez peut-être aux fichiers via FTP ou un autre outil, pendant que la base de données lit la table. Il existe des « compteurs » de table mis à jour dans le .MYI, même pour les lectures de table les plus bénignes.

J'ai trouvé que ce qui suit assurera l'intégrité des tables MyISAM pour toute manipulation au niveau des fichiers :

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;

Si vous ne verrouillez PAS votre table en écriture, mysql peut y accéder (en lecture ou en écriture) pendant que vous effectuez votre copie/manipulation au niveau du fichier.

C'est également le même mécanisme utilisé pour autoriser 'myisampack', 'myisamchk' pour les tables d'une base de données HOT qui a même le verrouillage externe désactivé, sans souci de corruption.

--J Jorgenson --