2013-07-08 7 views
11

Sul server di sviluppo, ho provato a eseguire lo stesso script che uso da quasi un anno e alla fine ha ottenuto: mysqldump: Got errno 32 su writemysqldump: ho sbagliato errno 32 in scrittura: 'tutto ad un tratto' un sacco di spazio ancora ... installazione Drupal 6

La settimana scorsa, il sysadmin IT ha appena ripristinato il server virtuale a pochi giorni dal backup e tutto ha funzionato.

L'installazione di Drupal va bene e il server live va bene (un duplicato del server di sviluppo) ... abbiamo circa 30 server virtuali tutti sulla stessa scatola e l'IT SysAdmin ha assegnato un bel po 'di risorse.

Ecco quello che ottengo con df -h sul dev:

Filesystem  Size Used Avail Use% Mounted on 
/dev/sda1  18G 6.1G 12G 36%/
udev   1000M 4.0K 1000M 1% /dev 
tmpfs   403M 228K 403M 1% /run 
none   5.0M  0 5.0M 0% /run/lock 
none   1007M  0 1007M 0% /run/shm 
/dev/sdb1  100G 8.1G 87G 9% /data 
[email protected]:~$ 

e l'uscita di base dopo aver eseguito il mio script nella riga di comando:

ERRORE 1005 (HY000) alla riga 5416 : Impossibile creare la tabella 'content_type_ses_job_postings' (errno: 28) mysqldump: ottenuto errno 32 su scrivere ERROR 2003 (HY000): impossibile connettersi al server MySQL su '198.xx.xx.xx' (111) IP del server LDAP aggiornato.

Nota che ottengo che lo scorso ERROR 2003 di non connessione al server MySQL, anche quando tutte le opere in modo però che non dovrebbe succedere, penso che è più del problema dell'utente come il backup dei database, salvare e quindi importare nel db "holding" che poi passerò all'aggiornamento del contenuto, quindi forse è qualcosa, ma non è mai stato un problema specifico.

Se error 32 è relativo allo spazio, dove potrebbe essere il problema dello spazio? Se è correlato alle autorizzazioni, su quale cartella si troverà il problema con le autorizzazioni? Tuttavia, non so come o cosa potrebbe aver modificato dinamicamente le autorizzazioni ovunque ... Ho affermato prima, ho eseguito questi script per circa 8 mesi senza problemi?

Le basi del server dev

  • MySQL 5.5.24
  • Ubuntu0.12.04.1
  • PHP 5,3
+0

Quanto è grande il file che hai creato con mysqldump, o stai eseguendo il piping di mysqldump da qualche parte ??? – RolandoMySQLDBA

+0

È 'content_type_ses_job_postings' più grande ora che era 8 mesi fa? – RolandoMySQLDBA

+0

'content_type_ses_job_postings' un tavolo MyISAM ??? – RolandoMySQLDBA

risposta

18

sembra strano

[[email protected]*****]# perror 28 
OS error code 28: No space left on device 
[[email protected]*****]# perror 32 
OS error code 32: Broken pipe 

Dal momento che la mysqldump continua a rompere in posti casuali, è spa ce-related, e nessuna condizione di disco pieno, sospetterei il problema su un livello più profondo: il pacchetto MySQL. Cos'è un pacchetto MySQL?

Secondo il page 99 of the Book

BookImage

qui sono paragrafi 1-3 spiegarla:

codice di comunicazione di rete MySQL era scritta sotto l'ipotesi che query sono sempre ragionevolmente breve, e quindi può essere inviato a e elaborato dal server in un blocco, che viene chiamato pacchetto nella terminologia MySQL . Il server alloca la memoria per un buffer temporaneo per archiviare il pacchetto e richiede una quantità sufficiente a adattarlo completamente. Questa architettura richiede una precauzione per evitare di avere esaurimento memoria del server --- un limite sulla dimensione del pacchetto, che questa opzione esegue.

Il codice di interesse in relazione a questa opzione si trova nella sql/net_serv.cc. Date un'occhiata a my_net_read(), quindi seguire la chiamata a my_real_read() e prestare particolare attenzione alle net_realloc().

Questa variabile limita anche la lunghezza di un risultato di molte funzioni di stringa. Vedere sql/field.cc e sql/intem_strfunc.cc per dettagli.

Data questa spiegazione, fare in modo che INSERT in blocco carichi/scarichi un pacchetto MySQL piuttosto rapidamente. Questo è particolarmente vero quando max_allowed_packet è troppo piccolo per il dato carico di dati in arrivo.

ho scritto su questo prima: MySQL server has gone away obstructing import of large dumps

prova ad aumentare max_allowed_packet for the mysqldump a 1G come segue:

mysqldump --max-allowed-packet=1073741824 ... 

e provare il mysqldump.

Se questa non lo fa, allora fare questo:

Aggiunto questo per my.cnf

[mysqld] 
max_allowed_packet = 1G 

Poi, accedere per MySQL come [email protected] ed eseguire questo

mysql> SET GLOBAL max_allowed_packet = 1024 * 1024 * 1024; 

e prova il mysqldump.

Provalo !!!

+0

Grandi informazioni! Grazie mille. Ho effettuato l'accesso sia in dev/live a mysql, chiamato Status, sia in assenza di database in uso ??? Ma, dopo averlo fatto, ho aggiornato il mio browser e tutto è tornato alla normalità. Controllerò la variabile .. So che nel file php.ini ho: memory_limit: -1 post_max_size 500M upload_max_filesize 450M Quindi adesso controllerò la variabile che hai menzionato, grazie ancora! –

Problemi correlati