Voraussetzungen

Für ein High-Availability-DB-System ist eine High-Availability-kompatible Konfiguration erforderlich. Da das High Availability-Feature des DB-Systems die Gruppenreplikation MySQL verwendet, muss jede Tabelle einen Primärschlüssel aufweisen. Wenn Sie versuchen, eine Tabelle ohne Primärschlüssel in einem High Availability-DB-System zu erstellen, schlägt dies fehl.

Hinweis

Wenn Sie mit der Konsole High Availability für ein DB-System aktivieren, müssen Sie auch die automatische Speichererweiterung aktivieren. Diese Anforderung gilt nicht in der CLI oder REST-API.

Alle Standardkonfigurationen, die mit High Availability kompatibel sind, haben das HA-Suffix im Konfigurationsnamen. Wenn Sie eine benutzerdefinierte Konfiguration erstellen möchten, die High Availability unterstützt, müssen Sie die Methode Konfiguration kopieren verwenden, um aus einer vorhandenen Konfiguration zu kopieren, die High Availability unterstützt. Siehe Konfiguration kopieren.

Wenn Sie Daten in HeatWave migrieren und keine Primärschlüssel in Ihren Tabellen definiert haben, müssen Sie diese hinzufügen. Prüfen Sie die Tabellen auf Primärschlüssel, und fügen Sie den Tabellen Schlüssel hinzu, die keine enthalten:

  1. Tabellen mit einem Befehlszeilenclient auf Primärschlüssel prüfen
  2. Fügen Sie Primärschlüssel mit einer der folgenden Methoden hinzu:
    • Mit unsichtbaren Spalten: Siehe Primärschlüssel mit einem Befehlszeilenclient manuell hinzufügen.
      Hinweis

      Wenn Sie Primärschlüssel zu unsichtbaren Spalten hinzufügen, können Sie vorhandene Daten ohne größere Auswirkungen zur Verwendung mit einem High-Availability-DB-System aktualisieren. Der Vorgang ist für Ihre Anwendungen transparent. Die neue Spalte bleibt aus SELECT-Abfragen ausgeblendet, sodass Ihre Anwendungen wie zuvor weiterarbeiten können.
    • Mit dem MySQL Shell-Dumputility: Siehe create_invisible_pks unter MySQL Shell-Dumputility.
    • Mit dem MySQL Shell-Ladeutility: Siehe createInvisiblePKs unter MySQL Shell-Ladeutility.
      Hinweis

      Um MySQL Shell-Dump- und -Load-Utility zu verwenden, verwenden Sie MySQL Shell-Version 8.0.30 oder höher.
    • Variable sql_generate_invisible_primary_key verwenden: Setzen Sie die Variable auf ON, um Primärschlüssel zu neuen Tabellen hinzuzufügen, die Sie erstellen. Wenn Sie die Variable auf ON setzen, werden den bereits vorhandenen Tabellen keine Primärschlüssel hinzugefügt. Siehe Unsichtbare Primärschlüssel generieren.

Tabellen mit einem Befehlszeilenclient auf Primärschlüssel prüfen

Verwenden Sie einen Befehlszeilenclient wie MySQL-Client oder MySQL-Shell, um die Tabellen nach Primärschlüsseln zu prüfen und diejenigen aufzulisten, die keine Primärschlüssel enthalten. Primärschlüssel sind Voraussetzung für die Gruppenreplikation, die von High Availability verwendet wird.

  1. Führen Sie für die Datenbank die folgende Anweisung aus, um eine Liste der Tabellen zu generieren, die keine Primärschlüssel haben:
    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');

Primärschlüssel mit einem Befehlszeilenclient manuell hinzufügen

Über einen Befehlszeilenclient wie MySQL-Client oder MySQL Shell können Sie Primärschlüssel zu unsichtbaren Spalten hinzufügen.

Diese Aufgabe erfordert Folgendes:
  • MySQL-Version 8.0.23 oder höher. Unsichtbare Spalten wurden in Version 8.0.23 eingeführt.
Gehen Sie wie folgt vor, um einer unsichtbaren Spalte einen Primärschlüssel hinzuzufügen:
  1. Führen Sie einen Befehl ähnlich dem folgenden für die Tabelle aus, der Sie die unsichtbare Spalte und den Primärschlüssel hinzufügen möchten:
    ALTER TABLE <Table1> ADD <my_row_id> BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY INVISIBLE FIRST;

    Mit diesem Befehl wird die Tabelle <Table1> mit einer Spalte test geändert, indem eine Spalte <my_row_id> hinzugefügt wird. Die hinzugefügte Spalte ist unsichtbar und enthält den Primärschlüssel für die Tabelle.

Verwandte Themen