In diesem Dokument wird erläutert, wie Sie eine Spanner Omni-Bereitstellung verwalten. Die Wartung einer Spanner Omni-Bereitstellung umfasst regelmäßige Systemdiagnosen, die Außerbetriebnahme fehlerhafter Elemente und den Austausch von Serverknoten oder fehlerhaften Festplatten, um die Clusterstabilität und ‑konsistenz zu gewährleisten. Durch die Verwaltung des Datenbankzustands werden Ihre Datenbanken vor ungeplanten Ausfällen geschützt und die Redundanz der zugrunde liegenden Paxos-Konsensgruppe wird aufrechterhalten.
Durch Wartungsarbeiten können Sie:
Hochverfügbarkeit sicherstellen: Stellen Sie fehlerhafte VMs oder Pods neu bereit, um die Redundanz des Datenbankservers aufrechtzuerhalten. So können Sie Ihre Anwendungen auch bei Hardwarefehlern weiter ausführen.
Datensicherheit und ‑integrität schützen: Deaktivieren Sie Knoten mit fehlerhaften Festplatten, um zu verhindern, dass sich Speicherfehler auf andere Teile der Datenbank ausbreiten. So wird auch verhindert, dass auf getrennten Servern widersprüchliche Aktualisierungen aufgezeichnet werden.
Hinweis
Bevor Sie Wartungsarbeiten an Ihrer Kubernetes-Bereitstellung durchführen, müssen Sie Folgendes tun:
Erstellen Sie ein Spanner Omni-Deployment. Weitere Informationen finden Sie unter Bereitstellung in Kubernetes erstellen oder Bereitstellung auf VMs erstellen.
Laden Sie die Spanner Omni CLI herunter und installieren Sie sie.
Für Bereitstellungen in Kubernetes installieren Sie Helm und erstellen Sie eine Helm-Diagrammkonfiguration.
Server ersetzen
Möglicherweise müssen Sie einen Server in Ihrer Bereitstellung ersetzen, um System- oder Speicherfehler zu beheben.
Root-Server ersetzen
Wenn Sie einen Root-Server ersetzen möchten, wählen Sie den Tab für Ihre Umgebung aus:
Kubernetes
So ersetzen Sie einen Stammserver in einem Kubernetes-Deployment: Das Hinzufügen weiterer Stammserver zu einer vorhandenen Kubernetes-Bereitstellung wird nicht unterstützt. Sie können jedoch vorhandene Stammserver ersetzen, um nicht behebbare Fehler zu beheben.
Löschen Sie den Server, den Sie ersetzen möchten:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONEErsetzen Sie Folgendes:
SERVER_ENDPOINT: Der Server-Pod-Endpunkt, der gelöscht werden soll, im FormatSERVER.pod.NAMESPACE:PORT, z. B.spanner-a-1.pod.spanner-ns:15000. Wenn Sie die Serverendpunkte in Ihrer Bereitstellung aufrufen möchten, listen Sie die Bereitstellungsserver mit dem Befehlspanner deployment servers list --zone=ZONEauf.ZONE: Die Zone, die den Server enthält, z. B.us-central1-a.
Dieser Schritt kann je nach Datenmenge auf dem Server einige Minuten dauern. Bei Spanner Omni werden die Daten von diesem Server auf andere Server in der Bereitstellung verschoben. Warten Sie, bis der Server gelöscht wurde, bevor Sie mit dem nächsten Schritt fortfahren.
So verfolgen Sie den Fortschritt des Löschvorgangs:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEWarten Sie, bis der Befehl einen
NOT_FOUND-Fehler zurückgibt oder angibt, dass der Server nicht mehr registriert ist.Löschen Sie den Anspruch auf nichtflüchtiges Volume (PersistentVolumeClaim, PVC) für den Pod, auf dem der Server gehostet wird:
kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACEErsetzen Sie Folgendes:
DATA_VOLUME_NAME: Der Name des Daten-Volumes, z. B.data-volume-spanner-a-1. Um den Namen des Datenvolumes zu finden, listen Sie die PVCs in Ihrem Namespace auf, indem Siekubectl get pvc -n NAMESPACEausführen.NAMESPACE: Der Namespace der Bereitstellung, z. B.spanner-ns.
Löschen Sie den Pod:
kubectl delete pod POD_NAME -n NAMESPACEErsetzen Sie
POD_NAMEdurch den Namen des Server-Pods, den Sie löschen möchten, z. B.spanner-a-1.Kubernetes startet automatisch einen neuen Server in einem Ersatz-Pod und hängt einen neuen PVC an.
Fügen Sie der Bereitstellung den neuen Server hinzu:
spanner deployment servers create SERVER_ENDPOINT --zone=ZONEPrüfen Sie, ob die Argumente mit dem neuen Pod-Endpunkt und der neuen Zone übereinstimmen, z. B. mit
spanner-a-1.pod.spanner-ns:15000als Endpunkt undus-central1-aals Zone.
VM
So ersetzen Sie einen Stammserver in einem VM-Deployment:
Löschen Sie den Server, den Sie ersetzen möchten:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONEErsetzen Sie Folgendes:
SERVER_ENDPOINT: Die Server-IP-Adresse oder der Hostname und Port, z. B.spanner-vm-1.example.com:15000. Um die Serverendpunkte zu finden, listen Sie die Bereitstellungsserver auf, indem Siespanner deployment servers list --zone=ZONEausführen.ZONE: Die Zone, die den Server enthält, z. B.us-central1-a.
Dieser Schritt kann je nach Datenmenge auf dem Server einige Minuten dauern. Bei Spanner Omni werden die Daten von diesem Server auf andere Server in der Bereitstellung verschoben. Warten Sie, bis der Server gelöscht wurde, bevor Sie mit dem nächsten Schritt fortfahren.
So verfolgen Sie den Fortschritt des Löschvorgangs:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEWarten Sie, bis der Befehl einen
NOT_FOUND-Fehler zurückgibt oder angibt, dass der Server nicht mehr registriert ist.Stellen Sie den Server mit sauberem Speicher neu bereit, wie unter Bereitstellung für Spanner Omni auf VMs erstellen beschrieben:
spanner start \ --root \ --server-address=HOSTNAME \ --zone=ZONE \ --base-dir=BASE_DIRErsetzen Sie Folgendes:
HOSTNAME: Der auflösbare FQDN oder Hostname der neuen VM, z. B.spanner-vm-1.example.com.ZONE: Die Zielzone, z. B.us-central1-a.BASE_DIR: Der Pfad, in dem Daten gespeichert werden, z. B../span-dir.
Fügen Sie der Bereitstellung den neuen Server hinzu:
spanner deployment servers create SERVER_ENDPOINT --zone=ZONEPrüfen Sie, ob die Argumente mit den Parametern des neuen Servers übereinstimmen, z. B. mit
spanner-vm-1.example.com:15000als Endpunkt undus-central1-aals Zone.
Nicht-Root-Server ersetzen
Wenn Sie einen Nicht-Root-Server ersetzen möchten, wählen Sie den Tab für Ihre Umgebung aus:
Kubernetes
So ersetzen Sie einen Nicht-Root-Server in einem Kubernetes-Deployment:
Löschen Sie den Server, den Sie ersetzen möchten:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONEErsetzen Sie Folgendes:
SERVER_ENDPOINT: Der Server-Pod-Endpunkt, der gelöscht werden soll, im FormatSERVER.pod.NAMESPACE:PORT, z. B.spanner-a-4.pod.spanner-ns:15000. Wenn Sie die Serverendpunkte in Ihrer Bereitstellung aufrufen möchten, listen Sie die Bereitstellungsserver mit dem Befehlspanner deployment servers list --zone=ZONEauf.ZONE: Die Zone, die den Server enthält, z. B.us-central1-a.
Dieser Schritt kann je nach Datenmenge auf dem Server einige Minuten dauern. Bei Spanner Omni werden die Daten von diesem Server auf andere Server in der Bereitstellung verschoben. Warten Sie, bis der Server gelöscht wurde, bevor Sie mit dem nächsten Schritt fortfahren.
So verfolgen Sie den Fortschritt des Löschvorgangs:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEWarten Sie, bis der Befehl einen
NOT_FOUND-Fehler zurückgibt oder angibt, dass der Server nicht mehr registriert ist.Löschen Sie den Anspruch auf nichtflüchtiges Volume (PersistentVolumeClaim, PVC) für den Pod, auf dem der Server gehostet wird:
kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACEErsetzen Sie Folgendes:
DATA_VOLUME_NAME: Der Name des Daten-Volumes, z. B.data-volume-spanner-a-4. Um den Namen des Datenvolumes zu finden, listen Sie die PVCs in Ihrem Namespace auf, indem Siekubectl get pvc -n NAMESPACEausführen.NAMESPACE: Der Namespace der Bereitstellung, z. B.spanner-ns.
Löschen Sie den Pod:
kubectl delete pod POD_NAME -n NAMESPACEErsetzen Sie
POD_NAMEdurch den Namen des Server-Pods, den Sie löschen möchten, z. B.spanner-a-4.Kubernetes startet automatisch einen neuen Server in einem Ersatz-Pod und hängt einen neuen PVC an. Spanner Omni registriert den neuen Nicht-Root-Server automatisch in der Bereitstellung.
VM
So ersetzen Sie einen Nicht-Root-Server in einer VM-Bereitstellung:
Löschen Sie den Server, den Sie ersetzen möchten:
spanner deployment servers delete SERVER_ENDPOINT --zone=ZONEErsetzen Sie Folgendes:
SERVER_ENDPOINT: Die Server-IP-Adresse oder der Hostname und Port, z. B.spanner-vm-4.example.com:15000. Um die Serverendpunkte zu finden, listen Sie die Bereitstellungsserver auf, indem Siespanner deployment servers list --zone=ZONEausführen.ZONE: Die Zone, die den Server enthält, z. B.us-central1-a.
Dieser Schritt kann je nach Datenmenge auf dem Server einige Minuten dauern. Bei Spanner Omni werden die Daten von diesem Server auf andere Server in der Bereitstellung verschoben. Warten Sie, bis der Server gelöscht wurde, bevor Sie mit dem nächsten Schritt fortfahren.
So verfolgen Sie den Fortschritt des Löschvorgangs:
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEWarten Sie, bis der Befehl einen
NOT_FOUND-Fehler zurückgibt oder angibt, dass der Server nicht mehr registriert ist.Stellen Sie den Nicht-Root-Server mit sauberem Speicher neu bereit, wie unter Nicht-Root-Server hinzufügen beschrieben. Der Server wird der Bereitstellung automatisch hinzugefügt.