LOAD DATA FROM MASTER
Sintassi
LOAD DATA FROM MASTER
Spiegazione
Questa funzionalità è deprecata. Si raccomanda di non usarla più. E' soggetta a rimozione in una futura versione di MariaDB.
Poiché l'implementazione corrente di LOAD DATA FROM MASTER
e LOAD TABLE FROM MASTER
è molto limitata, queste istruzioni sono deprecate nella versione 4.1 di MySQL e superiori. Verrà introdotta una tecnica più avanzata (chiamata "online backup") in una versione futura. Essa avrà il vantaggio aggiuntivo di funzionare con un maggior numero di Storage Engine.
Con MySQL 5.1 e precedenti, la soluzione alternativa raccomandata all'uso di LOAD DATA FROM MASTER
e LOAD TABLE FROM MASTER
è usare mysqldump o mysqlhotcopy. Quest'ultimo richiede Perl e due moduli Perl (DBI e DBD:mysql), e funziona solo con le tabelle MyISAM e ARCHIVE. Con mysqldump, si creano dump SQL sul master, che si dirigono (o si copiano) al client mysql dello slave. Ha il vantaggio di funzionare con tutti gli Storage Engine, ma può risultare piuttosto lento, perché funziona usando delle SELECT
.
Questa istruzione effettua un'istantanea del master e la copia nello slave. Aggiorna i valori si MASTER_LOG_FILE
e MASTER_LOG_POS
in modo che lo slave possa poi replicare partendo dalla posizione corretta. Vengono ignorate tutte le regole per l'esclusione dei database e delle tabelle, specificate con --replicate-*-do-*
e --replicate-*-ignore-*
. --replicate-rewrite-db
non è preso in considerazione, perché un utente potrebbe utilizzare tale opzione per ottenere una mappatura non univoca, come --replicate-rewrite-db="db1->db3"
e --replicate-rewrite-db="db2->db3"
, il che confonderebbe lo slave al momento di caricare le tabelle del master.
L'utilizzo di questa istruzione è soggetto alle seguenti condizioni:
- Funziona solo con le tabelle MyISAM. Se si tenta di caricare tabelle non MyISAM si ottiene il seguente errore:
ERROR 1189 (08S01): Net error reading from master
- Acquisisce un lock in lettura globale sul master mentre effettua l'istantanea, quindi durante tale operazione non verranno effettuate modifiche nel master.
Se si caricano tabelle di grandi dimensioni, potrebbe essere necessario incrementare i valori di net_read_timeout
e net_write_timeout
sia sul master sia sugli slave. Si veda Variabili server di sistema.
Si noti che LOAD DATA FROM MASTER
non copia le tabelle del database mysql. In questo modo è più semplice avere differenti utenti e permessi sul master e sullo slave.
Per utilizzare LOAD DATA FROM MASTER
, l'account che viene utilizzato per connettersi al master deve avere i privilegi RELOAD
e SUPER
sul master e il privilegio SELECT
su tutte le tabelle che si desidera caricare. Tutte le tabelle del master per le quali l'utente non dispone del permesso SELECT
vengono ignorate da LOAD DATA FROM MASTER
. Questo perché il master le nasconde all'utente: LOAD DATA FROM MASTER
chiama SHOW DATABASES
per conoscere i database del master da caricare, ma tale istruzione restituisce solo quei database sui quali l'utente ha qualche permesso. Dal lato slave, l'utente che esegue LOAD DATA FROM MASTER
deve avere i permessi per eliminare e ricreare i database e le tabelle da copiare.