Pour votre commande de vidage , vous pouvez utiliser ce qui suit
mysqldump --single-transaction --extended-insert -u [USERNAME] -p [DBNAME] | gzip > [/path_to_file/DBNAME].sql.gz
Les inserts allongés sont meilleurs.
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction
L'option de transaction unique est préférable pour vider les tables InnoDB.
Dans votre fichier my.cnf , apportez temporairement les modifications suivantes
http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_doublewrite
innodb_doublewrite = 0
et aussi
http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit
innodb_flush_log_at_trx_commit = 2
Redémarrez MySQL, puis supprimez ces options après votre importation et redémarrez à nouveau MySQL.
Tables de mémoire
Si votre base de données entière peut tenir en mémoire, vous pouvez remplacer ENGINE = InnoDB par ENGINE = MEMORY dans votre fichier sql de vidage pour chaque table ou uniquement les tables dont l'importation est la plus longue, réimportez le fichier de vidage dans votre base de données puis changez le moteur en innodb.
ALTER TABLE name_of_table ENGINE = InnoDB;
commande mysqlimport
http://linux.die.net/man/1/mysqlimport
J'ai utilisé mysqlimport pour importer des données sauvegardées en utilisant l'option de format d'onglet dans mysqldump. Il s'est avéré plus rapide que l'importation via la commande mysql.
Vider la base de données à l'aide de mysqldump
mysqldump --tab = / some_directory / -u [USERNAME] -p [DBNAME] [TABLENAME]
Importez les données dans votre base de données.
mysqlimport -u [NOM D'UTILISATEUR] -p [DBNAME] /some_directory/tablename.sql