Ho trovato numerosi siti che parlano esattamente di questo, ma mi mancano alcuni dettagli importanti. I passaggi generali sono
- Correre
FLUSH TABLES WITH READ LOCK
- Scatta l'istantanea ZFS
- Correre
UNLOCK TABLES
Varie fonti riportano che InnoDB, che sto usando, in realtà non onora un FLUSH
. Il manuale dell'utente di MySQL indica che esiste una FLUSH TABLES...FOR EXPORT
variante per l'utilizzo con InnoDB, ma che richiede di specificare ciascuna tabella singolarmente, anziché eseguire il backup dell'intero database. Preferirei evitare di specificare ogni tabella singolarmente perché esiste una buona possibilità che l'elenco delle tabelle diventi non sincronizzato con le tabelle che esistono effettivamente.
L'altro problema che ho è che ho pianificato di fare qualcosa del genere mysql -h"$HOST" -u"$USERNAME" -p"$PASSWORD" --execute="FLUSH TABLES WITH READ LOCK"
. Tuttavia, questo rilascia il blocco immediatamente dopo la chiusura della sessione. Questo ha senso, ma è anche piuttosto fastidioso poiché devo tenere il blocco di lettura quando scatto la mia istantanea.
L'altra mia idea è quella di fare un backup a caldo usando uno strumento come Percona XtraBackup e scattare istantanee del backup, ma preferirei non pagare il costo per scrivere tutti i miei dati in una seconda posizione solo per fare un'istantanea.