AlloyDB Omni 관리 및 모니터링

이 페이지에서는 AlloyDB Omni 사용자 역할을 관리하고, AlloyDB Omni 서버의 활동을 모니터링하고, AlloyDB Omni 설치를 업데이트하거나 삭제하는 방법을 설명합니다.

사용자 역할 관리

AlloyDB Omni는 AlloyDB에 포함된 사전 정의된 PostgreSQL 사용자 역할 집합을 사용하지만 다음과 같은 차이점이 있습니다.

  • AlloyDB Omni에는 alloydbiamuser 역할이 없습니다.

  • AlloyDB Omni에는 alloydbadmin라는 슈퍼 사용자 역할이 포함되어 있습니다.

AlloyDB와 마찬가지로 데이터베이스를 설정할 때는 다음 단계를 따르는 것이 좋습니다.

  1. postgres 사용자 역할을 사용하여 데이터베이스를 정의하거나 가져옵니다. 새 설치에서 이 역할에는 데이터베이스 생성 및 역할 생성 권한이 있으며 비밀번호는 없습니다.

  2. postgres 사용자 역할을 다시 사용하여 애플리케이션 테이블에 대한 올바른 액세스 수준이 있는 새 사용자 역할을 만듭니다.

  3. 이러한 새로운 제한된 액세스 권한 역할을 사용하여 데이터베이스에 연결하도록 애플리케이션을 구성합니다.

필요한 만큼 새 사용자 역할을 만들고 정의할 수 있습니다. AlloyDB Omni와 함께 제공되는 사용자 역할을 수정하거나 삭제하지 마세요.

자세한 내용은 AlloyDB 사용자 역할 관리를 참고하세요.

AlloyDB Omni 모니터링

AlloyDB Omni 설치를 모니터링한다는 것은 로그 파일을 읽고 분석하는 것을 의미합니다.

Kubernetes에서 실행되는 AlloyDB Omni에는 Prometheus 엔드포인트로 사용할 수 있는 기본 측정항목 집합도 있습니다. 사용 가능한 측정항목 목록은 AlloyDB Omni 측정항목을 참고하세요.

단일 서버

AlloyDB Omni는 다음 두 위치에 활동을 기록합니다.

  • AlloyDB Omni는 dataplane.conf 구성 파일에 정의된 디렉터리를 기준으로 data/log/postgres에서 데이터베이스 활동을 로깅합니다.

    /var/alloydb/config/postgresql.conf에 정의된 다양한 log_* 디렉티브를 통해 이 로그 파일의 이름과 형식을 맞춤설정할 수 있습니다. 자세한 내용은 오류 보고 및 로깅을 참고하세요.

  • AlloyDB Omni는 /var/alloydb/logs/alloydb.log에서 설치, 시작, 종료 활동을 로깅합니다.

서버의 즉시 실행 상태를 확인하려면 AlloyDB Omni 상태 확인을 참고하세요.

Kubernetes

데이터베이스 클러스터 로그 파일 찾기

postgresql.auditpostgresql.log 파일은 데이터베이스 포드의 파일 시스템에서 찾을 수 있습니다. 이러한 파일에 액세스하려면 다음 단계를 따르세요.

  1. 데이터베이스 pod의 이름이 포함된 환경 변수를 정의합니다.

    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}'`

    DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다. 이는 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.

  2. 데이터베이스 포드에서 루트로 셸을 실행합니다.

    kubectl exec ${DB_POD} -it -- /bin/bash
  3. /obs/diagnostic/ 디렉터리에서 로그 파일을 찾습니다.

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

모니터링 서비스 나열

v1.0

데이터베이스 클러스터를 만들면 AlloyDB Omni는 동일한 네임스페이스에 데이터베이스 클러스터의 각 인스턴스 CR에 대해 다음 모니터링 서비스를 만듭니다.

al-INSTANCE_NAME-monitoring-system

모니터링 서비스를 나열하려면 다음 명령어를 실행합니다.

kubectl get svc -n NAMESPACE | grep monitoring

NAMESPACE을 클러스터가 속한 네임스페이스로 바꿉니다.

다음 응답 예시에서는 al-1060-dbc-monitoring-system, al-3de6-dbc-monitoring-system, al-4bc0-dbc-monitoring-system 서비스를 보여줍니다. 각 서비스는 하나의 인스턴스에 해당합니다.

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

버전 1.0 미만

데이터베이스 클러스터를 만들면 AlloyDB Omni는 데이터베이스 클러스터와 동일한 네임스페이스에 다음 모니터링 서비스를 만듭니다.

  • DB_CLUSTER-monitoring-db

  • DB_CLUSTER-monitoring-system

모니터링 서비스를 나열하려면 다음 명령어를 실행합니다.

kubectl get svc -n NAMESPACE | grep monitoring

NAMESPACE을 클러스터가 속한 네임스페이스로 바꿉니다.

다음 응답 예는 al-2953-dbcluster-foo7-monitoring-systemal-2953-dbcluster-foo7-monitoring-db 서비스를 보여줍니다.

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 측정항목 보기

포트 9187는 모든 모니터링 서비스에서 metricsalloydbomni로 이름이 지정됩니다.

  1. 로컬 환경에서 모니터링 서비스로 포트 전달을 설정합니다.

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

    다음을 바꿉니다.

    • MONITORING_SERVICE: 전달하려는 모니터링 서비스의 이름입니다(예: al-1060-dbc-monitoring-system).

    • NAMESPACE: 클러스터가 속한 네임스페이스입니다.

    • MONITORING_METRICS_PORT: 로컬에서 사용할 수 있는 TCP 포트입니다.

    다음 응답은 서비스가 전달되고 있음을 보여줍니다.

    Forwarding from 127.0.0.1:9187 -> 9187
    Forwarding from [::1]:9187 -> 9187
    
  2. 이전 명령어가 실행되는 동안 지정한 포트에서 HTTP를 통해 모니터링 측정항목에 액세스할 수 있습니다. 예를 들어 curl를 사용하여 모든 측정항목을 일반 텍스트로 볼 수 있습니다.

    curl http://localhost:MONITORING_METRICS_PORT/metrics
    

Prometheus API를 사용하여 측정항목 보기

alloydbomni.internal.dbadmin.goog/task-type 라벨 키와 metricsalloydbomni 포트는 AlloyDB Omni의 모든 모니터링 서비스에 기본값으로 사용할 수 있습니다. 단일 ServiceMonitor 맞춤 리소스와 함께 사용하여 데이터베이스 클러스터의 모든 네임스페이스에 대한 모든 서비스를 선택할 수 있습니다.

Prometheus API 사용에 관한 자세한 내용은 Prometheus 운영자 문서를 참고하세요.

다음은 alloydbomni.internal.dbadmin.gdc.goog/task-type 라벨 키와 metricsalloydbomni 포트가 포함된 ServiceMonitor 커스텀 리소스의 spec 필드 예시입니다. ServiceMonitor 맞춤 리소스는 모든 네임스페이스의 모든 Kubernetes 서비스를 모니터링하고 수집합니다.

전체 ServiceMonitor 정의에 관한 자세한 내용은 ServiceMonitor 커스텀 리소스 정의 를 참고하세요.

v1.0

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

버전 1.0 미만

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

AlloyDB Omni 업그레이드

단일 서버

이 안내는 AlloyDB Omni 버전 15.2.0 이상에만 적용됩니다.

시작하기 전에

머신에 AlloyDB Omni CLI 버전 1.2 이상이 설치되어 있어야 합니다.

업그레이드 수행

AlloyDB Omni 설치를 업그레이드하려면 다음 명령어를 실행합니다.

sudo alloydb database-server upgrade

Kubernetes

Kubernetes에서 AlloyDB Omni를 업그레이드하는 단계는 실행 중인 AlloyDB Omni 버전과 업그레이드할 버전에 따라 다릅니다.

현재 버전 번호 확인

데이터베이스 클러스터에서 사용하는 AlloyDB Omni 버전을 확인하려면 다음 명령어를 실행합니다.

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.currentDatabaseVersion}'

다음을 바꿉니다.

  • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.

  • NAMESPACE: 데이터베이스 클러스터의 Kubernetes 네임스페이스입니다.

AlloyDB Omni Operator 버전 1.0.0 이상을 실행하는 경우 이 명령어는 데이터베이스 클러스터에서 사용 중인 AlloyDB Omni 버전을 출력합니다.

Kubernetes 클러스터에 설치된 AlloyDB Omni Operator의 버전을 확인하려면 다음 명령어를 실행합니다.

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.currentControlPlaneAgentsVersion}'

AlloyDB Omni Operator 버전 1.0.0 이상을 실행하는 경우 이 명령어는 Kubernetes 클러스터에서 실행 중인 AlloyDB Omni Operator의 버전 번호를 출력합니다.

1.0.0보다 이전 버전의 AlloyDB Omni Operator를 실행하는 경우 데이터베이스 클러스터 또는 AlloyDB Omni Operator를 인플레이스 업그레이드할 수 없습니다. 대신 1.0.0 이전 AlloyDB Omni Operator에서 업그레이드의 안내를 따라야 합니다.

그렇지 않으면 다음 섹션으로 이동하세요.

타겟 버전 번호 결정

AlloyDB Omni Operator 1.0.0 이상 버전을 실행하는 경우 다음 단계는 업그레이드하려는 AlloyDB Omni 버전에 따라 다릅니다. 이를 위해서는 AlloyDB Omni 버전 번호를 이해해야 합니다.

AlloyDB Omni 버전 번호는 세 부분으로 구성됩니다.

  • PostgreSQL 호환성의 주요 버전 번호
  • PostgreSQL 호환성의 마이너 버전 번호
  • 이 AlloyDB Omni 출시의 패치 버전 번호입니다.

예를 들어 AlloyDB Omni 버전 15.5.2는 PostgreSQL 버전 15.5를 지원하는 AlloyDB Omni의 패치 버전 2입니다.

최신 버전의 PostgreSQL을 지원하는 AlloyDB Omni 버전으로 업그레이드하려면 데이터베이스 클러스터와 함께 AlloyDB Omni Operator 자체를 업그레이드해야 합니다. 특정 PostgreSQL 마이너 버전을 지원하는 각 AlloyDB Omni 출시에는 자체 연결된 AlloyDB Omni Operator 버전 번호가 있습니다. 이 버전 번호는 AlloyDB Omni 버전의 출시 노트에서 확인할 수 있습니다.

AlloyDB Omni의 최신 패치 버전으로만 업그레이드하려는 경우 AlloyDB Omni Operator 자체를 업그레이드할 필요 없이 데이터베이스 클러스터만 업그레이드할 수 있습니다. 데이터베이스 클러스터 업그레이드의 안내로 건너뛰어도 됩니다.

그렇지 않으면 다음 섹션으로 이동하세요.

AlloyDB Omni 연산자 업그레이드

AlloyDB Omni Operator를 업그레이드하려면 다음 단계를 따르세요.

  1. 필요한 환경 변수를 정의합니다.

    export GCS_BUCKET=alloydb-omni-operator
    export OPERATOR_VERSION=OPERATOR_VERSION
    export HELM_PATH=$OPERATOR_VERSION/alloydbomni-operator-$OPERATOR_VERSION.tgz

    OPERATOR_VERSION를 업그레이드할 AlloyDB Omni Operator 버전으로 바꿉니다(예: 1.1.0).

  2. 최신 AlloyDB Omni 연산자를 다운로드합니다.

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
    tar -xvzf alloydbomni-operator-${OPERATOR_VERSION}.tgz
  3. 최신 AlloyDB Omni Operator 커스텀 리소스 정의를 적용합니다.

    kubectl apply -f alloydbomni-operator/crds
  4. AlloyDB Omni Operator Helm 차트를 업그레이드합니다.

    helm upgrade alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

Kubernetes 매니페스트와 데이터베이스 클러스터를 모두 업그레이드하여 AlloyDB Omni Operator 업그레이드를 완료하려면 이전 단계를 완료한 직후 다음 섹션의 안내를 따르세요.

데이터베이스 클러스터 업그레이드

데이터베이스 클러스터를 업그레이드하려면 이를 정의하는 매니페스트의 spec 섹션에서 다음 필드를 업데이트합니다.

  • databaseVersion를 이 데이터베이스 클러스터를 업그레이드할 AlloyDB Omni의 전체 버전 번호로 설정합니다.

  • AlloyDB Omni Operator도 업그레이드한 경우 controlPlaneAgentsVersion를 업그레이드한 AlloyDB Omni Operator의 전체 버전 번호로 설정합니다.

AlloyDB Omni의 패치 버전만 업그레이드하는 경우(예: databaseVersion15.5.1에서 15.5.2로 업데이트) 이 단계만 완료하면 됩니다.

PostgreSQL 호환성의 부 버전을 업그레이드하는 경우(예: databaseVersion15.4.1에서 15.5.2로 업데이트) controlPlaneAgentsVersion도 업데이트해야 합니다. 이 경우 AlloyDB Omni 운영자 업그레이드에 나와 있는 추가 단계를 따랐는지 확인합니다.

예를 들어 다음 매니페스트 발췌 부분은 AlloyDB Omni Operator 버전 1.0.0를 사용하여 AlloyDB Omni Operator 버전 15.5.2를 실행하는 데이터베이스 클러스터를 정의합니다.

apiVersion: alloydbomni.dbadmin.goog/v1 
kind: DBCluster
metadata:
  name: dbcluster-sample
spec:
  databaseVersion: 15.5.2
  controlPlaneAgentsVersion: 1.0.0

이 예에서 AlloyDB Omni 버전 15.5.3을 실행하도록 데이터베이스 클러스터를 업그레이드하려면 databaseVersion: 15.5.2databaseVersion: 15.5.3로 변경합니다.

1.0.0 이전 AlloyDB Omni Operator에서 업그레이드

1.0.0보다 이전 버전의 AlloyDB Omni Operator를 실행하는 경우 Kubernetes 기반 AlloyDB Omni 설치를 업그레이드하려면 데이터를 백업한 후 AlloyDB Omni Operator를 제거한 다음 다시 설치해야 합니다. 다음 단계를 따르세요.

  1. 모든 데이터베이스 클러스터를 나열합니다.

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  2. 각 데이터베이스 클러스터에 대해 pg_dumpall 명령어를 사용하여 모든 데이터를 내보냅니다.

  3. AlloyDB Omni Operator를 제거합니다. 여기에는 모든 데이터베이스 클러스터 삭제가 포함됩니다.

  4. AlloyDB Omni 연산자를 다시 설치합니다. 새 버전 번호를 지정할 필요 없이 이전 버전의 AlloyDB Omni Operator를 설치하는 데 사용한 것과 동일한 명령어를 사용할 수 있습니다.

  5. 데이터베이스 클러스터를 다시 만듭니다. 이전에 데이터베이스 클러스터를 만들 때 사용한 것과 동일한 매니페스트 파일을 조정할 수 있습니다. 이전 version 속성을 대체하는 databaseVersion 속성 등 AlloyDB Omni Operator 버전 1.0.0에서 도입된 API 변경사항을 반영하도록 파일을 업데이트해야 할 수 있습니다.

  6. pg_restore 또는 psql\i 명령어를 사용하여 이전에 내보낸 데이터를 다시 만든 클러스터로 가져옵니다.

업그레이드 롤백

이 안내는 AlloyDB Omni 버전 15.2.1~15.5.2에만 적용됩니다. AlloyDB Omni의 Kubernetes 기반 배포에는 적용되지 않습니다.

AlloyDB Omni를 이전에 설치된 버전으로 롤백하려면 다음 명령어를 실행합니다.

sudo alloydb database-server rollback

AlloyDB Omni 제거

단일 서버

AlloyDB Omni를 제거하려면 다음 명령어를 실행합니다.

sudo alloydb database-server uninstall

AlloyDB Omni를 제거한 후에도 데이터 디렉터리는 파일 시스템에 남아 있습니다. AlloyDB Omni를 제거한 후 데이터를 보존할지 여부와 방법에 따라 이 디렉터리를 이동, 보관처리 또는 삭제할 수 있습니다.

Kubernetes

데이터베이스 클러스터 삭제

데이터베이스 클러스터를 삭제하려면 매니페스트에서 isDeletedtrue로 설정합니다. 다음 명령어를 사용하여 이 작업을 수행할 수 있습니다.

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

DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다. 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.

AlloyDB Omni Operator 제거

Kubernetes 클러스터에서 AlloyDB Omni Kubernetes Operator를 제거하려면 다음 단계를 따르세요.

  1. 모든 데이터베이스 클러스터를 삭제합니다.

    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. AlloyDB Omni Kubernetes Operator가 모든 데이터베이스 클러스터를 삭제할 때까지 기다립니다. 다음 명령어를 사용하여 데이터베이스 리소스가 남아 있는지 확인합니다.

    kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
  3. AlloyDB Omni Kubernetes Operator가 만든 다른 리소스를 삭제합니다.

    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. AlloyDB Omni Kubernetes Operator를 제거합니다.

    helm uninstall alloydbomni-operator --namespace alloydb-omni-system
  5. AlloyDB Omni Kubernetes Operator와 관련된 보안 비밀, 맞춤 리소스 설명, 네임스페이스를 삭제합니다.

    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

Kubernetes 기반 데이터베이스 클러스터 크기 조정

Kubernetes 기반 데이터베이스 클러스터의 CPU, 메모리 또는 스토리지 크기를 조정하려면 포드를 정의하는 매니페스트의 resources 필드를 업데이트합니다. AlloyDB Omni Operator는 새 사양을 데이터베이스 포드에 즉시 적용합니다.

AlloyDB Omni 연산자 매니페스트 문법에 관한 자세한 내용은 데이터베이스 클러스터 만들기를 참고하세요.

실행 중인 데이터베이스 클러스터의 리소스를 수정하는 경우 다음과 같은 제한사항이 적용됩니다.

  • 지정된 storageClass가 볼륨 확장을 지원하는 경우에만 디스크 크기를 늘릴 수 있습니다.
  • 디스크 크기를 줄일 수는 없습니다.