Domanda

Sembra che un database MySQL che ha un tavolo con decine di milioni di record otterrà una grande dichiarazione INSERT INTO quando il seguente

mysqldump some_db > some_db.sql

è fatto per il backup del database. (È 1 istruzione di inserimento che maniglie tutti i record?)

Così, quando ricostruire il DB usando

mysql some_db < some_db.sql

, allora la CPU è quasi mai trafficata (circa il 1,8% l'utilizzo dal processo mysql ... non vedo un mysqld sia?) E anche il disco rigido non sembra essere troppo occupato ...

L'ultima volta, l'intero processo di ripristino sono voluti 5 ore. C'è un modo per renderlo più veloce? Ad esempio, quando si fa mysqldump, può rompere la dichiarazione INSERT in quelli più brevi, in modo che il mysql non ha bisogno di analizzare la riga così difficile quando si ripristina il DB?

È stato utile?

Soluzione

Se qualcosa sta usando il tempo, sarà mysqld, questo è quello che in realtà fa tutto il lavoro. Se ci si collega a un server MySQL remoto allora mysqld sarà su quella macchina, non è quello locale.

Il modo più diretto per accelerarlo sarebbe quello di rimuovere tutte le chiavi e gli indici della tabella e quindi creare una volta i dati vengono caricati. Tenere tutto aggiornato in tutto che molti inserti può essere molto tassazione su un server, e probabilmente indurrà a finire con gli indici frammentati in ogni modo. Ci si può aspettare la creazione dell'indice, alla fine degli inserti di prendere un po ', ma non sarà così male come tenerli tutti aggiornati, come gli inserti sono in corso.

Una migliore soluzione sarebbe quella di smettere di usare mysqldump per la tabella e passare all'utilizzo LOAD DATA INFILE (con il SELECT ... INTO OUTFILE corrispondenza per la creazione della discarica).

La tua migliore scommessa in assoluto sarebbe quella basta copiare i file di database invece di cercare di fare un backup e ripristino. Penso che questo ancora funziona solo con i database MyISAM e non InnoDB, ma qualcun altro mi può correggere se le cose sono cambiate di recente.

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