컨테이너를 사용하여 AlloyDB Omni의 마이너 버전 업그레이드 수행

문서 버전을 선택합니다.

데이터를 마이그레이션하지 않고 버그 수정, 보안 패치, 마이너 개선사항을 적용하려면 동일한 메이저 버전 트랙에서 컨테이너 이미지를 이후 마이너 버전 이미지로 교체하여 AlloyDB Omni의 마이너 데이터베이스 버전 업그레이드를 수행합니다. 마이너 버전 업그레이드는 기존 호스트 데이터 디렉터리와 구성 파일을 보존하며, 업그레이드된 설치를 확인하거나 필요한 경우 이전 마이너 버전으로 롤백할 수 있습니다.

주요 PostgreSQL 버전 간에 업그레이드하려면 VM에서 AlloyDB Omni 업그레이드를 참조하세요.

이 페이지의 안내는 독립형 단일 노드 배포와 멀티 노드 토폴로지의 개별 데이터베이스 노드(예: 읽기 복제본 또는 고가용성 대기 노드가 있는 배포)에 적용됩니다. 설정에 따라 다음 고려사항을 검토하세요.

  • 외부 데이터 디렉터리: 컨테이너를 중지하고 삭제하기 전에 데이터베이스 데이터가 컨테이너에 마운트된 영구 호스트 디렉터리에 저장되어 있는지 확인합니다 (예: -v DATA_DIR:/var/lib/postgresql/data). 컨테이너 파일 시스템 내부에만 데이터를 저장하는 컨테이너를 삭제하면 데이터베이스 데이터가 삭제됩니다. 자세한 내용은 컨테이너를 사용하여 AlloyDB Omni 설치를 참조하세요.
  • 멀티 노드 토폴로지: 기본 노드를 업그레이드하기 전에 항상 모든 복제본 및 대기 노드를 업그레이드합니다. 고가용성 설정에서는 컨테이너를 중지하기 전에 자동 장애 조치 또는 장애 감지를 일시중지하고 이전 기본 노드를 업그레이드하기 전에 업그레이드된 대기 노드로 전환을 수행합니다.
  • 확장 프로그램이 있는 커스텀 컨테이너 이미지: PostGIS 또는 Orafce와 같은 서드 파티 확장 프로그램으로 커스텀 컨테이너 이미지를 빌드한 경우 컨테이너를 다시 만들기 전에 업데이트된 마이너 버전 기본 이미지를 사용하여 커스텀 컨테이너 이미지를 다시 빌드합니다.

시작하기 전에

AlloyDB Omni를 업그레이드하기 전에 다음 단계를 완료합니다.

  1. 컨테이너를 교체하려면 데이터베이스 서비스를 일시적으로 중지해야 하므로 유지보수 기간 또는 짧은 서비스 다운타임을 계획합니다.
  2. 업그레이드를 시작하기 전에 데이터베이스를 전체 백업합니다. 자세한 내용은 백업 및 복원 개요를 참조하세요.
  3. 멀티 노드 토폴로지를 업그레이드하는 경우 대기 및 복제본 노드를 먼저 업그레이드할 수 있도록 현재 기본 노드와 모든 대기 또는 복제본 노드를 식별합니다.
  4. 실행 중인 컨테이너를 검사하여 현재 이미지, 호스트 데이터 디렉터리 마운트, 포트 매핑, 환경 변수, 런타임 플래그를 기록하여 동일한 구성으로 컨테이너를 다시 만들 수 있습니다.

    Docker

    docker inspect CONTAINER_NAME

    Podman

    podman inspect CONTAINER_NAME

    CONTAINER_NAME을 AlloyDB Omni 컨테이너 이름으로 바꿉니다(예: my-omni).

  5. 업그레이드하기 전에 현재 AlloyDB Omni 데이터베이스 버전을 확인합니다.

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

업데이트된 컨테이너 이미지 가져오기

대상 마이너 버전 컨테이너 이미지를 호스트 머신으로 가져옵니다.

Docker

docker pull IMAGE_URI

Podman

podman pull IMAGE_URI

IMAGE_URI을 업그레이드할 컨테이너 이미지 URI 및 부 버전 태그로 바꿉니다(예: Debian 이미지의 경우 google/alloydbomni:18.3.0 또는 Red Hat Universal Base Image(UBI)의 경우 google/alloydbomni:18.3.0-ubi9).

배포에서 PostGIS 또는 Orafce와 같은 확장 프로그램이 포함된 커스텀 컨테이너 이미지를 사용하는 경우 업데이트된 마이너 버전 태그를 참조하도록 Dockerfile에서 FROM 명령어 또는 OMNI_VERSION 빌드 인수를 업데이트한 후 업데이트된 커스텀 이미지를 빌드한 후 진행합니다.

AlloyDB Omni 업그레이드

AlloyDB Omni 설치를 이후 마이너 버전으로 업그레이드하려면 각 노드에서 다음 단계를 완료합니다. 멀티 노드 토폴로지에서 기본 노드를 업그레이드하기 전에 각 대기 또는 복제본 노드에서 다음 단계를 완료합니다.

  1. 기존 AlloyDB Omni 컨테이너를 중지하고 삭제합니다.

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME

    컨테이너를 중지하고 삭제해도 마운트된 호스트 데이터 디렉터리의 데이터베이스 파일에는 영향을 미치지 않습니다.

  2. 업데이트된 마이너 버전 이미지를 사용하고 기존 호스트 데이터 디렉터리를 마운트하여 AlloyDB Omni 컨테이너를 다시 만들고 시작합니다.

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      IMAGE_URI

    다음을 바꿉니다.

    • CONTAINER_NAME: AlloyDB Omni 컨테이너의 이름(예: my-omni)
    • PASSWORD: 컨테이너의 postgres 사용자의 비밀번호입니다. 기존 초기화된 데이터 디렉터리를 마운트하면 컨테이너는 데이터베이스에 구성된 기존 비밀번호를 유지합니다.
    • DATA_DIR: 기존 데이터베이스 데이터가 저장된 호스트 디렉터리 경로입니다.
    • HOST_PORT: 컨테이너 포트 5432를 게시하는 호스트 머신의 TCP 포트입니다(예: 5432).
    • IMAGE_URI: 업데이트된 마이너 버전 컨테이너 이미지 URI(또는 다시 빌드된 커스텀 이미지 URI)(예: google/alloydbomni:18.3.0)

    호스트 데이터 디렉터리의 파일 소유권이 컨테이너의 postgres 사용자와 일치하도록 이전 컨테이너와 동일한 기본 OS 이미지 변형 (Debian 또는 UBI)을 사용합니다. 이전 컨테이너에서 --ulimit, --log-driver, --shm-size, -v /dev/shm:/dev/shm와 같은 추가 런타임 플래그를 사용한 경우 컨테이너를 다시 만들 때 해당 플래그를 포함합니다. 자세한 내용은 프로덕션용 AlloyDB Omni 설정을 참조하세요.

업그레이드 확인

컨테이너를 다시 만들고 시작한 후 데이터베이스 서비스가 업데이트된 마이너 버전을 실행 중인지 확인합니다.

  1. AlloyDB Omni 컨테이너의 상태를 확인하고 상태가 Up인지 확인합니다.

    Docker

    docker ps --filter "name=CONTAINER_NAME"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
  2. 데이터베이스에 연결하고 업그레이드된 버전이 활성 상태인지 확인합니다.

    Docker

    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

업그레이드 롤백

AlloyDB Omni 설치를 이전 마이너 버전으로 되돌려야 하는 경우 업그레이드된 컨테이너를 중지하고 삭제한 후 이전 마이너 버전 이미지를 사용하는 컨테이너를 시작합니다.

  1. 업그레이드된 AlloyDB Omni 컨테이너를 중지하고 삭제합니다.

    Docker

    docker container stop CONTAINER_NAME
    docker container rm CONTAINER_NAME

    Podman

    podman container stop CONTAINER_NAME
    podman container rm CONTAINER_NAME
  2. 이전 마이너 버전 이미지를 사용하고 동일한 호스트 데이터 디렉터리를 마운트하여 컨테이너를 다시 만들고 시작합니다.

    Docker

    docker run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    Podman

    podman run -d --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 \
      --restart=always \
      ROLLBACK_IMAGE_URI

    다음을 바꿉니다.

    • CONTAINER_NAME: AlloyDB Omni 컨테이너의 이름(예: my-omni)
    • PASSWORD: 컨테이너의 postgres 사용자의 비밀번호입니다. 기존 초기화된 데이터 디렉터리를 마운트하면 컨테이너는 데이터베이스에 구성된 기존 비밀번호를 유지합니다.
    • DATA_DIR: 기존 데이터베이스 데이터가 저장된 호스트 디렉터리 경로입니다.
    • HOST_PORT: 컨테이너 포트 5432를 게시하는 호스트 머신의 TCP 포트입니다(예: 5432).
    • ROLLBACK_IMAGE_URI: 이전 설치의 컨테이너 이미지 URI 및 마이너 버전 태그(또는 이전 커스텀 이미지 URI)(예: google/alloydbomni:18.1.0)
  3. 컨테이너가 실행 중이고 이전 데이터베이스 버전이 활성 상태인지 확인합니다.

    Docker

    docker ps --filter "name=CONTAINER_NAME"
    docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

    Podman

    podman ps --filter "name=CONTAINER_NAME"
    podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "SELECT version();"

다음 단계