web-dev-qa-db-fra.com

Accélérer les vidages et les importations mysql

Existe-t-il des techniques documentées pour accélérer les vidages et les importations mySQL?

Cela inclurait les paramètres my.cnf, l'utilisation de disques virtuels, etc.

Recherche uniquement de techniques documentées, de préférence avec des repères montrant une accélération potentielle.

51
deadprogrammer

http://www.maatkit.org/ a un mk-parallel-dump et mk-parallel-restore

Si vous souhaitiez un mysqldump multi-thread, ne le souhaitez plus. Cet outil sauvegarde les tables MySQL en parallèle. C'est un mysqldump beaucoup plus intelligent qui peut agir comme un wrapper pour mysqldump (avec un comportement par défaut raisonnable) ou comme un wrapper autour de SELECT INTO OUTFILE. Il est conçu pour des applications hautes performances sur de très grandes tailles de données, où la vitesse compte beaucoup. Il tire parti de plusieurs processeurs et disques pour vider vos données beaucoup plus rapidement.

Il existe également diverses options potentielles dans mysqldump, telles que ne pas créer d'index pendant l'importation du vidage - mais les faire en masse à la fin.

15
Alister Bulman
  1. Obtenez une copie de MySQL haute performance. Grand livre.
  2. Inserts étendus dans les décharges
  3. Vider au format --tab pour pouvoir utiliser mysqlimport, qui est plus rapide que mysql <dumpfile
  4. Importez avec plusieurs threads, un pour chaque table.
  5. Utilisez un moteur de base de données différent si possible. l'importation dans un moteur fortement transactionnel comme innodb est extrêmement lente. L'insertion dans un moteur non transactionnel comme MyISAM est beaucoup plus rapide.
  6. Regardez le script de comparaison de table dans la boîte à outils Maakit et voyez si vous pouvez mettre à jour vos tables plutôt que de les vider et de les importer. Mais vous parlez probablement de sauvegardes/restaurations.
24
JBB

Si vous importez vers InnoDB, la chose la plus efficace que vous puissiez faire est de mettre

innodb_flush_log_at_trx_commit = 2

dans ton my.cnf, temporairement pendant que l'importation est en cours. Vous pouvez le remettre à 1 si vous avez besoin d'ACIDE.

13

Je suppose que votre question dépend également de l'endroit où se trouve le goulot d'étranglement:

  • Si votre réseau est un goulot d'étranglement, vous pouvez également consulter le -C/--compress drapeau à mysqldump.
  • Si votre ordinateur manque de mémoire (c'est-à-dire qu'il commence à échanger), vous devez acheter plus de mémoire.

Jetez également un œil au --quick indicateur pour mysqldump (et --disable-keys si vous utilisez MyIsam).

5
Ztyx

L'utilisation d'inserts étendus dans les vidages devrait accélérer les importations.

4
che

désactiver les vérifications de clés étrangères et activer la validation automatique.

4
longneck

mysqlhotcopy pourrait également être une alternative pour vous si vous ne disposez que de tables MyIsam.

1
Ztyx