2008-12-10 13 views
6

In MySQL, usando la replica basata sull'istruzione presumo che ogni istruzione SQL venga eseguita sullo slave esattamente allo stesso modo del master. Tuttavia, quando si esegue l'istruzione:Come funziona 'LOAD DATA INFILE' nella replica basata su istruzioni?

LOAD DATA INFILE 'filename' INTO SomeTable; 

Non sono sicuro se il file deve esistere sullo slave allo stesso modo a esso fa sul master. Qualcuno può indicarmi la documentazione di questa funzione?

risposta

5

Sembra che il file caricato con il master su LOAD DATA INFILE venga trasferito automaticamente dal registro di replica dal master allo slave. Lo slave carica questi file quando arriva allo LOAD DATA INFILE nella coda di replica basata sull'istruzione.

sto dedurre questo da un paio di dichiarazioni nei documenti:

16.1: Backing Up Replication Slaves

Se il server MySQL è un server di replica schiava , quindi a prescindere il metodo di backup scegliere, si deve anche eseguire il backup dei file master.info e relay-log.info quando si esegue il backup dei dati dello slave per . Questi file sono sempre necessari per riprendere la replica dopo il ripristino dei dati dello slave. Se lo slave è soggetto alla replica dei comandi LOAD DATA INFILE, è necessario eseguire anche i file SQL_LOAD- * che nella directory specificata dall'opzione --slave-load-tmpdir.

16.1.2.3: Replication Slave Options and Variables

Quando processi SQL slave replica una dichiarazione DATA INFILE carico, estrae il file da caricare dal relay log in file temporanei, e poi carica questi nel tavolo. Se il file caricato sul master è enorme, anche i file temporanei sullo slave sono enormi. Pertanto, potrebbe essere consigliabile utilizzare questa opzione per indicare a lo slave di mettere i file temporanei in una directory che si trova in un filesystem che ha molto spazio disponibile. Nel caso , i log del relay sono enormi come , quindi potresti anche voler utilizzare l'opzione --relay-log per inserire i log di relay in quel filesystem.

Problemi correlati