AlloyDB Omni verwalten und überwachen

Auf dieser Seite wird beschrieben, wie Sie AlloyDB Omni-Nutzerrollen verwalten, die Aktivitäten Ihres AlloyDB Omni-Servers überwachen und Ihre AlloyDB Omni-Installation aktualisieren oder entfernen.

Nutzerrollen verwalten

AlloyDB Omni verwendet dieselben vordefinierten PostgreSQL-Nutzerrollen wie AlloyDB, mit folgenden Unterschieden:

  • AlloyDB Omni enthält eine Superuser-Rolle namens alloydbadmin und eine Nicht-Superuser-Rolle namens alloydbmetadata.

  • Der Standardnutzer postgres hat die Rolle „Superuser“.

  • Alle anderen vordefinierten Nutzerrollen haben keine Berechtigungen. Sie sind für eine mögliche zukünftige Verwendung reserviert.

Wie bei AlloyDB empfiehlt es sich, beim Einrichten einer Datenbank die folgenden Schritte auszuführen:

  1. Definieren oder importieren Sie Ihre Datenbanken mit der Nutzerrolle postgres. Bei einer neuen Installation hat diese Rolle Superuser-Berechtigungen und erfordert kein Passwort.

  2. Erstellen Sie neue Nutzerrollen mit der richtigen Zugriffsebene auf die Tabellen Ihrer Anwendung. Verwenden Sie dazu wieder die Nutzerrolle postgres.

  3. Konfigurieren Sie Ihre Anwendung so, dass eine Verbindung zur Datenbank mit diesen neuen Rollen mit eingeschränktem Zugriff hergestellt wird.

Sie können beliebig viele neue Nutzerrollen erstellen und definieren. Ändern oder löschen Sie keine der Nutzerrollen, die mit AlloyDB Omni ausgeliefert werden.

Weitere Informationen finden Sie unter AlloyDB-Nutzerrollen verwalten.

AlloyDB Omni überwachen

Das Überwachen Ihrer AlloyDB Omni-Installation bedeutet, die Protokolldateien zu lesen und zu analysieren.

Für AlloyDB Omni, das auf Kubernetes ausgeführt wird, sind auch einige grundlegende Messwerte als Prometheus-Endpunkte verfügbar. Eine Liste der verfügbaren Messwerte finden Sie unter AlloyDB Omni-Messwerte.

Ein Server

Führen Sie zum Abrufen von AlloyDB Omni-Protokollen standardmäßig Folgendes aus:

Docker

  docker logs CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen Ihres AlloyDB Omni-Containers.

Informationen zum Konfigurieren des Logging-Verhaltens von AlloyDB Omni finden Sie unter AlloyDB Omni-Installation anpassen.

Podman

  podman logs CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen Ihres AlloyDB Omni-Containers.

Informationen zum Konfigurieren des Logging-Verhaltens von AlloyDB Omni finden Sie unter AlloyDB Omni-Installation anpassen.

Podman

  podman logs CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen Ihres AlloyDB Omni-Containers.

Informationen zum Konfigurieren des Logging-Verhaltens von AlloyDB Omni finden Sie unter AlloyDB Omni-Installation anpassen.

Kubernetes

Protokolldateien des Datenbankclusters finden

Sie finden die postgresql.audit- und postgresql.log-Dateien im Dateisystem des Datenbank-Pods. So greifen Sie auf diese Dateien zu:

  1. Definieren Sie eine Umgebungsvariable mit dem Namen des Datenbank-Pods.

    export DB_POD=`kubectl get pod -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`

    Ersetzen Sie DB_CLUSTER_NAME durch den Namen Ihres Datenbankclusters. Dies ist der Name des Datenbankclusters, den Sie beim Erstellen angegeben haben.

  2. Führen Sie eine Shell auf dem Datenbank-Pod als Root aus.

    kubectl exec ${DB_POD} -it -- /bin/bash
  3. Suchen Sie die Logdateien im Verzeichnis /obs/diagnostic/:

    • /obs/diagnostic/postgresql.audit
    • /obs/diagnostic/postgresql.log

Überwachungsdienste auflisten

v1.0

Wenn Sie einen Datenbankcluster erstellen, erstellt AlloyDB Omni für jeden Instanz-CR des Datenbankclusters im selben Namespace den folgenden Monitoring-Dienst:

al-INSTANCE_NAME-monitoring-system

Führen Sie den folgenden Befehl aus, um die Überwachungsdienste aufzulisten.

kubectl get svc -n NAMESPACE | grep monitoring

Ersetzen Sie NAMESPACE durch einen Namespace, zu dem Ihr Cluster gehört.

Die folgende Beispielantwort zeigt die Dienste al-1060-dbc-monitoring-system, al-3de6-dbc-monitoring-system und al-4bc0-dbc-monitoring-system. Jedem Dienst entspricht eine Instanz.

al-1060-dbc-monitoring-system   ClusterIP   10.0.15.227   <none>        9187/TCP   7d20h
al-3de6-dbc-monitoring-system   ClusterIP   10.0.5.205    <none>        9187/TCP   7d19h
al-4bc0-dbc-monitoring-system   ClusterIP   10.0.15.92    <none>        9187/TCP   7d19h

Version < 1.0

Wenn Sie einen Datenbankcluster erstellen, erstellt AlloyDB Omni die folgenden Monitoring-Dienste im selben Namespace wie der Datenbankcluster:

  • DB_CLUSTER-monitoring-db

  • DB_CLUSTER-monitoring-system

Führen Sie den folgenden Befehl aus, um die Überwachungsdienste aufzulisten.

kubectl get svc -n NAMESPACE | grep monitoring

Ersetzen Sie NAMESPACE durch einen Namespace, zu dem Ihr Cluster gehört.

Die folgende Beispielantwort zeigt den al-2953-dbcluster-foo7-monitoring-system- und den al-2953-dbcluster-foo7-monitoring-db-Dienst.

al-2953-dbcluster-foo7-monitoring-db           ClusterIP   10.36.3.243    <none>        9187/TCP   44m
al-2953-dbcluster-foo7-monitoring-system       ClusterIP   10.36.7.72     <none>        9187/TCP   44m

Prometheus-Messwerte über die Befehlszeile aufrufen

Der Port 9187 wird für alle Monitoring-Dienste als metricsalloydbomni bezeichnet.

  1. Richten Sie eine Portweiterleitung von Ihrer lokalen Umgebung an den Monitoring-Dienst ein.

    kubectl port-forward service/MONITORING_SERVICE -n NAMESPACE MONITORING_METRICS_PORT:metricsalloydbomni
    

    Ersetzen Sie Folgendes:

    • MONITORING_SERVICE: Der Name des Monitoring-Dienstes, den Sie weiterleiten möchten, z. B. al-1060-dbc-monitoring-system.

    • NAMESPACE: Der Namespace, zu dem Ihr Cluster gehört.

    • MONITORING_METRICS_PORT: Ein lokal verfügbarer TCP-Port.

    Die folgende Antwort zeigt, dass die Dienste weitergeleitet werden.

    Forwarding from 127.0.0.1:9187 -> 9187
    Forwarding from [::1]:9187 -> 9187
    
  2. Während der vorherige Befehl ausgeführt wird, können Sie über HTTP auf den angegebenen Port zugreifen, um Messwerte zu überwachen. Mit curl können Sie beispielsweise alle Messwerte als Nur-Text anzeigen lassen:

    curl http://localhost:MONITORING_METRICS_PORT/metrics
    

Messwerte mit der Prometheus API ansehen

Der Labelschlüssel alloydbomni.internal.dbadmin.goog/task-type und der Port metricsalloydbomni sind standardmäßig für alle Monitoring-Dienste in AlloyDB Omni verfügbar. Sie können sie zusammen mit einer einzelnen benutzerdefinierten serviceMonitor-Ressource verwenden, um alle Dienste für alle Namespaces in Ihrem Datenbankcluster auszuwählen.

Weitere Informationen zur Verwendung der Prometheus API finden Sie in der Prometheus Operator-Dokumentation.

Das folgende Beispiel zeigt ein spec-Feld der benutzerdefinierten Ressource serviceMonitor mit dem Labelschlüssel alloydbomni.internal.dbadmin.gdc.goog/task-type und dem Port metricsalloydbomni. Die benutzerdefinierte Ressource serviceMonitor überwacht und erfasst alle Kubernetes-Dienste in allen Namespaces.

Weitere Informationen zur vollständigen Definition von ServiceMonitor finden Sie in der ServiceMonitor-Benutzerdefinierten Ressourcendefinition .

v1.0

    spec:
      selector:
        matchLabels:
          alloydbomni.internal.dbadmin.goog/task-type: monitoring
      namespaceSelector:
        any: true
      endpoints:
        - port: metricsalloydbomni

Version < 1.0

    spec:
      selector:
        matchExpressions:
        - key: alloydbomni.internal.dbadmin.gdc.goog/task-type
          operator: Exists
          values: []
      namespaceSelector:
        any: true
      endpoints:
      - port: metricsalloydbomni

AlloyDB Omni upgraden

Wenn Sie von AlloyDB Omni 15.5.2 oder niedriger auf 15.5.4 upgraden möchten, folgen Sie der Anleitung unter Von einer früheren Version von AlloyDB Omni auf die neueste Version migrieren.

So führen Sie ein Upgrade von Version 15.5.4 und höher durch:

  1. Starten Sie AlloyDB Omni mit einer neuen Image-Version neu.

  2. Achten Sie darauf, dass das Datenverzeichnis mit dem Pfad übereinstimmt, der in früheren Versionen von AlloyDB Omni verwendet wurde.

AlloyDB Omni deinstallieren

Ein Server

Wenn Sie AlloyDB Omni deinstallieren möchten, beenden und löschen Sie den AlloyDB Omni-Container mit dem folgenden Befehl:

Docker

 docker container stop CONTAINER_NAME
   docker container rm CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen Ihres AlloyDB Omni-Containers.

Podman

 podman container stop CONTAINER_NAME
   podman container rm CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen Ihres AlloyDB Omni-Containers.

Podman

 podman container stop CONTAINER_NAME
   podman container rm CONTAINER_NAME

Ersetzen Sie CONTAINER_NAME durch den Namen Ihres AlloyDB Omni-Containers.

Sie können ein externes Datenverzeichnis verschieben, archivieren oder löschen, je nachdem, ob und wie Sie Ihre Daten nach der Deinstallation von AlloyDB Omni aufbewahren möchten.

Kubernetes

Datenbankcluster löschen

Wenn Sie den Datenbankcluster löschen möchten, setzen Sie im Manifest isDeleted auf true. Führen Sie dazu den folgenden Befehl aus.

kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"isDeleted":true}}' --type=merge

Ersetzen Sie DB_CLUSTER_NAME durch den Namen Ihres Datenbankclusters. Das ist der Name des Datenbankclusters, den Sie beim Erstellen angegeben haben.

AlloyDB Omni-Operator deinstallieren

So deinstallieren Sie den AlloyDB Omni Kubernetes-Operator aus Ihrem Kubernetes-Cluster:

  1. Löschen Sie alle Datenbankcluster:

    for ns in $(kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces -o=jsonpath='{range .items[*]}{.metadata.namespace}{"\n"}{end}'); do
    for cr in $(kubectl get dbclusters.alloydbomni.dbadmin.goog -n $ns -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
    kubectl patch dbclusters.alloydbomni.dbadmin.goog $cr -n $ns --type=merge -p '{"spec":{"isDeleted":true}}'
    done
    done
  2. Warten Sie, bis der AlloyDB Omni Kubernetes-Operator alle Ihre Datenbankcluster gelöscht hat. Mit dem folgenden Befehl können Sie prüfen, ob noch Datenbankressourcen vorhanden sind:

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  3. Löschen Sie alle anderen Ressourcen, die der AlloyDB Omni Kubernetes-Operator erstellt hat:

    kubectl delete failovers.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete restores.alloydbomni.dbadmin.goog --all --all-namespaces
    kubectl delete switchovers.alloydbomni.dbadmin.goog --all --all-namespaces
  4. Deinstallieren Sie den AlloyDB Omni Kubernetes-Operator:

    helm uninstall alloydbomni-operator --namespace alloydb-omni-system
  5. Bereinigen Sie Secrets, Beschreibungen benutzerdefinierter Ressourcen und Namespaces, die sich auf den AlloyDB Omni Kubernetes-Operator beziehen:

    kubectl delete certificate -n alloydb-omni-system --all
    kubectl get secrets --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,ANNOTATION:.metadata.annotations.cert-manager\.io/issuer-name | grep -E 'alloydbomni|dbs-al' | awk '{print $1 " " $2}' | xargs -n 2 kubectl delete secret -n
    kubectl delete crd -l alloydb-omni=true
    kubectl delete ns alloydb-omni-system

Größe des Kubernetes-basierten Datenbankclusters ändern

Wenn Sie die CPU-, Arbeitsspeicher- oder Speicherkapazität Ihres Kubernetes-basierten Datenbankclusters ändern möchten, aktualisieren Sie das Feld resources der Manifeste, die den Pod definieren. Der AlloyDB Omni-Operator wendet die neuen Spezifikationen sofort auf Ihren Datenbank-Pod an.

Weitere Informationen zur Syntax des AlloyDB Omni-Betreibermanifests finden Sie unter Datenbankcluster erstellen.

Für die Änderung der Ressourcen eines laufenden Datenbankclusters gelten die folgenden Einschränkungen:

  • Sie können die Größe eines Laufwerks nur erhöhen, wenn die angegebene storageClass die Volumeerweiterung unterstützt.
  • Sie können die Größe eines Laufwerks nicht verringern.