Aktivieren der GTID-basierten Replikation für vorhandene Lesereplikate für RDS für MySQL - Amazon Relational Database Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Aktivieren der GTID-basierten Replikation für vorhandene Lesereplikate für RDS für MySQL

Für eine vorhandene MySQL-DB-Instance mit Lesereplikaten, die keine GTID-basierte Replikation verwendet, können Sie eine GTID-basierte Replikation zwischen der DB-Instance und den Lesereplikaten konfigurieren.

So aktivieren Sie die GTID-basierte Replikation für bestehende Lesereplikate
  1. Wenn die DB-Instance oder eine Read Replica eine 8.0-Version von RDS für MySQL unter 8.0.26 verwendet, aktualisieren Sie die DB-Instance oder Read Replica auf 8.0.26 oder eine höhere MySQL 8.0-Version. Alle Versionen von RDS für MySQL 8.4 und 5.7 unterstützen die GTID-basierte Replikation.

    Weitere Informationen finden Sie unter Upgrades der DB-Engine von RDS für MySQL.

  2. (Optional) Setzen Sie die GTID-Parameter zurück und testen Sie das Verhalten der DB-Instance und der Lesereplikate:

    1. Die Parametergruppe, die der DB-Instance zugeordnet ist, und jedes Lesereplikat muss den Wert für den Parameter enforce_gtid_consistency auf WARN gesetzt haben.

      Weitere Informationen zum Einstellen von Konfigurationsparametern unter Verwendung von Parametergruppen finden Sie unter Parametergruppen für Amazon RDS.

    2. Wenn Sie die Parametergruppe der DB-Instance geändert haben, müssen Sie die DB-Instance neu starten. Wenn Sie die Parametergruppe des Lesereplikats geändert haben, müssen Sie das Lesereplikat neu starten.

      Weitere Informationen finden Sie unter Neustarten einer DB-Instance.

    3. Führen Sie Ihre DB-Instance und Lesereplikate mit Ihrem normalen Workload aus und überwachen Sie die Protokolldateien.

      Wenn Ihnen Warnungen über GTID-inkompatible Transaktionen angezeigt werden, passen Sie Ihre Anwendung so an, dass sie nur GTID-kompatible Funktionen verwendet. Die DB-Instance darf keine Warnungen über GTID-inkompatible Transaktionen erzeugen, bevor Sie mit dem nächsten Schritt fortfahren.

  3. Setzen Sie die GTID-Parameter für die GTID-basierte Replikation zurück, die anonyme Transaktionen erlaubt, bis die Lesereplikate alle verarbeitet haben.

    1. Die Parametergruppe, die der DB-Instance zugeordnet ist, und jedes Lesereplikat muss die folgenden Parametereinstellungen haben:

      • gtid_modeON_PERMISSIVE

      • enforce_gtid_consistencyON

    2. Wenn Sie die Parametergruppe der DB-Instance geändert haben, müssen Sie die DB-Instance neu starten. Wenn Sie die Parametergruppe des Lesereplikats geändert haben, müssen Sie das Lesereplikat neu starten.

  4. Warten Sie, bis alle anonymen Transaktionen abgeschlossen sind. Um zu überprüfen, ob diese repliziert sind, gehen Sie wie folgt vor:

    1. Führen Sie die folgende Anweisung auf Ihrer Quell-DB-Instance aus.

      MySQL 8.4

      SHOW BINARY LOG STATUS;

      MySQL 5.7 und 8.0

      SHOW MASTER STATUS;

      Notieren Sie die Werte in den Spalten File und Position.

    2. Verwenden Sie bei jedem Lesereplikat die Datei- und Positionsinformationen der Quellinstance im vorherigen Schritt, um die folgende Abfrage auszuführen.

      SELECT MASTER_POS_WAIT('file', position);

      Führen Sie die folgende Anweisung aus, wenn der Dateiname mysql-bin-changelog.000031 lautet und die Position 107 ist.

      SELECT MASTER_POS_WAIT('mysql-bin-changelog.000031', 107);

      Wenn das Lesereplikat über die angegebene Position hinausgeht, wird die Abfrage sofort zurückgegeben. Andernfalls wartet die Funktion. Gehen Sie zum nächsten Schritt über, wenn die Abfrage für alle Lesereplikate zurückgegeben wird.

  5. Setzen Sie die GTID-Parameter ausschließlich für die GTID-basierte Replikation zurück.

    1. Die Parametergruppe, die der DB-Instance zugeordnet ist, und jedes Lesereplikat muss die folgenden Parametereinstellungen haben:

      • gtid_modeON

      • enforce_gtid_consistencyON

    2. Starten Sie die DB-Instance und jedes Lesereplikat neu.

  6. Führen Sie auf jedem Lesereplikat die folgende Prozedur aus.

    MySQL 8.4 und höhere Hauptversionen

    CALL mysql.rds_set_source_auto_position(1);

    MySQL 8.0 und niedrigere Hauptversionen

    CALL mysql.rds_set_master_auto_position(1);