2011-03-12 5 views
0

SELECT count(*) from table me donne 3296869 lignes.Pourquoi mysqldump échoue?

La table ne contient que 4 colonnes, stockant les domaines supprimés. J'ai essayé de vider le sql par:

$backupFile = $dbname . date("Y-m-d-H-i-s") . '.gz'; 
$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile"; 

Cependant, cela juste dumps un fichier 20 KB gzippés vide. Mon client utilise un hébergement partagé, de sorte que les spécifications du serveur et l'utilisation des ressources ne sont pas les meilleures.

Je ne suis même pas donné l'accès ssh ou l'accès directement à la base de données donc je dois faire des requêtes via des scripts PHP que je télécharge via FTP (SFTP n'est pas une option, encore une fois).

Y a-t-il un moyen pour que je puisse peut-être en télécharger séquentiellement des parties, ou passer un argument à mysqldump pour l'optimiser?

Je suis tombé sur http://jeremy.zawodny.com/blog/archives/000690.html qui mentionne le drapeau -q et essayé mais ça n'a pas l'air de faire différemment.

EDIT: Tout est venu avec l'idée que peut-être mysqldump n'est pas installé et il ne fait que le gzip, mais le système isnt .. se plaignant d'essayer de vérifier l'erreur ..

EDIT # 2:which mysqldump a retourné /usr/bin/mysqldump donc c'est là.

Répondre

4

Essayez d'utiliser cette commande (sans espaces):

$command = "mysqldump --opt -h $dbhost -u$dbuser -p$dbpass $dbname | gzip -c > $backupFile"; 

Dans votre mysqldump cas essayer de vider la table $ dbname base de données de dbpass $ et DonT trouve.

Vous pouvez également utiliser flag --single-transaction si vous utilisez des tables InnoDB.

+0

du '0 KB'. Merci et bonne visite et bienvenue sur le site! –

1

J'ai effectivement vu de meilleurs résultats sur les hôtes partagés en utilisant un script PHP comme celui-ci: http://davidwalsh.name/backup-mysql-database-php. En termes simples, les hôtes partagés ne sont pas amicaux avec ce genre de choses. Si mysqldump est sur le système, alors il peut être auto-tué une fois que le système voit le CPU/RAM commencer à augmenter. Il est moins susceptible de tuer un processus php, mais peut-être encore. YMMV.

Vous devriez également essayer msqldump sans gzip. Il pourrait facilement être que gzip est le coupable ici. Les hôtes partagés sont très étranges parfois.

+0

Je l'ai déjà essayé sans le gzip et j'ai gagné le fichier –

0

Voilà comment je sauvegarde I DB:

mysqldump -h $dbhost -u $dbuser -p $dbpass $dbname | bzip2 -c > /tmp/databasebackup.sql.bz2 

Et voici comment je reconstitue DB à partir d'un fichier de sauvegarde:

bunzip2 < databasebackup.sql.bz2 | mysql -u$dbuser -p 
or: 
mysql -u$dbuser -p < databasebackup.sql 

Hope it helps.