IBM Cloud Docs
Nur-Lese-Replikat

Nur-Lese-Replikat

Eine Databases for PostgreSQL Nur-Lese-Replik repliziert alle Ihre Daten von der Leader-Bereitstellung zur Replik-Bereitstellung durch asynchrone Replikation. Wie der Name bereits impliziert, unterstützen Nur-Lese-Replikate Leseoperationen und können für den Ausgleich bei Datenbanken verwendet werden, die schreib- und leseintensive Operationen aufweisen. Das Nur-Lese-Replikat hat ein einzelnes PostgreSQL-Datenmember und wird mit derselben Memberverbrauchsrate wie die Leader-Bereitstellung berechnet.

Die hochverfügbare Nur-Lese-Replik

Eine hochverfügbare Databases for PostgreSQL Nur-Lese-Replik bietet Vorteile wie verbesserte Leseskalierbarkeit, erhöhte Verfügbarkeit, verringerte Leselatenz, Backup- und Disaster-Recovery-Funktionen und die Möglichkeit, den Leseverkehr effizient zu verteilen. Sie trägt zu einer robusteren und reaktionsfähigeren Datenbankinfrastruktur für Ihre Anwendung bei. Weitere Informationen finden Sie unter Die Databases for PostgreSQL hochverfügbare Nur-Lese-Replik.

Führende Bereitstellung

Auf der Registerkarte Nur-Lese-Replikate einer Databases for PostgreSQL, bevor irgendwelche Nur-Lese-Replikate bereitgestellt werden, wird im mittleren Bereich vermerkt, dass keine Lese-Replikate vorhanden sind, und eine Schaltfläche Erstellen bereitgestellt.

Wenn eine führende Bereitstellung über ein Nur-Lese-Replikat verfügt, das ihr bereits zugeordnet ist, enthält das Fenster Replikation eine Liste der Replikatbereitstellungen und einen Link zu den einzelnen Bereitstellungen. Klicken Sie auf das Zahnradsymbol rechts neben dem Bereitstellungsnamen des schreibgeschützten Replikats, um es zu verwalten.

Nur-Lese-Replikat einrichten

Ressourcen für PostgreSQL-Bereitstellungen werden pro Bereitstellung zugeordnet und normale Bereitstellungen haben zwei Member. Da ein schreibgeschütztes Replikat nur ein Mitglied hat und die Bereitstellung derzeit Werte verwendet, die der Hälfte der angeforderten Werte für Arbeitsspeicher und Speicher entsprechen, kann die Bereitstellung fehlschlagen. Die Web-Benutzeroberfläche kann den Wert für die Speicherung nicht ändern und verwendet automatisch den Wert des führenden Einsatzes - der um die Hälfte reduziert ist. Wenn dies für Ihre Daten nicht ausreicht, müssen Sie über die API oder die Befehlszeilenschnittstelle (CLI) die doppelte Menge an Speicherplatz angeben, die Sie bereitstellen möchten. (Das Gleiche gilt für den Arbeitsspeicher, auch wenn eine geringere Menge an Arbeitsspeicher den Erfolg der Wiederherstellung nicht verhindern kann) Eine Aktualisierung wird ausgeführt, um diese Situation zu korrigieren.

Provisionierung über die UI

Stellen Sie ein schreibgeschütztes Replikat auf der Registerkarte Lesereplikate des Hauptfensters bereit, indem Sie auf Schreibgeschütztes Replikat erstellen klicken. Die Quellinstanz wird automatisch abgeschlossen. Ein Name für das Nur-Lese-Replikat wird automatisch im Feld Servicename generiert, aber Sie können diesen Namen nach Bedarf ändern. Sie können die Region auswählen, in der das Replikat bereitgestellt werden soll, und Sie können den anfangs zugeordneten Speicher auswählen. Die Plattengröße, die Version und die öffentlichen oder privaten Endpunkte werden automatisch so konfiguriert, dass sie mit den Einstellungen der führenden Bereitstellung übereinstimmen.

Wenn Sie Key Protect verwenden, wird "Bring Your Own Key" (BYOK) nur unterstützt, wenn die Einrichtung über die Befehlszeilenschnittstelle und die API erfolgt. Andernfalls wird das Nur-Lese-Replikat mit einem generierten Schlüssel verschlüsselt.

Bereitstellung über die CLI

Die Einrichtung eines Nur-Lese-Replikats über die Befehlszeilenschnittstelle und die API erfolgt ähnlich wie das Einrichten einer Databases for PostgreSQL-Standardbereitstellung. Der Einrichtungsvorgang wird vom Resource Controller verarbeitet und verwendet den Parameter {"remote_leader_id": "crn:v1:..."}, um die führende Bereitstellung des Replikats, das Sie einrichten, anzugeben.

Um ein schreibgeschütztes Replikat über die CLI bereitzustellen, verwenden Sie einen Befehl wie diesen:

ibmcloud resource service-instance-create <REPLICA_NAME_OR_CRN> databases-for-postgresql standard <REGION> \
-p \ '{
  "remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
  "members_memory_allocation_mb": "2048",
  "members_disk_allocation_mb": "10240"
}'

Sie müssen sowohl die Größe des Arbeitsspeichers als auch der Festplatte angeben, wobei die Mindestgröße 2 GB RAM und 10 GB Festplatte beträgt. Optional können Sie angeben, ob das schreibgeschützte Replikat öffentliche oder private Endpunkte verwendet. Sie können keine Version für das Nur-Lese-Replikat angeben. Die Version wird automatisch auf dieselbe Hauptversion wie die führende Bereitstellung gesetzt.

Bereitstellung über die API

Die Bereitstellung einer Nur-Lese-Replik über die API funktioniert ähnlich wie die Bereitstellung einer standardmäßigen Databases for PostgreSQL Bereitstellung. Der Einrichtungsvorgang wird vom Resource Controller verarbeitet und verwendet den Parameter {"remote_leader_id": "crn:v1:..."}, um die führende Bereitstellung des Replikats, das Sie einrichten, anzugeben.

Um eine schreibgeschützte Replik über die API bereitzustellen, verwenden Sie einen Befehl wie diesen:

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "<REPLICA_NAME_OR_CRN>",
    "target": "<REGION>",
    "resource_group": "<RESOURCE_GROUP_ID>",
    "resource_plan_id": "databases-for-postgresql-standard",
    "parameters": {
      "remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
      "members_memory_allocation_mb": "2048",
      "members_disk_allocation_mb": "10240"
    }
  }'

Sie müssen sowohl die Größe des Arbeitsspeichers als auch der Festplatte angeben, wobei die Mindestgröße 2 GB RAM und 10 GB Festplatte beträgt. Optional können Sie angeben, ob das schreibgeschützte Replikat öffentliche oder private Endpunkte verwendet. Sie können keine Version für das Nur-Lese-Replikat angeben. Die Version wird automatisch auf dieselbe Hauptversion wie die führende Bereitstellung gesetzt.

Nur-Lese-Replikat

Auf der Registerkarte Read Replicas eines schreibgeschützten Replikats enthält Replication seinen Namen und seine Region sowie den Namen und die Region des führenden Replikats. Außerdem verfügt das Fenster über Schaltflächen, mit denen das Nur-Lese-Replikat resynchronisiert und umgestuft werden kann.

Replikationsstatus prüfen

Sie müssen die Replikation überwachen, da der Replikationsstatus nicht automatisch überwacht wird.

Prüfen Sie den Replikationsstatus eines schreibgeschützten Replikats mit " psql, aber nur von dessen Leader. Stellen Sie eine Verbindung zur Leader-Bereitstellung mit psql und mit den Administrator-Berechtigungsnachweisen her. Sobald Sie die Verbindung hergestellt haben, gehen Sie folgendermaßen vor:

  • Für PostgreSQL Version 10 und neuer, ' SELECT * from pg_stat_replication;.

Oder

  • Für PostgreSQL Version 9.x und älter, ' SELECT * FROM get_pg_stat_replication();.

Nur-Lese-Replikat - Benutzer und Berechtigungen

  • Alle Benutzer der führenden Bereitstellung, auch diejenigen, die schon vor der Einrichtung des Nur-Lese-Replikats vorhanden waren, können sich bei einem Nur-Lese-Replikat anmelden und mit denselben Objektberechtigungen, die sie für die führende Bereitstellung haben, Leseoperationen für das Nur-Lese-Replikat ausführen.

  • Wenn Sie mehr als ein Nur-Lese-Replikat haben, das einer führenden Bereitstellung zugeordnet ist, wird ein Benutzer, der auf der führenden Bereitstellung erstellt wird, auch auf allen anderen Nur-Lese-Replikaten erstellt.

  • Benutzer, die auf der führenden Bereitstellung erstellt werden, bestehen weiterhin auf dem Nur-Lese-Replikat, wenn es zu einer eigenständigen Bereitstellung hochgestuft wird, einschließlich des Benutzers admin. Wenn das Nur-Lese-Replikat hochgestuft wird, werden die Benutzer und die Berechtigungen für alle Benutzer auf der führenden Bereitstellung auf die hochgestufte Bereitstellung übertragen.

  • Schreiboperationen für das Nur-Lese-Replikat für alle Benutzer werden nicht gefiltert oder zurückgewiesen, schlagen jedoch auf Datenbankebene fehl.

Sie können auch Benutzer mit Zugriff auf das Nur-Lese-Replikat und ohne Zugriff auf die führende Bereitstellung vom Nur-Lese-Replikat erstellen. Wenn Sie mehr als ein Nur-Lese-Replikat haben, das einer führenden Bereitstellung zugeordnet ist, wird ein Benutzer, der auf einem der Nur-Lese-Replikate erstellt wird, auch auf allen anderen Nur-Lese-Replikaten erstellt.

Benutzer von Nur-Lese-Replikaten, die für ein Nur-Lese-Replikat erstellt wurden, können eine Verbindung zu den Replikaten herstellen und Leseoperationen ausführen. Benutzer von Nur-Lese-Replikaten haben nicht die Möglichkeit, eine Verbindung zur führenden Bereitstellung herzustellen und dort Operationen auszuführen. Sie bleiben auch nicht bestehen, wenn ein Nur-Lese-Replikat zu einer eigenständigen Bereitstellung hochgestuft wird.

Benutzer, die für ein Nur-Lese-Replikat erstellt wurden, erhalten Berechtigungen von der führenden Bereitstellung, ihnen wird die Rolle ibm-cloud-base-user-ro zugeordnet und sie sind Mitglieder der Gruppe ibm-cloud-base-user. Sie haben Zugriff auf alle Objekte, die von anderen Mitgliedern dieser Gruppe erstellt werden, einschließlich aller Benutzer der führenden Bereitstellung, die über Serviceberechtigungsnachweise, die Befehlszeilenschnittstelle oder die API erstellt wurden. In Übereinstimmung mit den Privilegien von " ibm-cloud-base-user hat ein Benutzer, der ein Replikat erstellt hat, keinen Zugriff auf Objekte, die vom Benutzer "admin" erstellt wurden, oder auf andere Benutzer, die über " psql erstellt wurden. Weitere Informationen finden Sie auf der Seite PostgreSQL-Rollen und -Berechtigungen.

Nur-Lese-Replikat resynchronisieren

Wenn Sie ein Nur-Lese-Replikat resynchronisieren müssen, klicken Sie auf die Schaltfläche Nur-Lese-Replikat resynchronisieren. Das Resynchronisieren ist ein disruptiver Vorgang, bei dem die Daten im Nur-Lese-Replikat entfernt und neu erstellt werden. Das Nur-Lese-Replikat kann keine anderen Operationen oder Abfragen ausführen, während eine Resynchronisation ausgeführt wird. Abfragen werden nicht an die führende Bereitstellung umgeleitet, sodass alle Verbindungen zum Nur-Lese-Replikat fehlschlagen, bis die Resynchronisation abgeschlossen ist.

Die Zeit, die für die Resynchronisation eines Nur-Lese-Replikats benötigt wird, ist unterschiedlich, aber der Prozess kann einige Zeit in Anspruch nehmen.

Neusynchronisierung einer schreibgeschützten Replik über die CLI

Verwenden Sie den Befehl cdb read-replica-resync, um eine Resynchronisation über die Befehlszeilenschnittstelle zu starten.

ibmcloud cdb read-replica-resync <DEPLOYMENT_NAME_OR_CRN>

Neusynchronisierung einer schreibgeschützten Reproduktion über die API

Um eine Resynchronisation über die API zu starten, senden Sie einen POST an den Endpunkt /deployments/{id}/remotes/resync.

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/resync \
  -H 'Authorization: Bearer <>'

Nur-Lese-Replikat hochstufen

Ein Nur-Lese-Replikat kann zu einem unabhängigen Cluster hochgestuft werden, der Schreib- und Leseoperationen akzeptieren kann. Wenn die führende Bereitstellung aus irgendeinem Grund ausfällt, kann das Nur-Lese-Replikat zu einem eigenständigen Cluster hochgestuft werden und damit beginnen, Schreibvorgänge von Ihrer Anwendung zu akzeptieren. Die Umwandlung eines Read-Replica-Clusters in einen Standalone-Cluster ist schneller, wenn der Read-Replica-Cluster bereits mehr als ein Datenmitglied hat.

Beim Hochstufen beendet das Nur-Lese-Replikat seine Verbindung zur Leader-Bereitstellung und wird zu einer eigenständigen Databases for PostgreSQL-Bereitstellung. Die Bereitstellung kann mit dem Akzeptieren und Ausführen von Lese- und Schreiboperationen beginnen, die Sicherungsfunktionalität wird aktiviert und die Bereitstellung erhält einen eigenen Administratorbenutzer. Es wird ein neues Datenmember hinzugefügt, sodass die Bereitstellung zu einem Cluster mit zwei Datenmembern wird. Dies erhöht die Kosten, da dieselbe Nutzungsrate pro Member angesetzt wird, aber die Bereitstellung verfügt über zwei Member und nicht nur über eines.

Wenn Sie ein Nur-Lese-Replikat hochstufen, können Sie die Erstsicherung überspringen, die normalerweise beim Hochstufen ausgeführt wird. Wenn Sie die Erstsicherung überspringen, wird Ihr Replikat schneller verfügbar, aber es ist keine sofortige Sicherung mehr verfügbar. Sobald der Hochstufungsprozess abgeschlossen ist, können Sie bei Bedarf eine Sicherung starten.

Wenn ein Nur-Lese-Replikat zu einer unabhängigen Bereitstellung hochgestuft wurde, ist es nicht mehr möglich, es wieder auf ein Nur-Lese-Replikat zurückzusetzen oder es zu einem Teil einer führenden Bereitstellung zu machen.

Heraufstufen einer schreibgeschützten Replik in der Benutzeroberfläche

Um ein schreibgeschütztes Replikat von der Benutzeroberfläche aus zu verschieben, klicken Sie auf Schreibgeschütztes Replikat verschieben.

Heraufstufen eines schreibgeschützten Replikats in der CLI

Verwenden Sie den Befehl cdb read-replica-promote, um das Hochstufen über die Befehlszeilenschnittstelle auszuführen.

ibmcloud cdb read-replica-promote <DEPLOYMENT_NAME_OR_CRN>

Heraufstufen einer schreibgeschützten Replik über die API

Senden Sie einen POST an den Endpunkt /deployments/{id}/remotes/promotion, um das Hochstufen über die API auszuführen.

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{"promotion": {}}' \

Wenn Sie das Hochstufen durchführen und die Erstsicherung nach dem Hochstufen überspringen wollen, legen Sie außerdem skip_initial_backup im JSON-Hauptteil fest.

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{"promotion": {"skip_initial_backup": true}}' \

Zeit bis zur Fertigstellung

Die Task zur Hochstufung wird nur abgeschlossen, wenn die Datenbank hoch verfügbar ist. Die Lese-/Schreibverfügbarkeit erfolgt nach ungefähr 10 Minuten mit einem bedeutenden Vorbehalt: Die Datenbank ist erst dann hoch verfügbar, wenn die Task abgeschlossen ist.

Die vollständige Dauer für die Hochstufung eines Lesereplikats bestimmt sich durch den Datenumfang auf zwei mögliche Arten:

  • Lesereplikate sind einzelne Member. Bei der Hochstufung wird die Formationsspezifikation in zwei Member geändert, wodurch ein zweites Replikat erstellt wird. Die Erstellungszeit dieses Replikats hängt vom Umfang der Daten ab. Die Erstellung dieses Replikats erfolgt mit 25 MB/s, um eine Überlastung des Netzes zu vermeiden. Wenn Datenbanken größer werden, kann die Erstellung sehr viel Zeit in Anspruch nehmen. Die Task ist erst dann abgeschlossen, wenn die Erstellung dieses Replikats abgeschlossen ist.
  • Wenn Sie sich für eine Sicherung als Teil der Hochstufung entscheiden, muss die Fertigstellung dieser Sicherung ebenfalls beendet sein, bevor die Task abgeschlossen ist. Dies hängt wiederum von der Größe der Datenbank ab.

Es gibt kein Hochverfügbarkeitsmitglied, bis die Beförderungsaufgabe abgeschlossen ist. Wenn Sie sich für eine Erstsicherung entschieden haben, gibt es ebenfalls erst dann eine Sicherung, wenn der zweite Punkt abgeschlossen ist oder wenn eine manuelle Sicherung erfolgt ist.

Upgrade während der Hochstufung

Wenn Sie ein Upgrade auf eine neue Hauptversion der Datenbank durchführen müssen, können Sie dies während der Hochstufung eines Nur-Lese-Replikats auf eine eigenständige Bereitstellung tun. Weitere Informationen finden Sie unter Upgrading auf eine neue Hauptversion.

Hinweise zu Nur-Lese-Replikaten

  • Das Nur-Lese-Replikat kann in derselben Region wie die Quellenformation oder in einer anderen Region enthalten sein, sodass Ihre Daten regionsübergreifend repliziert werden können.

  • Ein Nur-Lese-Replikat muss dieselbe Hauptversion haben wie die führende Bereitstellung.

  • Sicherungen sind für Nur-Lese-Replikate inaktiviert. Sicherungen werden nur auf führenden Bereitstellungen durchgeführt.

  • Replikate können in anderen Regionen wiederhergestellt werden, mit Ausnahme der EU-Cloud-fähigen Regionen (derzeit " eu-de und " par-01), die nur untereinander wiederhergestellt werden können (z. B. können Replikate von " par-01 in " eu-de wiederhergestellt werden und umgekehrt).

  • Es gibt eine Grenze von fünf schreibgeschützten Repliken pro Leader.

  • Das Nur-Lese-Replikat nimmt nicht an Leader->Follower-Wahlen für den Leader-Cluster teil und das Failover auf das Nur-Lese-Replikat ist nicht automatisiert. Das Hochstufen des Nur-Lese-Replikats zu einer vollständigen Bereitstellung ist eine manuelle, vom Benutzer initiierte Task.

  • Die Mindestgröße eines Nur-Lese-Replikats beträgt 2 GB RAM und 10 GB Platte. Dies gilt auch dann, wenn Ihre führende Bereitstellung kleiner ist.

  • Nur-Lese-Replikate werden nicht automatisch skaliert, damit sie mit der führenden Bereitstellung übereinstimmen. Wenn die Datenmenge, die Sie speichern, größer ist als der Plattenspeicher, der Ihren Bereitstellungen zugeordnet ist, skalieren Sie den Plattenspeicher auf den Nur-Lese-Replikaten und anschließend auf der führenden Bereitstellung. Durch das Skalieren des Nur-Lese-Replikats wird zunächst sichergestellt, dass der Speicherplatz auf den Nur-Lese-Replikaten nicht knapp wird. Wenn Sie den Plattenspeicher der führenden Bereitstellung entsprechend den Leistungsanforderungen skaliert haben und nicht entsprechend den Platzanforderungen, müssen die Nur-Lese-Replikate nicht skaliert werden.

  • Die Replikation erfolgt asynchron und dabei kann es Verzögerungen geben. Standardmäßig gibt es keine konsistente Kommunikation zwischen dem primären und dem Replikat. Es ist möglich, dass ein Nur-Lese-Replikat so weit zurückfällt, dass es resynchronisiert werden muss. Die Replikationsverzögerung kann größer sein, wenn sich das Replikat in einer Region befindet, die geografisch weit von der führenden Bereitstellung entfernt ist.

  • Eine Nur-Lese-Replik ist eine Bereitstellung mit einem einzigen Datenmitglied und verfügt nicht über eine interne Hochverfügbarkeit. Es ergeben sich typischerweise temporäre Unterbrechungen und Ausfallzeiten während der Wartung. Wenn Sie Anwendungen haben, die auf Nur-Lese-Replikate angewiesen sind, müssen Sie für die entsprechende Logik sorgen, damit fehlgeschlagene Abfragen wiederholt werden, oder Sie benötigen einen Lastausgleich über mehrere Nur-Lese-Replikate.