Question

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

Ceci inclurait les paramètres my.cnf, l’utilisation de disques virtuels, etc.

Rechercher uniquement des techniques documentées, de préférence avec des points de repère indiquant une accélération potentielle.

Était-ce utile?

La solution

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

  

Si vous & # 8217; avez toujours rêvé de mysqldump multi-thread, n'en voulez plus. Cet outil vide les tables MySQL en parallèle. C'est un mysqldump beaucoup plus intelligent qui peut agir soit comme un wrapper pour mysqldump (avec un comportement par défaut raisonnable), soit comme un wrapper autour de SELECT INTO OUTFILE. Il est conçu pour les applications hautes performances sur de très grandes tailles de données, où la vitesse compte beaucoup. Il utilise plusieurs processeurs et disques pour transférer 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 dump, mais plutôt les effectuer en masse à la fin.

Autres conseils

  1. Obtenez une copie de MySQL hautes performances . Grand livre.
  2. Inserts étendus dans les vidages
  3. Dump au format --tab afin que vous puissiez utiliser mysqlimport, qui est plus rapide que mysql < fichier de vidage
  4. Importation avec plusieurs threads, un pour chaque table.
  5. Utilisez si possible un moteur de base de données différent. importer dans un Le moteur fortement transactionnel comme Innodb est terriblement lent. Insertion dans un moteur non transactionnel comme MyISAM est beaucoup plus rapide.
  6. Regardez le script de comparaison de table dans le toolkit Maakit et voyez si vous le pouvez. mettez à jour vos tables plutôt que de les sauvegarder et de les importer. Mais vous parlez probablement de sauvegardes / restaurations.

Si vous importez dans InnoDB, la meilleure chose à faire est de placer

innodb_flush_log_at_trx_commit = 2

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

Je suppose que votre question dépend également de l'emplacement du goulot d'étranglement:

  • Si votre réseau est un goulet d'étranglement, vous pouvez également consulter l'indicateur -C / --compress sur mysqldump.
  • Si votre ordinateur manque de mémoire (c.-à-d. qu'il commence à permuter), vous devez acheter plus de mémoire.

Consultez également le --quick drapeau de --disable-keys (et <=> si vous utilisez MyIsam).

L'utilisation d'insertions étendues dans les vidages devrait accélérer les importations.

désactiver les contrôles de clé étrangère et activer la validation automatique.

mysqlhotcopy pourrait être une alternative pour vous aussi si vous n’avez que des tables MyIsam.

Une autre alternative est la http://www.mydumper.org - la sauvegarde / restauration mysql à plusieurs threads qui est 3 à 10 fois plus rapide que mysqldump et peut gérer à la fois MyISAM et InnoDB ainsi que Drizzle http://vbtechsupport.com/1695/

En utilisant les index mais pas trop, activez le cache de requête, en utilisant sphinx pour les grosses bases de données, voici quelques bons conseils http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (En français)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top