Comment augmenter la sauvegarde et la restauration rapide d'une base de données de 500 Go en utilisant mysqldump?


10

Il existe une base de données d'une taille de 500 Go. Les tables de la base de données A contiennent les tables MyISAM et INNODB. Les tables MyISAM sont des tables principales et les tables Innodb sont les tables de transactions principales.

Sauvegarde et restauration à l'aide de vidage mysql prenant quitter longtemps ou jours.

  • max_allowed_packet = 1G
  • foreign_key_checks = 0
  • auto_commit = off

1
Je veux juste m'assurer que vous utilisez --opt avec l'utilitaire mysqldump. C'est un énorme gain de temps lors du rechargement. sans elle, mysqldump crée le fichier sql ligne par ligne. --opt does: ajoute des verrous, supprime et recrée avec toutes les options de création activées, désactive temporairement les clés pour un rechargement rapide, puis rallume les clés à la fin pour reconstruire les index après l'écriture. Il concatène plusieurs lignes ensemble dans des insertions pour réduire la taille du fichier ET le temps d'analyse de chaque instruction (jusqu'à 70%) et permet à --quick de réduire la charge par rapport à la base de données de vidage lors de l'exécution. réduit le temps de chargement de 80%
ppostma1

Réponses:


5

Mais le lien recommande également XtraBackup de Percona, qui est plus rapide, aucun verrouillage sur les tables déjà utilisées et ne gagne pas de temps pour la restauration. Pour 500 Go de données, je préfère que Percona XtraBackup soit rapide et efficace, sauf si vous souhaitez les convertir en modèle innodb_file_per_table s'il ne provenait pas du serveur DB existant. Le lien ci-dessous explique comment procéder.

http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html


1
Le problème avec Percona Xtrabackup est que mysqld doit être arrêté pour restaurer une base de données.
dr_

2

Découvrez mydumper. C'est beaucoup plus rapide que mysqldump: la nouvelle version de mydumper 0.6.1 offre des fonctionnalités de performances et de convivialité

Vous pouvez télécharger ici: https://github.com/maxbube/mydumper

Qu'est-ce que mydumper? Pourquoi?

  • Parallélisme (d'où vitesse) et performances (évite les routines de conversion de jeux de caractères coûteuses, code efficace dans l'ensemble)
  • Gestion des sorties plus facile (fichiers séparés pour les tables, vidage des métadonnées, etc., facile à visualiser / analyser les données)
  • Cohérence - conserve un instantané sur tous les threads, fournit des positions de journal maître et esclave précises, etc.
  • Gérabilité - prend en charge PCRE pour spécifier les inclusions et exclusions de base de données et de tables

1

Je pense que la question est de savoir comment restaurer plus rapidement à partir des fichiers de vidage créés de mysqldump et non d'une solution de sauvegarde différente.

Pour ce faire, vous pouvez notamment créer des groupes de tables dans votre schéma et créer un utilisateur DB distinct pour chaque groupe et utiliser les autorisations MySQL pour ne pas autoriser l'insertion de tables pour utiliser tous les utilisateurs DB sauf un.

Il s'agit d'une technique éprouvée, rapide, presque parallèle, mais pas sûre à 100% du temps qu'il faudra pour restaurer à partir de 500G. Mais à mon humble avis, vous avez besoin de quelque chose de parallèle. Voir le lien ci-dessous pour un exemple.

Restauration rapide et parallèle à partir de vidages SQL (mysqldump) pour MySQL


1

Essayez ce qui suit avec innobackupex:

innobackupex --parallel=7 --rsync  /var/mysql/backup

Vous pouvez modifier le numéro de processus parallèle à votre guise. Puisque vous avez mentionné que vous avez des tables myisam, le paramètre "rsync" aidera à accélérer la sauvegarde de celles-ci.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.