Mysql
 sql >> Database >  >> RDS >> Mysql

Backup MySQL:posso copiare singoli file di tabelle MyISAM su un altro server con diverse versioni di MySQL e diversi sistemi operativi?

Copia solo a livello di file le tabelle MyISAM tra versioni di server con le stesse:
- CPU 'endian' ( SPARC !=x86 )
- Le versioni MySQL possono essere aggiornate senza conversione (copia 5.0.48 in 5.0 .52 non è valido a causa delle modifiche alla struttura dell'indice, ma la copia da 5.0.52 a 5.1.45 è valida).

Attenzione alle condizioni di gara... Potresti accedere ai file usando FTP o qualche altro strumento, mentre il database sta leggendo la tabella. Ci sono "contatori" di tabelle aggiornati all'interno di .MYI anche per le letture di tabelle più benigne.

Ho scoperto che quanto segue garantirà l'integrità delle tabelle MyISAM per qualsiasi manipolazione a livello di file:

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;

Se NON scrivi in ​​blocco la tua tabella, mysql potrebbe accedervi (legge o scrive) mentre stai facendo la tua copia/manipolazione a livello di file.

Questo è anche lo stesso meccanismo utilizzato per consentire 'myisampack', 'myisamchk' per le tabelle su un database HOT che ha anche il blocco esterno disabilitato, senza preoccupazioni di corruzione.

-- J Jorgenson --