Sie können die Instanzkonfiguration des Lesepools in der Manifestdatei der Datenbankinstanz definieren. Für jede Lesepoolinstanz muss eine eindeutige Manifestdatei erstellt werden. Sie können mehrere Lesepoolinstanzen bereitstellen, mit insgesamt bis zu 20 Lesepoolknoten pro Datenbankcluster.
Jede Lesepoolinstanz belegt genauso viel Speicherplatz wie die Instanz, die sie repliziert.
Asynchrone replizierte Lesepoolinstanz erstellen
So erstellen Sie eine asynchrone replizierte AlloyDB Omni-Lesepoolinstanz:
Erstellen Sie das Datenbankinstanzmanifest, um den Instanztyp des Lesepools zu definieren:
DBInstance: metadata: name: READ_POOL_INSTANCE_NAME spec: instanceType: ReadPool nodeCount: READ_POOL_NODE_COUNT readPoolPort: READ_POOL_PORT dbcParent: name: DB_CLUSTER_NAMEErsetzen Sie Folgendes:
READ_POOL_INSTANCE_NAME: Ein Name für diese Ressource, z. B.read-pool-instance-1.DB_CLUSTER_NAME: Der Name des Datenbankclusters, zu dem die Instanz gehört.READ_POOL_NODE_COUNT: (Optional) Die Anzahl der Knoten in einer Lesepoolinstanz. Dadurch wird die gesamte Rechenkapazität der Instanz bestimmt. Pro Datenbankcluster können maximal 20 Lesepoolknoten vorhanden sein.READ_POOL_PORT: (Optional) Der Port auf dem Load Balancer (VIP), über den der Lesetraffic an diese Lesepoolinstanz weitergeleitet werden soll. Die Standardeinstellung ist5434.
Wenden Sie die
DBInstance-Spezifikation an.alloydbctlalloydbctl apply -d "DEPLOYMENT_SPECIFICATION_PATH" -r "DBINSTANCE_SPECIFICATION"Ersetzen Sie die folgenden Variablen:
DEPLOYMENT_SPECIFICATION_PATH: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.DBINSTANCE_SPECIFICATION: Pfad zurDBInstance-Manifestdatei, die Sie im vorherigen Schritt erstellt haben.
Ansible
ansible-playbook DBINSTANCE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION_PATH" \ -e resource_spec="DBINSTANCE_SPECIFICATION"Ersetzen Sie die folgenden Variablen:
DBINSTANCE_PLAYBOOK: Pfad zum Playbook, das Sie für IhreDBInstance-Spezifikation erstellt haben.DEPLOYMENT_SPECIFICATION_PATH: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.DBINSTANCE_SPECIFICATION: Pfad zurDBInstance-Manifestdatei, die Sie im vorherigen Schritt erstellt haben.
Instanzstatus prüfen
Wenn Sie die Verfügbarkeit der Lesepoolinstanz prüfen möchten, rufen Sie den Status der DBInstance-Ressource ab:
alloydbctl
alloydbctl get -d "DEPLOYMENT_SPECIFICATION_PATH" -t DBInstance -n "READ_POOL_INSTANCE_NAME" -o yamlErsetzen Sie die folgenden Variablen:
DEPLOYMENT_SPECIFICATION_PATH: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.READ_POOL_INSTANCE_NAME: Der Name der Lesepoolinstanz, die Sie im Manifest angegeben haben.
Ansible
Führen Sie das Playbook google.alloydbomni_orchestrator.status aus. Weitere Informationen finden Sie unter Clusterstatus abrufen.
ansible-playbook STATUS_PLAYBOOK_PATH -i "DEPLOYMENT_SPECIFICATION_PATH" \
-e resource_type="DBInstance" -e resource_name="READ_POOL_INSTANCE_NAME"Ersetzen Sie die folgenden Variablen:
STATUS_PLAYBOOK_PATH: Pfad zum Playbook, das Sie zum Abrufen des Clusterstatus erstellt haben.DEPLOYMENT_SPECIFICATION_PATH: Pfad zur Bereitstellungsspezifikation, die Sie unter AlloyDB Omni-Komponenten installieren erstellt haben.READ_POOL_INSTANCE_NAME: Der Name der Lesepoolinstanz, die Sie im Manifest angegeben haben.
Prüfen Sie im Abschnitt .status.conditions der Antwort Folgendes:
- Wenn der Status der Bedingung
Availabletrueist, kann die Lesepoolinstanz Anfragen verarbeiten, aber möglicherweise keine Daten aus Ihrer Datenbankinstanz replizieren. - Wenn der Status der Bedingung
Streamingtrueist, ist die Lesepoolinstanz mit Ihrer Datenbankinstanz verbunden und streamt Änderungen aktiv.
Wenn Ihre Datenbankinstanz nicht erreichbar ist, werden die Anfragen weiterhin von der Lesepoolinstanz verarbeitet. In diesem Fall ist der Verfügbarkeitsstatus true und der Streamingstatus false.
Nachdem Sie die Lesepoolinstanz eingerichtet haben, sind alle Einfügungen, Aktualisierungen und Löschungen von Zeilen in Ihrer primären Datenbankinstanz in der Lesepoolinstanz lesbar.
Verbindung zur Lesepoolinstanz herstellen
Sobald die Lesepoolinstanz Available ist, konfiguriert der Load Balancer automatisch ein dediziertes schreibgeschütztes Frontend, das den Traffic an die Lesepoolknoten weiterleitet.
Den Verbindungsendpunkt finden Sie in der DBInstance-Statusausgabe unter status.endpoints. Der schreibgeschützte Endpunkt, z. B. VIP_IP:5434, verteilt eingehende schreibgeschützte Abfragen auf alle fehlerfreien Knoten im Lesepool.
Verwenden Sie das psql-Clienttool mit der IP-Adresse und dem Port aus dem Endpunkt, um eine Verbindung zur Lesepoolinstanz herzustellen:
psql -h VIP_IP -p READ_POOL_PORT -U postgresErsetzen Sie Folgendes:
VIP_IP: Die IP-Adresse des schreibgeschützten Endpunkts.READ_POOL_PORT: Der Port des schreibgeschützten Endpunkts.
Wenn Sie versuchen, Schreibvorgänge für diesen Endpunkt auszuführen, schlagen die Vorgänge sofort mit einem Fehler fehl, der angibt, dass Sie keine Einfügungen in einer schreibgeschützten Transaktion ausführen können.
Lesepoolinstanz verwalten
Der RPM-Orchestrator unterstützt die dynamische Skalierung und Löschung von Lesepoolinstanzen ohne Cluster-Ausfallzeiten.
Lesepoolinstanz skalieren
Wenn Sie Knoten zu einem vorhandenen Lesepool hinzufügen oder daraus entfernen möchten, aktualisieren Sie das Feld nodeCount in der DBInstance-Manifestdatei.
Öffnen Sie die
DBInstance-Manifestdatei und ändern Sie den Wert vonnodeCountin die ausgewählte Anzahl von Knoten.Wenden Sie das aktualisierte Manifest mit der bevorzugten Bereitstellungsmethode an, entweder mit dem Befehl
alloydbctl applyoder mit Ihrem Ansible-Playbook.
Der RPM-Orchestrator stellt die Lesereplikatknoten automatisch bereit oder entfernt sie. Der Load Balancer wird dynamisch aktualisiert, um den Traffic an die verfügbaren Knoten im Pool weiterzuleiten.
Lesepoolinstanz löschen
Verwenden Sie den Befehl alloydbctl delete, um eine Lesepoolinstanz zu löschen:
alloydbctl delete -t DBInstance -n READ_POOL_INSTANCE_NAMEErsetzen Sie READ_POOL_INSTANCE_NAME durch den Namen der Lesepoolinstanz, die Sie löschen möchten.
Wenn Sie eine Lesepoolinstanz löschen, beendet der Orchestrator den Lesereplikatsdienst und bereinigt die Knoten. Der Load Balancer entfernt die Weiterleitung automatisch, ohne dass es zu Deadlocks bei der Hochstufung kommt oder der Traffic zu Ihren primären oder Standby-Instanzen beeinträchtigt wird.