Domanda

Voglio eseguire l'importazione di un file di grandi dimensioni in MySQL. Tuttavia, non voglio scritto al log binario, perché l'importazione ci vorrà molto tempo, e causare gli schiavi a cadere lontano dietro. Avrei preferito eseguo separatamente sugli slave, dopo il fatto, perché sarà molto più facile sul sistema. La tabella in questione è uno nuovo, e quindi non hanno davvero preoccupare ottenere fuori sincronia, come il master e tutti gli slave avrà gli stessi dati, alla fine, perché saranno tutti di importazione lo stesso file infine. Anche io non voglio cambiare una delle * replicare-ignore- o le opzioni binlog_ignore- *, perché richiedono un riavvio dei server in questione. C'è un modo per eseguire un una singola query senza scrivere al log binario?

Ho già conosce la risposta, ma non riuscivo a trovare molto facilmente in rete, quindi mi sto lasciando qualcuno inviare la risposta per ottenere alcuni punti rep. Se non ci sono risposte in un po 'di bianco vi posterò la risposta che ho trovato.

È stato utile?

Soluzione

È possibile utilizzare la sql-log- variabile di sessione bin per disattivare la registrazione per la sessione corrente. Basta semplicemente digitare:

SET sql_log_bin = 0;

e tutte le query sul tuo sessione corrente non verranno inviati al log binario. Se si vuole tornare indietro registrazione binaria su, run:

SET sql_log_bin = 1;

Questa è solo per la sessione attualmente in esecuzione si è in. Tutte le altre richieste da tutti gli altri collegamenti saranno ancora continuato ad essere registrato. Inoltre, è necessario disporre dei privilegi SUPER per questo al lavoro.

Altri suggerimenti

Se si vuole fare questo dal cli, provate questo, ha funzionato per me:

$ mysqldump old_DB | mysql --init-command="SET SQL_LOG_BIN = 0;" new_DB

Possibile che il parametro "init-comando" è stato aggiunto in una versione di MySQL più recente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top