이 페이지에서는 AlloyDB Omni 사용자 역할을 관리하고, AlloyDB Omni 서버의 활동을 모니터링하고, AlloyDB Omni 설치를 업데이트하거나 삭제하는 방법을 설명합니다.
사용자 역할 관리
AlloyDB Omni는 AlloyDB에 포함된 사전 정의된 PostgreSQL 사용자 역할 집합을 사용하지만 다음과 같은 차이점이 있습니다.
AlloyDB Omni에는
alloydbadmin
라는 수퍼유저 역할과alloydbmetadata
라는 수퍼유저가 아닌 역할이 포함되어 있습니다.기본
postgres
사용자는 수퍼유저 역할을 갖습니다.다른 모든 사전 정의된 사용자 역할에는 권한이 없습니다. 이러한 주소는 향후 사용할 수 있도록 예약되어 있습니다.
AlloyDB와 마찬가지로 데이터베이스를 설정할 때는 다음 단계를 따르는 것이 좋습니다.
postgres
사용자 역할을 사용하여 데이터베이스를 정의하거나 가져옵니다. 새 설치에서 이 역할에는 수퍼유저 권한이 있으며 비밀번호가 필요하지 않습니다.postgres
사용자 역할을 다시 사용하여 애플리케이션 테이블에 대한 올바른 액세스 수준이 있는 새 사용자 역할을 만듭니다.이러한 새로운 제한된 액세스 권한 역할을 사용하여 데이터베이스에 연결하도록 애플리케이션을 구성합니다.
필요한 만큼 새 사용자 역할을 만들고 정의할 수 있습니다. AlloyDB Omni와 함께 제공되는 사용자 역할을 수정하거나 삭제하지 마세요.
자세한 내용은 AlloyDB 사용자 역할 관리를 참고하세요.
AlloyDB Omni 모니터링
AlloyDB Omni 설치를 모니터링한다는 것은 로그 파일을 읽고 분석하는 것을 의미합니다.
Kubernetes에서 실행되는 AlloyDB Omni에는 Prometheus 엔드포인트로 사용할 수 있는 기본 측정항목 집합도 있습니다. 사용 가능한 측정항목 목록은 AlloyDB Omni 측정항목을 참고하세요.
단일 서버
기본적으로 AlloyDB Omni 로그를 검색하려면 다음을 실행합니다.
Docker
docker logs CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너 이름으로 바꿉니다.
AlloyDB Omni의 로깅 동작을 구성하려면 AlloyDB Omni 설치 맞춤설정을 참고하세요.
Podman
podman logs CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너 이름으로 바꿉니다.
AlloyDB Omni의 로깅 동작을 구성하려면 AlloyDB Omni 설치 맞춤설정을 참고하세요.
Podman
podman logs CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너 이름으로 바꿉니다.
AlloyDB Omni의 로깅 동작을 구성하려면 AlloyDB Omni 설치 맞춤설정을 참고하세요.
Kubernetes
데이터베이스 클러스터 로그 파일 찾기
postgresql.audit
및 postgresql.log
파일은 데이터베이스 포드의 파일 시스템에서 찾을 수 있습니다. 이러한 파일에 액세스하려면 다음 단계를 따르세요.
데이터베이스 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
을 데이터베이스 클러스터 이름으로 바꿉니다. 이는 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.데이터베이스 포드에서 루트로 셸을 실행합니다.
kubectl exec ${DB_POD} -it -- /bin/bash
/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-system
및 al-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
로 이름이 지정됩니다.
로컬 환경에서 모니터링 서비스로 포트 전달을 설정합니다.
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
이전 명령어가 실행되는 동안 지정한 포트에서 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.5.2 이하 버전에서 15.5.4로 업그레이드하려면 이전 버전의 AlloyDB Omni에서 최신 버전으로 이전의 안내를 따르세요.
15.5.4 이상에서 업그레이드하려면 다음 안내를 따르세요.
새 이미지 버전을 사용하여 AlloyDB Omni를 다시 시작합니다.
이전 버전의 AlloyDB Omni에서 사용된 것과 동일한 경로와 일치하도록 데이터 디렉터리를 지정해야 합니다.
AlloyDB Omni 제거
단일 서버
AlloyDB Omni를 제거하려면 다음 명령어를 사용하여 AlloyDB Omni 컨테이너를 중지하고 삭제합니다.
Docker
docker container stop CONTAINER_NAME
docker container rm CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너 이름으로 바꿉니다.
Podman
podman container stop CONTAINER_NAME
podman container rm CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너 이름으로 바꿉니다.
Podman
podman container stop CONTAINER_NAME
podman container rm CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너 이름으로 바꿉니다.
AlloyDB Omni를 제거한 후 데이터를 보존할지 여부와 방법에 따라 외부 데이터 디렉터리를 이동, 보관처리 또는 삭제할 수 있습니다.
Kubernetes
데이터베이스 클러스터 삭제
데이터베이스 클러스터를 삭제하려면 매니페스트에서 isDeleted
를 true
로 설정합니다.
다음 명령어를 실행하여 이 작업을 수행할 수 있습니다.
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를 제거하려면 다음 단계를 따르세요.
모든 데이터베이스 클러스터를 삭제합니다.
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
AlloyDB Omni Kubernetes Operator가 모든 데이터베이스 클러스터를 삭제할 때까지 기다립니다. 다음 명령어를 사용하여 데이터베이스 리소스가 남아 있는지 확인합니다.
kubectl get dbclusters.alloydbomni.dbadmin.goog --all-namespaces
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
AlloyDB Omni Kubernetes Operator를 제거합니다.
helm uninstall alloydbomni-operator --namespace alloydb-omni-system
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
가 볼륨 확장을 지원하는 경우에만 디스크 크기를 늘릴 수 있습니다. - 디스크 크기를 줄일 수는 없습니다.