This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-25. For the latest, interactive version please visit https://mariadb.com/kb/.

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.

Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.