Conditions requises

Un système de base de données haute disponibilité requiert une configuration compatible haute disponibilité. La fonctionnalité de haute disponibilité du système de base de données utilisant la réplication de groupe MySQL, chaque table doit avoir une clé primaire. Si vous essayez de créer une table sans clé primaire dans un système d'un système de base de données haute disponible, l'opération échoue.

Remarque

Si vous utilisez la console pour activer la haute disponibilité d'un système de base de données, vous devez également activer l'extension automatique du stockage. Cette exigence ne s'applique pas dans l'interface de ligne de commande ou l'API REST.

Toutes les configurations par défaut compatibles avec la haute disponibilité ont le suffixe HA dans le nom de la configuration. Si vous souhaitez créer une configuration personnalisée prenant en charge la haute disponibilité, vous devez utiliser la méthode Copier la configuration pour effectuer une copie à partir d'une configuration existante prenant en charge la haute disponibilité. Reportez-vous à Copying a Configuration.

Si vous migrez des données vers HeatWave et que les clés primaires ne sont pas définies pour vos tables, vous devez les ajouter. Vérifiez que les tables comportent des clés primaires et ajoutez-en à celles qui n'en contiennent pas :

  1. Vérification des tables pour les clés primaires à l'aide d'un client de ligne de commande
  2. Ajoutez des clés primaires à l'aide de l'une des méthodes suivantes :
    • Utilisation d'une colonne invisible : reportez-vous à la section Manually Adding Primary Keys Using a Command-Line Client.
      Remarque

      L'utilisation de colonnes invisibles pour ajouter des clés primaires permet de mettre à jour les données existantes en vue de leur utilisation avec un système de base de données haute disponibilité sans répercussions majeures. Cette opération est transparente pour vos applications. La nouvelle colonne reste masquée dans les requêtes SELECT, ce qui permet à vos applications de continuer à fonctionner comme précédemment.
    • Utilisation de l'utilitaire de vidage MySQL Shell : reportez-vous à create_invisible_pks dans Utilitaire de vidage MySQL Shell.
    • Utilisation de l'utilitaire de chargement MySQL Shell : reportez-vous à createInvisiblePKs dans Utilitaire de chargement MySQL Shell.
      Remarque

      Pour utiliser l'utilitaire de vidage et de chargement du shell MySQL, utilisez le shell MySQL version 8.0.30 ou supérieure.
    • Utilisation de la variable sql_generate_invisible_primary_key : définissez la variable sur ON pour ajouter des clés primaires aux nouvelles tables que vous créez. La définition de la variable sur ON n'ajoute pas de clés primaires aux tables existantes. Reportez-vous à Génération de clés primaires invisibles.

Vérification des tables pour les clés primaires à l'aide d'un client de ligne de commande

Utilisez un client de ligne de commande tel que le client MySQL ou le shell MySQL pour vérifier si vos tables comportent des clés primaires et répertorier celles qui n'en contiennent pas. Les clés primaires sont nécessaires pour la réplication de groupe utilisée par la haute disponibilité.

  1. Exécutez l'instruction suivante sur la base de données pour générer la liste des tables qui n'ont pas de clés primaires :
    SELECT t.table_schema, t.table_name
    FROM information_schema.tables t
      LEFT JOIN (SELECT table_schema, table_name 
                 FROM information_schema.statistics
                 WHERE index_name = 'PRIMARY' 
                 GROUP BY table_schema, table_name, index_name
                 ) pks 
      ON t.table_schema = pks.table_schema AND t.table_name = pks.table_name 
    WHERE pks.table_name IS NULL
      AND t.table_type = 'BASE TABLE' 
      AND t.table_schema NOT IN ('mysql', 'sys', 'performance_schema', 'information_schema');

Ajout manuel de clés primaires à l'aide d'un client de ligne de commande

Utilisez un client de ligne de commande tel que le client MySQL ou MySQL Shell pour ajouter des clés primaires à des colonnes invisibles.

Cette tâche requiert les éléments suivants :
  • MySQL version 8.0.23 ou supérieure. Les colonnes invisibles ont été introduites dans la version 8.0.23.
Pour ajouter une clé primaire à une colonne invisible, procédez comme suit :
  1. Exécutez une commande semblable à la suivante sur la table à laquelle ajouter la colonne invisible et la clé primaire :
    ALTER TABLE <Table1> ADD <my_row_id> BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY INVISIBLE FIRST;

    La commande modifie la table <Table1> qui comporte une colonne (test) en ajoutant la colonne <my_row_id>, qui est invisible et contient la clé primaire de la table.

Rubriques connexes