Arbeiten mit MariaDB Read Replicas - 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.

Arbeiten mit MariaDB Read Replicas

Im Folgenden finden Sie spezifische Informationen zum Arbeiten mit Lesereplikaten in Amazon RDS for MariaDB. Allgemeine Informationen zu Lesereplikaten und Anleitungen zu ihrer Verwendung finden Sie in Arbeiten mit DB-Instance-Lesereplikaten.

Konfigurieren von Lesereplikaten mit MariaDB

Bevor eine MariaDB-DB-Instance als Replikationsquelle eingesetzt werden kann, müssen Sie automatische Backups für die Quell-DB-Instance aktivieren, indem Sie den Aufbewahrungszeitraum für Backups auf einen anderen Wert als 0 festlegen. Diese Erfordernis gilt auch für ein Lesereplikat, das die Quell-DB-Instance für ein anderes Lesereplikat ist.

Sie können bis zu 15 Lesereplikate von einer DB-Instance innerhalb derselben Region erstellen. Damit die Replikation effektiv durchgeführt werden kann, sollte jedes Lesereplikat über dieselbe Menge an Rechen- und Speicherressourcen wie die Quell-DB-Instance verfügen. Wenn Sie die Quell-DB-Instance skalieren, skalieren Sie auch die Lesereplikate.

RDS für MariaDB unterstützt kaskadierende Lesereplikate. Informationen zum Konfigurieren von kaskadierenden Lesereplikaten finden Sie unter Verwendung von kaskadierenden Lesereplikaten mit RDS für MariaDB.

Sie können mehrere Erstellungs- und Löschaktionen für Lesereplikate gleichzeitig ausführen, die auf die gleiche Quell-DB-Instance verweisen. Halten Sie sich bei der Ausführung dieser Aktionen an die Grenze von 15 Lesereplikaten für jede Quell-Instance.

Konfigurieren von Replikationsfiltern mit MariaDB

Sie können Replikationsfilter verwenden, um anzugeben, welche Datenbanken und Tabellen mit einem Lesereplikat repliziert werden. Replikationsfilter können Datenbanken und Tabellen in die Replikation einbeziehen oder sie von der Replikation ausschließen.

Im Folgenden finden Sie einige Anwendungsfälle für Replikationsfilter:

  • Reduzieren der Größe eines Lesereplikats. Mit Replikationsfiltern können Sie die Datenbanken und Tabellen ausschließen, die für das Lesereplikat nicht benötigt werden.

  • Ausschließen von Datenbanken und Tabellen von Lesereplikaten aus Sicherheitsgründen.

  • Replizieren verschiedener Datenbanken und Tabellen für spezifische Anwendungsfälle bei verschiedenen Lesereplikaten. Beispielsweise könnten Sie bestimmte Lesereplikate für Analysen oder Sharding verwenden.

  • Für eine DB-Instance mit Read Replicas in verschiedenen AWS-Regionen, um unterschiedliche Datenbanken oder Tabellen in verschiedenen AWS-Regionen zu replizieren.

Anmerkung

Sie können Replikationsfilter verwenden, um anzugeben, welche Datenbanken und Tabellen mit einer primären MariaDB-Instance repliziert werden, die als Replikat in einer eingehenden Replikationstopologie konfiguriert ist. Weitere Informationen zu dieser Konfiguration finden Sie unter Konfigurieren der Replikation der Binärprotokolldateiposition mit einer externen Quell-Instance.

Einstellen der Parameter der Replikationsfilter bei RDS for MariaDB

Um Replikationsfilter zu konfigurieren, legen Sie die folgenden Filterparameter für die Replikation fest:

  • replicate-do-db – Repliziert Änderungen der angegebenen Datenbanken. Wenn Sie diesen Parameter für ein Lesereplikat festlegen, werden nur die im Parameter angegebenen Datenbanken repliziert.

  • replicate-ignore-db – Repliziert keine Änderungen der angegebenen Datenbanken. Wenn der Parameter replicate-do-db für ein Lesereplikat festgelegt ist, wird dieser Parameter nicht ausgewertet.

  • replicate-do-table – Repliziert Änderungen der angegebenen Tabellen. Wenn Sie diesen Parameter für ein Lesereplikat festlegen, werden nur die im Parameter angegebenen Tabellen repliziert. Wenn der Parameter replicate-do-db oder replicate-ignore-db festgelegt ist, muss die Datenbank, die die angegebenen Tabellen enthält, in die Replikation mit dem Lesereplikat einbezogen werden.

  • replicate-ignore-table – Repliziert keine Änderungen der angegebenen Tabellen. Wenn der Parameter replicate-do-table für ein Lesereplikat festgelegt ist, wird dieser Parameter nicht ausgewertet.

  • replicate-wild-do-table – Repliziert Tabellen basierend auf den angegebenen Namensmustern für Datenbanken und Tabellen. Die Platzhalterzeichen % und _ werden unterstützt. Wenn der Parameter replicate-do-db oder replicate-ignore-db festgelegt ist, müssen Sie die Datenbank, welche die angegebenen Tabellen enthält, in die Replikation mit dem Lesereplikat einbeziehen.

  • replicate-wild-ignore-table – Repliziert keine Tabellen basierend auf den angegebenen Namensmustern für Datenbanken und Tabellen. Die Platzhalterzeichen % und _ werden unterstützt. Wenn die Parameter replicate-do-table oder replicate-wild-do-table für ein Lesereplikat festgelegt sind, wird dieser Parameter nicht ausgewertet.

Die Parameter werden in der angegebenen Reihenfolge ausgewertet. Weitere Informationen darüber, wie diese Parameter funktionieren, finden Sie in der Dokumentation für MariaDB.

Standardmäßig hat jeder dieser Parameter einen leeren Wert. Sie können diese Parameter auf jedem Lesereplikat verwenden, um Replikationsfilter festzulegen, zu ändern und zu löschen. Wenn Sie einen dieser Parameter festlegen, trennen Sie die einzelnen Filter durch ein Komma voneinander.

Sie können die Platzhalterzeichen % und _ in den Parametern replicate-wild-do-table und replicate-wild-ignore-table verwenden. Der Platzhalter % entspricht einer beliebigen Anzahl von Zeichen, und der Platzhalter _ entspricht nur einem Zeichen.

Das binäre Protokollierungsformat der Quell-DB-Instance ist wichtig für die Replikation, da es den Datensatz der Datenänderungen bestimmt. Die Einstellung des Parameters binlog_format bestimmt, ob die Replikation zeilenbasiert oder anweisungsbasiert ist. Weitere Informationen finden Sie unter Binäres Protokollformat.

Anmerkung

Alle DDL-Anweisungen (Data Definition Language) werden unabhängig von der Einstellung binlog_format für die Quell-DB-Instance als Anweisungen repliziert.

Einschränkungen der Replikationsfilter bei RDS for MariaDB

Folgende Einschränkungen gelten für Replikationsfilter bei RDS for MariaDB:

  • Jeder Filterparameter für die Replikation hat ein Limit von 2.000 Zeichen.

  • Kommas werden in Replikationsfiltern nicht unterstützt.

  • Die Optionen binlog_do_db und binlog_ignore_db von MariaDB für binäre Protokollfilter werden nicht unterstützt.

  • Die Replikationsfilterung unterstützt keine XA-Transaktionen.

    Weitere Informationen finden Sie unter Einschränkungen bei XA-Transaktionen in der MySQL-Dokumentation.

  • Die Replikationsfilterung wird für RDS for MariaDB Version 10.2 nicht unterstützt.

Beispiele für Replikationsfilter bei RDS for MariaDB

Um die Replikationsfilter für ein Lesereplikat zu konfigurieren, ändern Sie die Parameter der Replikationsfilter in der Parametergruppe, die dem Lesereplikat zugeordnet ist.

Anmerkung

Eine Standard-Parametergruppe kann nicht modifiziert werden. Erstellen Sie eine neue Parametergruppe und ordnen Sie diese der Lesereplika zu, wenn die Lesereplika eine Standardparametergruppe verwendet. Weitere Informationen zu DB-Parametergruppen finden Sie unter Parametergruppen für Amazon RDS.

Sie können Parameter in einer Parametergruppe mithilfe von AWS Management Console, AWS CLI oder der RDS-API festlegen. Weitere Informationen zum Festlegen von Parametern finden Sie unter Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS. Wenn Sie Parameter in einer Parametergruppe festlegen, verwenden alle DB-Instances, die der Parametergruppe zugeordnet sind, diese Parametereinstellungen. Wenn Sie Parameter der Replikationsfilter in einer Parametergruppe festlegen, stellen Sie sicher, dass die Parametergruppe nur Lesereplikaten zugeordnet ist. Lassen Sie die Parameter der Replikationsfilter für Quell-DB-Instances leer.

In den folgenden Beispielen werden die Parameter mithilfe von festgeleg AWS CLI. Diese Beispiele legen ApplyMethod auf immediate fest, sodass die Parameteränderungen unmittelbar nach Abschluss des CLI-Befehls erfolgen. Wenn Sie möchten, dass eine ausstehende Änderung nach dem Neustart des Lesereplikats angewendet wird, legen Sie ApplyMethod auf pending-reboot fest.

In den folgenden Beispielen werden Replikationsfilter festgelegt:

Beispiel Einschließen von Datenbanken in die Replikation

Das folgende Beispiel schließt die Datenbanken mydb1 und mydb2 in die Replikation ein. Wenn Sie replicate-do-db für ein Lesereplikat festlegen, werden nur die im Parameter angegebenen Datenbanken repliziert.

Für Linux, macOSoder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"

Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-do-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
Beispiel Einschließen von Tabellen in die Replikation

Das folgende Beispiel schließt die Tabellen table1 und table2 in der Datenbank mydb1 in die Replikation ein.

Für Linux, macOSoder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"

Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-do-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
Beispiel Einschließen von Tabellen in die Replikation mit Platzhalterzeichen

Das folgende Beispiel schließt Tabellen mit Namen, die mit orders und returns beginnen, in Datenbank mydb in die Replikation ein.

Für Linux, macOSoder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"

Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"
Beispiel Escape-Platzhalterzeichen in Namen

Das folgende Beispiel zeigt, wie Sie das Escapezeichen \ verwenden, um ein Platzhalterzeichen zu umgehen, das Teil eines Namens ist.

Angenommen, Sie haben mehrere Tabellennamen in der Datenbank mydb1, die mit my_table beginnen, und Sie möchten diese Tabellen in die Replikation einschließen. Die Tabellennamen enthalten einen Unterstrich, der auch ein Platzhalterzeichen darstellt, sodass in dem Beispiel Unterstriche in den Tabellennamen mit Escapezeichen versehen sind.

Für Linux, macOSoder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"

Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-wild-do-table", "ParameterValue": "my\_table%", "ApplyMethod":"immediate"}]"
Beispiel Ausschließen von Datenbanken von der Replikation

Das folgende Beispiel schließt die Datenbanken mydb1 und mydb2 von der Replikation aus.

Für Linux, macOSoder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"

Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-ignore-db", "ParameterValue": "mydb1,mydb2", "ApplyMethod":"immediate"}]"
Beispiel Ausschließen von Tabellen von der Replikation

Das folgende Beispiel schließt die Tabellen table1 und table2 in der Datenbank mydb1 von der Replikation aus.

Für Linux, macOSoder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"

Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-ignore-table", "ParameterValue": "mydb1.table1,mydb1.table2", "ApplyMethod":"immediate"}]"
Beispiel Ausschließen von Tabellen von der Replikation mit Platzhalterzeichen

Das folgende Beispiel schließt Tabellen mit Namen, die mit orders und returns beginnen, in Datenbank mydb von der Replikation aus.

Für Linux, macOSoder Unix:

aws rds modify-db-parameter-group \ --db-parameter-group-name myparametergroup \ --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"

Windows:

aws rds modify-db-parameter-group ^ --db-parameter-group-name myparametergroup ^ --parameters "[{"ParameterName": "replicate-wild-ignore-table", "ParameterValue": "mydb.orders%,mydb.returns%", "ApplyMethod":"immediate"}]"

Anzeigen der Replikationsfilter für ein Lesereplikat

Sie können die Replikationsfilter für ein Lesereplikat wie folgt anzeigen:

  • Überprüfen Sie die Einstellungen der Parameter der Replikationsfilter in der dem Lesereplikat zugeordneten Parametergruppe.

    Detaillierte Anweisungen finden Sie unter Parameterwerte für eine DB-Parametergruppe in Amazon RDS Amazon anzeigen.

  • Stellen Sie in einem MariaDB-Client eine Verbindung zum Read-Replikat her und führen Sie dieSHOW REPLICA STATUS Anweisung aus.

    In der Ausgabe werden in den folgenden Feldern die Replikationsfilter für das Lesereplikat angezeigt:

    • Replicate_Do_DB

    • Replicate_Ignore_DB

    • Replicate_Do_Table

    • Replicate_Ignore_Table

    • Replicate_Wild_Do_Table

    • Replicate_Wild_Ignore_Table

    Weitere Informationen zu diesen Feldern finden Sie unter Überprüfen des Replikationsstatus in der MySQL-Dokumentation.

    Anmerkung

    Frühere Versionen von MariaDB wurdenSHOW SLAVE STATUS anstelle von verwendetSHOW REPLICA STATUS. Wenn Sie vor 10.5 eine MariaDB-Version verwenden, verwenden Si SHOW SLAVE STATUS.

Konfigurieren der verzögerten Replikation mit MariaDB

Sie können die verzögerte Replikation als Strategie für die Notfallwiederherstellung einsetzen. Für die verzögerte Replikation geben Sie die Mindestanzahl von Sekunden an, um welche die Replikation von der Quelle in das Lesereplikat verzögert werden soll. Wenn es zu einem Notfall kommt, weil beispielsweise eine Tabelle versehentlich gelöscht wurde, können Sie das Problem mit den folgenden Schritten schnell beheben:

Anmerkung
  • Die verzögerte Replikation wird für MariaDB 10.6 und höher unterstützt.

  • Verwenden Sie gespeicherte Prozeduren, um die verzögerte Replikation zu konfigurieren. Sie können die verzögerte Replikation nicht mit der AWS Management Console, der AWS CLI oder der Amazon-RDS-API konfigurieren.

  • Sie können die Replikation basierend auf globalen Transaktionskennungen (GTIDs) in einer verzögerten Replikationskonfiguration verwenden.

Konfigurieren der verzögerten Replikation während der Erstellung von Read Replicas

Um die verzögerte Replikation für zukünftig aus einer DB-Instance erstellte Lesereplikate zu konfigurieren, führen Sie die gespeicherte Prozedur mysql.rds_set_configuration mit dem Parameter target delay aus.

Konfigurieren Sie die verzögerte Replikation während der Lesereplikat-Erstellung wie folgt:
  1. Stellen Sie als Master-Benutzer mit einem MariaDB-Client eine Verbindung zu der MariaDB-DB-Instance her, die als Quelle für Lesereplikate verwendet werden soll.

  2. Führen Sie die gespeicherte Prozedur mysql.rds_set_configuration mit dem Parameter target delay aus.

    Führen Sie beispielsweise die folgende gespeicherte Prozedur aus, um anzugeben, dass die Replikation um mindestens eine Stunde (3.600 Sekunden) für jedes Lesereplikat verzögert werden soll, das aus der aktuellen DB-Instance erstellt wird.

    call mysql.rds_set_configuration('target delay', 3600);
    Anmerkung

    Nach dem Ausführen dieser gespeicherten Prozedur wird jedes Lesereplikat, das Sie mit der AWS CLI oder der Amazon-RDS-API erstellen, mit einer um die angegebene Anzahl Sekunden verzögerten Replikation konfiguriert.

Ändern der verzögerten Replikation einer vorhandenen Read Replica

Führen Sie die gespeicherte Prozedur mysql.rds_set_source_delay aus, um die verzögerte Replikation eines vorhandenen Lesereplikats zu ändern.

Ändern Sie die verzögerte Replikation eines existierenden Lesereplikats wie folgt:
  1. Verwenden Sie einen MariaDB-Client, um als Master-Benutzer eine Verbindung zum Lesereplikat herzustellen.

  2. Verwenden Sie die gespeicherte Prozedur mysql.rds_stop_replication, um die Replikation zu stoppen.

  3. Führen Sie die gespeicherte Prozedur mysql.rds_set_source_delay aus.

    Führen Sie beispielsweise die folgende gespeicherte Prozedur aus, um anzugeben, dass die Replikation für das Lesereplikat um mindestens eine Stunde (3600 Sekunden) verzögert werden soll.

    call mysql.rds_set_source_delay(3600);
  4. Verwenden Sie die gespeicherte Prozedur mysql.rds_start_replication, um die Replikation zu starten.

Hochstufen eines Lesereplikats

Nachdem die Replikation gestoppt wurde, können Sie in einem Szenario der Notfallwiederherstellung ein Lesereplikat zur neuen Quell-DB-Instance hochstufen. Weitere Informationen zum Hochstufen eines Lesereplikats finden Sie unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance.

Löschen von Lesereplikaten bei MariaDB

Lesereplikate wurden zur Unterstützung von Leseabfragen entwickelt. Jedoch könnten gelegentliche Updates notwendig sein. Sie könnten beispielsweise einen Index hinzufügen, um die spezifischen Abfragetypen beim Zugriff auf das Replica zu beschleunigen. Sie können Updates aktivieren, indem Sie den Parameter read_only in der DB-Parametergruppe für das Lesereplikat auf 0 setzen.

Arbeiten mit Bereitstellungen von Multi-AZ-Lesereplikaten mit MariaDB

Sie können ein Lesereplikat aus Single-AZ- oder Multi-AZ-DB-Instance-Bereitstellungen erstellen. Sie können Multi-AZ-Bereitstellungen verwenden, um die Haltbarkeit und Verfügbarkeit kritischer Daten zu verbessern, aber Sie können Multi-AZ nicht zweitranging noch für schreibgeschützte Abfragen verwenden. Stattdessen können Sie Lesereplikate aus Multi-AZ-DB-Instances mit hohem Datenverkehr erstellen, um schreibgeschützte Abfragen auslagern zu können. Wenn die Quell-Instance einer Multi-AZ-Bereitstellung ein Failover zur sekundären Instance durchführt, werden alle zugehörigen Lesereplikate automatisch auf die Verwendung der sekundären (jetzt primären) Instance als Replikationsquelle umgeschaltet. Weitere Informationen finden Sie unter Konfiguration und Verwaltung einer Multi-AZ-Bereitstellung.

Sie können ein Lesereplikat als Multi-AZ-DB-Instance erstellen. Amazon RDS erstellt eine Standby-Version des Replikats in einer anderen Availability Zone, um ein Failover für das Replikat zu unterstützen. Das Erstellen Ihres Lesereplikats als Multi-AZ-DB-Instance ist unabhängig davon, ob die Quelldatenbank eine Multi-AZ-DB-Instance ist.

Verwendung von kaskadierenden Lesereplikaten mit RDS für MariaDB

RDS für MariaDB unterstützt kaskadierende Lesereplikate. Mit kaskadierenden Lesereplikaten können Sie Lesevorgänge skalieren, ohne dass Sie zusätzlichen Overhead für Ihre Quell-DB-Instance von RDS für MariaDB verursachen.

Bei kaskadierenden Lesereplikaten sendet Ihre DB-Instance von RDS für MariaDB Daten an das erste Lesereplikat in der Kette. Dieses Lesereplikat sendet dann Daten an das zweite Replikat in der Kette usw. Das Endergebnis ist, dass alle Lesereplikate in der Kette die Änderungen von der DB-Instance von RDS für MariaDB aufweisen, jedoch ohne Overhead ausschließlich auf der Quell-DB-Instance zu verursachen.

Sie können eine Reihe von bis zu drei Lesereplikaten in einer Kette von einer Quell-DB-Instance von RDS für MariaDB erstellen. Angenommen, Sie haben eine DB-Instance von RDS für MariaDB, mariadb-main. Sie haben die folgenden Möglichkeiten:

  • Beginnend mit mariadb-main erstellen Sie das erste Lesereplikat in der Kette read-replica-1.

  • Als Nächstes erstellen Sie ab read-replica-1 das nächste Lesereplikat in der Kette read-replica-2.

  • Schließlich erstellen Sie ab read-replica-2 das nächste Lesereplikat in der Kette read-replica-3.

Sie können kein weiteres Lesereplikat über dieses dritte kaskadierende Lesereplikat hinaus in der Reihe für mariadb-main erstellen. Eine vollständige Reihe von Instances aus einer Quell-DB-Instance von RDS für MariaDB bis zum Ende einer Reihe kaskadierender Lesereplikate kann aus höchstens vier DB-Instances bestehen.

Damit die Kaskadierung von Lesereplikaten funktioniert, müssen automatische Backups für jede Quell-DB-Instance von RDS für MariaDB aktiviert sein. Erstellen Sie zuerst das Lesereplikat und ändern Sie es dann, um automatische Backups für das Lesereplikat für zu aktivieren. Weitere Informationen finden Sie unter Erstellen eines Lesereplikats.

Wie bei jedem Lesereplikat können Sie ein Lesereplikat, das Teil einer Kaskade ist, hochstufen. Wenn Sie ein Lesereplikat aus einer Kette von Lesereplikaten hochstufen, wird dieses Replikat aus der Kette entfernt. Angenommen, Sie möchten einen Teil der Workload von Ihrer mariadb-main-DB-Instance zu einer neuen Instance verschieben, die nur von der Buchhaltung verwendet wird. Ausgehend von der Kette von drei Lesereplikaten aus dem Beispiel entscheiden Sie sich, read-replica-2 hochzustufen. Die Kette ist wie folgt betroffen:

  • Durch Hochstufen von read-replica-2 wird es aus der Replikationskette entfernt.

    • Es ist jetzt eine vollständige DB-Instance mit Lese-/Schreibzugriff.

    • Die Replizierung auf read-replica-3 wird fortgesetzt wie vor der Hochstufung.

  • Ihre mariadb-main setzt die Replizierung auf read-replica-1 fort.

Weitere Informationen über das Hochstufen von Lesereplikaten finden Sie unter Hochstufen eines Lesereplikats zur eigenständigen DB-Instance.

Überwachung von MariaDB Read Replicas

Für MariaDB-Lesereplikate können Sie die Replikationsverzögerung in Amazon überwachen, CloudWatch indem Sie die Amazon-RDS-ReplicaLagMetrik anzeigen. Die Kennzahl ReplicaLag meldet den Wert des Feldes Seconds_Behind_Master des Befehls SHOW REPLICA STATUS.

Anmerkung

Frühere Versionen von MariaDB wurdenSHOW SLAVE STATUS anstelle von verwendetSHOW REPLICA STATUS. Wenn Sie vor 10.5 eine MariaDB-Version verwenden, verwenden Si SHOW SLAVE STATUS.

Häufige Ursachen für Replikationsverzögerung in MariaDB:

  • Ein Netzwerkausfall.

  • Schreibvorgänge auf Tabellen mit Indizes auf einem Lesereplikat. Wenn der Parameter read_only im Lesereplikat nicht auf 0 gesetzt ist, kann es die Replikation unterbrechen.

  • Die Verwendung einer nicht-transaktionalen Speicher-Engine wie MyISAM: Die Replikation wird nur für die InnoDB-Speicher-Engine für MariaDB unterstützt.

Wenn die Metrik ReplicaLag 0 erreicht, hat das Replica den Stand der Quell-DB-Instance erreicht. Wenn die Metrik ReplicaLag -1 zurückgibt, ist die Replikation aktuell nicht aktiv. ReplicaLag = -1 ist gleich Seconds_Behind_Master = NULL.

Starten und Stoppen der Replikation mit MariaDB Read Replicas

Sie können den Replikationsvorgang für eine Amazon RDS-DB-Instance anhalten oder neustarten, indem Sie die gespeicherten Systemprozeduren mysql.rds_stop_replication und mysql.rds_start_replication aufrufen. Dies können Sie tun, wenn Sie eine Replikation zwischen Amazon RDS-Instances für langandauernde Operationen, wie dem Erstellen von großen Indexen, durchführen. Sie müssen Replikation auch anhalten und starten, wenn Sie Datenbanken importieren oder exportieren. Weitere Informationen erhalten Sie unter Importieren von Daten in eine Amazon-RDS-MariaDB- oder MySQL-Datenbank mit reduzierter Ausfallzeit und Exportieren von Daten aus einer MySQL DB-Instance mithilfe der Replikation.

Wenn eine Replikation für mehr als 30 aufeinanderfolgende Tage manuell oder aufgrund eines Replikationsfehlers gestoppt wird, beendet Amazon RDS die Replikation zwischen der Quell-DB-Instance und allen Lesereplikaten. um erhöhten Speicheranforderungen in der Quell-DB-Instance vorzubeugen und lange Failover-Zeiten zu vermeiden. Die Lesereplikat-DB-Instance ist weiterhin verfügbar. Die Replikation kann jedoch nicht fortgesetzt werden, da die vom Lesereplikat benötigten Binärprotokolle aus der Quell-DB-Instance nach Beendigung der Replikation gelöscht wurden. Sie können ein neues Lesereplikat für die Quell-DB-Instance erstellen, um die Replikation erneut aufzunehmen.

Fehlerbehebung bei Problemen mit einer MariaDB Read Replica

Die Replikationstechnologien für MariaDB arbeiten asynchron. Da sie asynchron sind, steigt gelegentlich BinLogDiskUsage in der Quell-DB-Instance an und ReplicaLag ist im Lesereplikat zu erwarten. Beispielsweise kann auf der Quell-DB-Instance eine große Anzahl von Schreibvorgängen gleichzeitig ausgeführt werden. Dagegen werden Schreibvorgänge zum Lesereplikat über einen einzigen I/O-Thread seriell abgearbeitet. Dies kann zu einer Verzögerung zwischen der Quell-DB-Instance und dem Lesereplikat führen. Weitere Informationen über schreibgeschützte Replikate in der MariaDB-Dokumentation finden Sie unter Replikation - Übersicht.

Sie können folgende Dinge tun, um die Verzögerungszeit zwischen Aktualisierungen einer Quell-DB-Instance und der nachfolgenden Aktualisierung des Lesereplikats zu reduzieren:

  • Passen Sie die Speichergröße und die DB-Instance-Klasse eines Lesereplikats an die der Quell-DB-Instance an.

  • Stellen Sie sicher, dass Parametereinstellungen in den DB-Parametergruppen, die von der Quell-DB-Instance und den Lesereplikaten verwendet werden, kompatibel sind. Weitere Informationen und ein Beispiel finden Sie in der Beschreibung des max_allowed_packet-Parameters weiter unten in diesem Abschnitt.

Amazon RDS überwacht den Replikationsstatus Ihrer Lesereplikate und setzt den Replication State der Lesereplikat-Instance auf Error, wenn die Replikation aus irgendeinem Grund beendet wird. Ein Beispiel wären auf Ihrem Lesereplikat ausgeführte DML-Abfragen, die mit den Aktualisierungen auf der Quell-DB-Instance in Konflikt treten.

Sie können die Details des von der MariaDB-Engine zurückgegebenen Fehlers im Feld Replication Error überprüfen. Ereignisse, die den Status des Lesereplikats angeben, werden ebenfalls generiert, einschließlich RDS-EVENT-0045, RDS-EVENT-0046 und RDS-EVENT-0047. Weitere Informationen über Ereignisse und Abonnements zu Ereignissen finden Sie unter Mit RDS Amazon-Event-Benachrichtigungen arbeiten. Wenn eine MariaDB-Fehlermeldung zurückgegeben wird, überprüfen Sie den Fehler in der MariaDB error message documentation.

Ein häufiges Problem, das Replikationsfehler verursachen kann, besteht, wenn der Wert für den max_allowed_packet-Parameter eines Lesereplikats niedriger ist als der Wert für den max_allowed_packet-Parameter der Quell-DB-Instance. Der max_allowed_packet-Parameter ist ein benutzerdefinierter Parameter, den Sie in einer DB-Parametergruppe festlegen können, mit der die maximale Größe des auf der Datenbank ausführbaren DML-Codes angegeben wird. In einigen Fällen ist der Parameterwert max_allowed_packet in der mit einer Quell-DB-Instance verknüpften DB-Parametergruppe kleiner als der Parameterwert max_allowed_packet in der mit dem Lesereplikat der Quelle verknüpften DB-Parametergruppe. In diesen Fällen kann der Replikationsvorgang einen Fehler zurückgeben (Paket größer als "max_allowed_packet" Bytes) und die Replikation anhalten. Sie können den Fehler beheben, indem Sie die DB-Parametergruppe der Quelle und des Lesereplikats mit denselben Parameterwerten für max_allowed_packet verwenden.

Weitere Situationen, bei denen Replikationsfehler auftreten können, sind die Folgenden:

  • Schreibvorgänge auf Tabellen in einem Lesereplikat. Wenn Sie Indizes für ein Lesereplikat erstellen, müssen Sie den read_only-Parameter auf 0 setzen, um die Indizes zu erstellen. Wenn Sie in dem Lesereplikat in Tabellen schreiben, kann die Replikation unterbrochen werden.

  • Bei Verwendung einer nicht-transaktionalen Speicher-Engine wie MyISAM, erfordern Lesereplikate eine transaktionale Speicher-Engine. Die Replikation wird nur für die InnoDB-Speicher-Engine für MariaDB unterstützt.

  • Verwenden von nicht-deterministischen Abfragen wie SYSDATE(). Weitere Informationen finden Sie unter Erkennen sicherer und nicht sicherer Anweisungen in der binären Protokollierung.

Wenn Sie entscheiden, dass Sie einen Fehler problemlos überspringen können, folgen Sie den Schritten in Überspringen von Fehlern für die aktuelle Replikation. Andernfalls können Sie das Lesereplikat löschen und eine Instance mit derselben DB-Instance-Kennung erstellen, sodass der Endpunkt mit dem alten Lesereplikat übereinstimmt. Wird ein Replikationsfehler behoben, ändert sich das Feld Replication State zu Replicating.

Bei MariaDB-DB-Instances kann in manchen Fällen nicht auf sekundäre Lesereplikate umgestellt werden, wenn während des Fehlers nicht alle Binärprotokollereignisse (binlog) bereinigt wurden. In diesen Fällen müssen Sie die Lesereplikate manuell löschen und neu erstellen. Sie können das Risiko minimieren, indem Sie die folgenden Parameterwerte einstellen: sync_binlog=1 und innodb_flush_log_at_trx_commit=1. Diese Einstellungen könnten die Leistung reduzieren, daher ist es ratsam, sie vor der Implementierung in einer Produktionsumgebung ausgiebig zu testen.