Konvertieren einer vorhandenen DB-Instance in einen Aktiv/Aktiv-Cluster - 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.

Konvertieren einer vorhandenen DB-Instance in einen Aktiv/Aktiv-Cluster

Die DB-Engine-Version der DB-Instance, die Sie zu einem Aktiv/Aktiv-Cluster migrieren möchten, muss eine der folgenden Versionen sein:

  • Alle MySQL 8.4-Versionen

  • MySQL 8.0.35 und höhere Unterversionen

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

Wenn Sie einen Aktiv/Aktiv-Cluster mit DB-Instances in mehr als einer VPC einrichten, vergewissern Sie sich, dass die unter Vorbereitungen für einen VPC-übergreifenden Aktiv/Aktiv-Cluster angegebenen Voraussetzungen erfüllt sind.

Führen Sie die folgenden Schritte aus, um eine vorhandene DB-Instance zu einem Aktiv/Aktiv-Cluster von RDS für MySQL zu migrieren.

Schritt 1: Festlegen des Parameters für den Aktiv/Aktiv-Cluster in einer oder mehreren benutzerdefinierten Parametergruppen

Die DB-Instances von RDS für MySQL in einem Aktiv/Aktiv-Cluster müssen einer benutzerdefinierten Parametergruppe zugeordnet werden, die über die entsprechende Einstellung für die erforderlichen Parameter verfügt. Informationen zu den Parametern und ihren jeweiligen erforderlichen Einstellungen finden Sie unter Erforderliche Parametereinstellungen für Aktiv/Aktiv-Cluster.

Sie können diese Parameter in neuen oder vorhandenen Parametergruppen festlegen. Um jedoch zu verhindern, dass hierdurch versehentlich DB-Instances beeinträchtigt werden, die nicht zum Aktiv/Aktiv-Cluster gehören, empfehlen wir dringend, eine neue benutzerdefinierte Parametergruppe zu erstellen. Die DB-Instances in einem Aktiv/Aktiv-Cluster können derselben DB-Parametergruppe oder unterschiedlichen DB-Parametergruppen zugeordnet werden.

Sie können das AWS-Managementkonsole oder das verwenden AWS CLI , um eine neue benutzerdefinierte Parametergruppe zu erstellen. Weitere Informationen finden Sie unter Erstellen einer DB-Parametergruppe in Amazon RDS. Im folgenden Beispiel wird der create-db-parameter-group AWS CLI Befehl ausgeführt, um eine benutzerdefinierte DB-Parametergruppe mit dem Namen RDS myactivepg for MySQL 8.0 zu erstellen:

Für Linux, macOS oder Unix:

aws rds create-db-parameter-group \ --db-parameter-group-name myactivepg \ --db-parameter-group-family mysql8.0 \ --description "Parameter group for active-active clusters"

Für Windows:

aws rds create-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --db-parameter-group-family mysql8.0 ^ --description "Parameter group for active-active clusters"

Sie können auch das AWS-Managementkonsole oder das verwenden AWS CLI , um die Parameter in der benutzerdefinierten Parametergruppe festzulegen. Weitere Informationen finden Sie unter Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS.

Im folgenden Beispiel wird der modify-db-parameter-group AWS CLI Befehl ausgeführt, um die Parameter für RDS for MySQL 8.0 festzulegen. Um dieses Beispiel mit RDS für MySQL 8.4 zu verwenden, ändern Sie slave_preserve_commit_order in replica_preserve_commit_order.

Für Linux, macOS oder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myactivepg \ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" \ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" \ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" \ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" \ "ParameterName='group_replication_group_name',ParameterValue='11111111-2222-3333-4444-555555555555',ApplyMethod=pending-reboot"

Für Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --parameters "ParameterName='rds.group_replication_enabled',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='rds.custom_dns_resolution',ParameterValue='1',ApplyMethod=pending-reboot" ^ "ParameterName='enforce_gtid_consistency',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='gtid-mode',ParameterValue='ON',ApplyMethod=pending-reboot" ^ "ParameterName='binlog_format',ParameterValue='ROW',ApplyMethod=immediate" ^ "ParameterName='slave_preserve_commit_order',ParameterValue='ON',ApplyMethod=immediate" ^ "ParameterName='group_replication_group_name',ParameterValue='11111111-2222-3333-4444-555555555555',ApplyMethod=pending-reboot"

Schritt 2: Zuordnen der DB-Instance zu einer DB-Parametergruppe, für die die erforderlichen Gruppenreplikationsparameter festgelegt wurden

Ordnen Sie die DB-Instance einer Parametergruppe zu, die Sie im vorherigen Schritt erstellt oder geändert haben. Detaillierte Anweisungen finden Sie unter Verknüpfen einer DB-Parametergruppe mit einer DB-Instance in Amazon RDS.

Starten Sie die DB-Instance neu, damit die neuen Parametereinstellungen wirksam werden. Detaillierte Anweisungen finden Sie unter Eine DB-Instance DB-Cluster neu starten.

Schritt 3: Erstellen des Aktiv/Aktiv-Clusters

Legen Sie den Parameter group_replication_group_seeds in der DB-Parametergruppe, die mit der DB-Instance verknüpft ist, auf den Endpunkt der konvertierten DB-Instance fest.

Sie können das AWS-Managementkonsole oder das verwenden AWS CLI , um den Parameter festzulegen. Sie müssen die DB-Instance nicht neu starten, nachdem Sie diesen Parameter festgelegt haben. Informationen zum Festlegen von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS.

Im folgenden Beispiel wird der modify-db-parameter-group AWS CLI Befehl ausgeführt, um die Parameter festzulegen:

Für Linux, macOS oder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myactivepg \ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306',ApplyMethod=immediate"

Für Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myactivepg ^ --parameters "ParameterName='group_replication_group_seeds',ParameterValue='myactivedb1.123456789012.us-east-1.rds.amazonaws.com:3306',ApplyMethod=immediate"

Schritt 4: Erstellen von zusätzlichen DB-Instances von RDS für MySQL für den Aktiv/Aktiv-Cluster

Um zusätzliche DB-Instances für den Active-Active-Cluster zu erstellen, führen Sie eine point-in-time Wiederherstellung auf der DB-Instance durch, die Sie konvertieren. Detaillierte Anweisungen finden Sie unter Hinzufügen einer DB-Instance zu einem Aktiv/Aktiv-Cluster mithilfe von zeitpunktbezogener Wiederherstellung.

Ein Aktiv/Aktiv-Cluster kann bis zu neun DB-Instances enthalten. Führen Sie die point-in-time Wiederherstellung auf der DB-Instance durch, bis Sie die Anzahl der DB-Instances haben, die Sie für den Cluster benötigen. Stellen Sie bei der Ausführung sicher point-in-recovery, dass Sie die DB-Instance, die Sie hinzufügen, einer DB-Parametergruppe zuordnen, für die der Wert auf rds.group_replication_enabled festgelegt ist1. Andernfalls wird die Gruppenreplikation auf der neu hinzugefügten DB-Instance nicht gestartet.

Schritt 5: Initialisieren der Gruppe auf der konvertierten DB-Instance

Initialisieren Sie die Gruppe und starten Sie die Replikation:

  1. Stellen Sie für einen SQL-Client eine Verbindung mit der konvertierten DB-Instance her. Weitere Informationen zum Herstellen einer Verbindung mit einer DB-Instance von RDS für MySQL finden Sie unter Herstellen einer Verbindung mit Ihrer MySQL-DB-Instance.

  2. Führen Sie im SQL-Client die folgenden gespeicherten Prozeduren aus und group_replication_user_password ersetzen Sie sie durch das Kennwort für den rdsgrprepladmin Benutzer. Der Benutzer rdsgrprepladmin ist für Gruppenreplikationsverbindungen in einem Aktiv/Aktiv-Cluster reserviert. Das Passwort für diesen Benutzer muss auf allen DB-Instances in einem Aktiv/Aktiv-Cluster identisch sein.

    call mysql.rds_set_configuration('binlog retention hours', 168); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password'); call mysql.rds_group_replication_start(1);

    In diesem Beispiel wird der Wert binlog retention hours auf 168 festgelegt, was bedeutet, dass Binärprotokolldateien sieben Tage lang auf der DB-Instance beibehalten werden. Sie können diesen Wert an Ihre Anforderungen anpassen.

    In diesem Beispiel wird 1 in der gespeicherten Prozedur mysql.rds_group_replication_start festgelegt, um eine neue Gruppe mit der aktuellen DB-Instance zu initialisieren.

    Weitere Informationen zu den im Beispiel aufgerufenen gespeicherten Prozeduren finden Sie unter Verwalten von Aktiv/Aktiv-Clustern.

Schritt 6: Starten der Replikation auf den anderen DB-Instances im Aktiv/Aktiv-Cluster

Verwenden Sie für alle DB-Instances im Aktiv/Aktiv-Cluster einen SQL-Client, um eine Verbindung mit der Instance herzustellen, und führen Sie die folgenden gespeicherten Prozeduren aus. group_replication_user_passwordErsetzen Sie es durch das Passwort für den rdsgrprepladmin Benutzer.

call mysql.rds_set_configuration('binlog retention hours', 168); -- 7 days binlog call mysql.rds_group_replication_create_user('group_replication_user_password'); call mysql.rds_group_replication_set_recovery_channel('group_replication_user_password'); call mysql.rds_group_replication_start(0);

In diesem Beispiel wird der Wert binlog retention hours auf 168 festgelegt, was bedeutet, dass Binärprotokolldateien sieben Tage lang auf der jeweiligen DB-Instance beibehalten werden. Sie können diesen Wert an Ihre Anforderungen anpassen.

In diesem Beispiel wird 0 in der gespeicherten Prozedur mysql.rds_group_replication_start festgelegt, um die aktuelle DB-Instance einer vorhandenen Gruppe hinzuzufügen.

Tipp

Achten Sie darauf, dass Sie diese gespeicherten Prozeduren auf allen anderen DB-Instances im Aktiv/Aktiv-Cluster ausführen.

Schritt 7: Überprüfen des Status des Aktiv/Aktiv-Clusters (empfohlen)

Um sich zu vergewissern, dass jedes Mitglied des Clusters korrekt konfiguriert ist, überprüfen Sie den Status des Clusters, indem Sie eine Verbindung mit einer DB-Instance im Aktiv/Aktiv-Cluster herstellen und den folgenden SQL-Befehl ausführen:

SELECT * FROM performance_schema.replication_group_members;

Für die Ausgabe sollte ONLINE für MEMBER_STATE der jeweiligen DB-Instance wie in der folgenden Beispielausgabe angezeigt werden:

+---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+ | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | MEMBER_COMMUNICATION_STACK | +---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+ | group_replication_applier | 9854d4a2-5d7f-11ee-b8ec-0ec88c43c251 | ip-10-15-3-137 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL | | group_replication_applier | 9e2e9c28-5d7f-11ee-8039-0e5d58f05fef | ip-10-15-3-225 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL | | group_replication_applier | a6ba332d-5d7f-11ee-a025-0a5c6971197d | ip-10-15-1-83 | 3306 | ONLINE | PRIMARY | 8.0.35 | MySQL | +---------------------------+--------------------------------------+----------------+-------------+--------------+-------------+----------------+----------------------------+ 3 rows in set (0.00 sec)

Informationen zu den möglichen MEMBER_STATE-Werten finden Sie unter Gruppenreplikations-Serverstatus in der MySQL-Dokumentation.