mysqldump Error 2013


18

Ho un database installato, che vorrei fare il backup in mysql. Il problema mysqldumpnon riesce nell'esportazione della tabella "maia_mail"

# mysqldump -u root -p maia > maia.sql
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15

Funziona per meno di 30 secondi e viene visualizzato l'errore come sopra.

La dimensione totale del DB è di 1,3 GB con la tabella maia_mail di 1,0 GB

In my.cnfho questi set:

[mysqld]
max_allowed_packet      = 1300M
[mysqldump]
max_allowed_packet      = 1300M

Si prega di avvisare o fornire alcune indicazioni su come scaricare il database?


170 GB di spazio libero. È anche lo stesso se dump su machine db è acceso o remoto
garfink

copie della posta elettronica quindi dati varchar principalmente
garfink

il 1300M è stato un recente cambiamento, il problema esisteva anche quando era impostato sui 16M predefiniti. Anche il server è stato riavviato dopo la modifica a 1300M.
Garfink,

Sono tornato al valore predefinito 16M. dump produce lo stesso errore 2013 nella riga 15
garfink

Risposte:


13

Potrei facilmente suggerire di cambiare le impostazioni di InnoDB che potrebbero essere un po 'pesanti solo per far funzionare un mysqldump. Potrebbe non piacerti quello che sono riguardo al suggerimento, ma credo che sia la tua (unica) migliore opzione. Eccolo:

SUGGERIMENTO # 1: disabilita gli inserti estesi

L'impostazione predefinita per mysqldump includerebbe raggruppare centinaia o migliaia di righe in un singolo INSERT. Questo è noto come INSERT esteso. Sta causando un po 'di superamento oltre a max_allowed_packet .

Ho risposto a un post su Sep 01, 2011(il server MySQL è andato via ostacolando l'importazione di grandi dump ) in cui ho discusso di fare la stessa cosa per importare un grande mysqldump. Credo che disabilitare la INSERT estesa sarebbe di aiuto anche nella creazione di un problematico mysqldump.

mysqldump -u root --skip-extended-insert -p maia > maia.sql

Cattive notizie: cosa succede nel creare un comando INSERT per ogni riga. Ciò aumenterà sicuramente il tempo necessario per eseguire mysqldump. Di conseguenza, aumenterà anche il tempo necessario per ricaricare (probabilmente con un fattore di 10-100.

Ho discusso skip-extended-insertprima

SUGGERIMENTO # 2: scarica i dati binari come esadecimali (OPZIONALE)

Per rendere i dati binari del mysqldump più byte portatili, scaricare tali dati in esadecimali

mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql

Cattive notizie: gonferà un po 'di più il mysqldump

PROVACI !!!

Nota a margine : la dimensione massima di max_allowed_packet è 1G


5

Stavo anche ottenendo lo stesso errore durante il tentativo di scaricare il database da 12 GB. Ho fatto le seguenti modifiche per farlo funzionare.

  1. configurato max_allowed_packet su 1024M
  2. configurato net_read_timeout a 7200
  3. configurato net_write_timeout a 7200

Nota: so che i valori di timeout sono troppo alti (7200 secondi, cioè 20 ore). Ma l'ho fatto intenzionalmente solo per escludere qualsiasi possibilità. Sono in procinto di trovare un valore di timeout ottimale.


2
Per altri utenti: si tratta di impostazioni sul server, non nel file di configurazione mysqldump. Inoltre, 7200 secondi sono 2 ore, non 20.
Segna il

set global net_read_timeout = 120; imposta net_write_timeout globale = 900; ha funzionato per me
kasi,

2

Includere semplicemente quanto segue nel file di configurazione my.ini (Windows) o my.cnf (Linux).

[mysqld]
max_allowed_packet=1024M 

[mysqldump]
max_allowed_packet=1024M 
net_read_timeout=3600 
net_write_timeout=3600

2
Le sezioni dovrebbero essere al contrario.
OrangeDog,

1

Assicurati di avere memoria sufficiente per eseguire il dump. Continua a controllare la memoria mentre esegui il dump, ad esempio usando un comando come questo:

free -mt

Se esaurisci la memoria mentre prendi la discarica, otterrai

mysqldump: errore 2013: connessione persa


1

Ho trovato:

--max-allowed-packet=1G --net-buffer-length=32704

... lo fa funzionare dove prima (in modo affidabile) non funzionava, nonostante le modifiche al timeout di lettura / scrittura netta, keepalive TCP ecc.

Le max_allowed_packetimpostazioni da sole non lo hanno fatto funzionare, quindi potrebbe non essere necessario se net_buffer_lengthutilizzato. - ralph-bolton

Modifica max-allowed-packete net-buffer-lengthsembra molto meglio della disabilitazione di inserti estesi. - kristofer

Vedi anche Che max_allowed_packet è abbastanza grande e perché devo cambiarlo?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.