Tous les produits
Search
Centre de documentation

Data Management:Modifications de schéma sans verrouillage

Dernière mise à jour :Aug 09, 2026

Les instructions ALTER TABLE directes verrouillent la table pendant toute la durée de la modification, bloquant ainsi les lectures et les écritures. Bien que le DDL en ligne de MySQL réduise cet impact sur le nœud principal, il s'exécute toujours de manière séquentielle sur les réplicas, ce qui entraîne un décalage de réplication susceptible d'affecter les charges de travail de production.

Data Management Service (DMS) résout ce problème grâce aux modifications de schéma sans verrouillage. DMS crée des tables temporaires avec le nouveau schéma, y réplique l'intégralité des données ainsi que les données incrémentielles du journal binaire, puis remplace les tables d'origine par ces tables temporaires devenues permanentes. Vos tables restent ainsi disponibles tout au long du processus.

Prérequis

Avant de commencer, assurez-vous que :

L'exemple suivant utilise une instance ApsaraDB RDS for MySQL dans un environnement de développement simulé.

Fonctionnement

Une modification de schéma sans verrouillage s'effectue en trois étapes :

  1. Création de la table temporaire — DMS crée une ou plusieurs tables temporaires utilisant le nouveau schéma.

  2. Synchronisation des données — DMS copie toutes les lignes existantes (données complètes) et applique en continu les modifications entrantes (données incrémentielles du journal binaire) aux tables temporaires jusqu'à ce qu'elles soient synchronisées avec la table source.

  3. Permutation des tables — DMS remplace la table d'origine par les tables temporaires synchronisées, puis supprime les tables temporaires.

Pendant l'exécution d'une modification de schéma sans verrouillage, deux tables temporaires sont visibles dans la base de données. Une fois la permutation terminée, ces deux tables temporaires sont supprimées.

Soumettre et exécuter une modification de schéma sans verrouillage

L'exemple suivant modifie le type de données de la colonne long_text_a de la table big_table, en passant de varchar(1024) à text.

Étape 1 : Soumettre un ticket (utilisateur standard)

  1. Connectez-vous à la Console DMS V5.0Console DMS V5.0Console DMS V5.0 en tant qu'utilisateur standard.

  2. Dans la barre de navigation supérieure, choisissez Database Development > Data Change > Lockless Change.

    En mode simplifié, placez le pointeur sur l'icône icon dans le coin supérieur gauche et choisissez All functions > Database Development > Data Change > Lockless Change .
  3. Configurez les paramètres suivants et cliquez sur Submit. Pour le champ SQL statements for change, saisissez :

    Paramètre Description
    Database Obligatoire. Base de données à modifier. Dans cet exemple, la base de données poc_dev en mode Secure Collaboration est sélectionnée.
    Reason category Obligatoire. Motif de la modification, utilisé pour retrouver le ticket ultérieurement.
    Business background Obligatoire. Objet de la modification, afin de réduire les communications inutiles.
    Execution method Obligatoire. Méthode d'exécution du ticket après approbation. Sélectionnez Last Auditor Execute.
    Affected rows Obligatoire. Nombre estimé de lignes affectées. Pour obtenir le compte exact, exécutez une requête COUNT dans SQL Console avant de soumettre.
    SQL statements for change Obligatoire. Instruction DDL à exécuter. Dans cet exemple, l'instruction modifie le type de données de long_text_a de varchar(1024) vers text.
    SQL statements for rollback Facultatif. Instruction SQL permettant d'annuler la modification si nécessaire.
    Change stakeholder Facultatif. Autres utilisateurs pouvant consulter les détails du ticket et participer au processus d'approbation. Les utilisateurs non listés ne peuvent pas voir le ticket, à l'exception des administrateurs DMS et des DBA.
    ALTER TABLE `big_table`
      MODIFY COLUMN `long_text_a` text NULL AFTER `name`;
  4. Sur la page Ticket Details, examinez le ticket.

    DMS exécute automatiquement une pré-vérification de l'instruction SQL. Cette vérification couvre la syntaxe SQL, la conformité du type d'instruction avec vos règles de sécurité, les autorisations de l'expéditeur et le nombre estimé de lignes à analyser. Vous ne pouvez modifier les détails du ticket qu'avant de le soumettre pour approbation.
  5. Une fois la pré-vérification réussie, cliquez sur Submit for Approval, puis sur OK dans la boîte de dialogue de confirmation.

    Important

    Après avoir soumis le ticket pour approbation, les détails du ticket ne peuvent plus être modifiés.

Étape 2 : Approuver le ticket (administrateur DMS)

  1. Connectez-vous à la Console DMS V5.0Console DMS V5.0Console DMS V5.0 en tant qu'administrateur DMS.

  2. Sur la page d'accueil, cliquez sur Pending Tickets dans la section My Tickets.

  3. Sur la page My Tickets, localisez le ticket et cliquez sur son numéro dans la colonne Ticket Number.

  4. Dans le panneau Ticket Details, examinez les informations de modification et cliquez sur Approve.

  5. Saisissez des commentaires et cliquez sur Submit.

Étape 3 : Exécuter le ticket (utilisateur standard)

  1. Connectez-vous à la Console DMS V5.0Console DMS V5.0Console DMS V5.0 en tant qu'utilisateur standard.

  2. Dans la section Execute du panneau Ticket Details, cliquez sur Execute Change.

  3. Configurez les paramètres d'exécution et cliquez sur Confirm Execution.

    DMS démarre la tâche immédiatement après que vous avez cliqué sur Confirm Execution .
    Paramètre Description Par défaut
    Execute strategy Moment d'exécution de la tâche. Running immediately démarre la tâche dès la confirmation. Schedule exécute la tâche à l'heure spécifiée. Running immediately
    Transaction control Gestion de l'annulation en cas d'échec. on : si une instruction échoue, toutes les instructions DML de la même transaction sont annulées (les instructions DDL ne peuvent pas être annulées). off : les instructions s'exécutent une par une ; si l'une échoue, la transaction s'arrête, mais les instructions déjà exécutées ne sont pas annulées. off
    Data backup Génération ou non de scripts de sauvegarde. on : DMS génère des scripts INSERT pour sauvegarder les lignes affectées par les instructions UPDATE ou DELETE. off : aucun script de sauvegarde n'est généré. on

Surveiller la progression et vérifier le schéma

  1. En tant qu'administrateur DMS, placez le pointeur sur le nom de la base de données dans la section Basic Information et cliquez sur Query pour ouvrir SQL Console.

  2. Dans SQL Console, exécutez l'instruction suivante pour lister toutes les tables de la base de données :

    Pendant l'exécution d'une modification de schéma sans verrouillage, deux tables temporaires apparaissent dans les résultats.
    SHOW TABLES;
  3. Dans la barre de navigation supérieure, choisissez O&M > Task.

    En mode simplifié, placez le pointeur sur l'icône 2023-01-28_15-57-17.png dans le coin supérieur gauche et choisissez All functions > O&M > Task .
  4. Cliquez sur le numéro de la tâche pour ouvrir la boîte de dialogue Execution details.

  5. Cliquez sur Progress dans la colonne Operation pour afficher le message Lock-Free structure change et surveiller la progression en temps réel de la modification de schéma sans verrouillage.

  6. Une fois la tâche terminée, vérifiez le schéma. La table big_table utilise désormais le nouveau schéma et les tables temporaires ont été supprimées.