Maison  >  Article  >  base de données  >  Comment créer un index sur une énorme table de production MySQL sans verrouiller la table ?

Comment créer un index sur une énorme table de production MySQL sans verrouiller la table ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 00:25:02676parcourir

How to Create an Index on a Huge MySQL Production Table Without Locking the Table?

Créer un index sur une énorme table de production MySQL sans verrouillage de table

Problème :

Vous devez créer un index sur une table MySQL massive dans un environnement de production sans interrompre les opérations en cours.

Conventional Wisdom (2015) :

Dans les versions MySQL antérieures à 5.6, créer un index sur une La table MyISAM ou InnoDB bloque les opérations d'écriture.

Mises à jour de l'index en ligne dans MySQL 5.6 (2017) :

MySQL 5.6 et versions ultérieures prennent en charge les mises à jour d'index en ligne, vous permettant d'ajouter ou supprimez les index sans bloquer les lectures ou les écritures.

Mise à jour du schéma sans temps d'arrêt :

Si vous ne pouvez pas utiliser MySQL 5.6 ou version ultérieure, vous pouvez utiliser la méthode suivante pour mettre à jour votre schéma sans temps d'arrêt :

  1. Maîtres circulaires : Afficher un nouveau serveur maître et répliquer les écritures du maître existant.
  2. Effectuer la mise à jour du schéma sur le nouveau maître : Effectuez les modifications de schéma sur le nouveau maître.
  3. Échangez les clients : Migrez atomiquement tous les clients de l'ancien maître vers le nouveau maître.
  4. Mettre à jour l'ancien maître : Répétez le même processus avec l'ancien maître pour le mettre à jour en tant que maître secondaire.

L'outil pt-online-schema-change de Percona :

Cet outil fournit une méthode alternative pour modifier le schéma de la table sans bloquer les opérations. Il crée une nouvelle table avec la structure souhaitée, apporte les modifications au schéma et copie progressivement les données de la table d'origine avant de la remplacer.

Amazon RDS :

Amazon RDS simplifie le processus en vous permettant de créer des réplicas en lecture, d'apporter des modifications au schéma sur un réplica, puis de promouvoir le réplica pour qu'il devienne le nouveau maître. Cette approche minimise les temps d'arrêt et simplifie le processus de basculement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn