주요 PostgreSQL 버전 간에 업그레이드하려면 VM에서 AlloyDB Omni 업그레이드를 참조하세요.
이 페이지의 안내는 독립형 단일 노드 배포와 멀티 노드 토폴로지의 개별 데이터베이스 노드(예: 읽기 복제본 또는 고가용성 대기 노드가 있는 배포)에 적용됩니다. 설정에 따라 다음 고려사항을 검토하세요.
- 외부 데이터 디렉터리: 컨테이너를 중지하고 삭제하기 전에 데이터베이스 데이터가 컨테이너에 마운트된 영구 호스트 디렉터리에 저장되어 있는지 확인합니다 (예:
-v DATA_DIR:/var/lib/postgresql/data). 컨테이너 파일 시스템 내부에만 데이터를 저장하는 컨테이너를 삭제하면 데이터베이스 데이터가 삭제됩니다. 자세한 내용은 컨테이너를 사용하여 AlloyDB Omni 설치를 참조하세요. - 멀티 노드 토폴로지: 기본 노드를 업그레이드하기 전에 항상 모든 복제본 및 대기 노드를 업그레이드합니다. 고가용성 설정에서는 컨테이너를 중지하기 전에 자동 장애 조치 또는 장애 감지를 일시중지하고 이전 기본 노드를 업그레이드하기 전에 업그레이드된 대기 노드로 전환을 수행합니다.
- 확장 프로그램이 있는 커스텀 컨테이너 이미지: PostGIS 또는 Orafce와 같은 서드 파티 확장 프로그램으로 커스텀 컨테이너 이미지를 빌드한 경우 컨테이너를 다시 만들기 전에 업데이트된 마이너 버전 기본 이미지를 사용하여 커스텀 컨테이너 이미지를 다시 빌드합니다.
시작하기 전에
AlloyDB Omni를 업그레이드하기 전에 다음 단계를 완료합니다.
- 컨테이너를 교체하려면 데이터베이스 서비스를 일시적으로 중지해야 하므로 유지보수 기간 또는 짧은 서비스 다운타임을 계획합니다.
- 업그레이드를 시작하기 전에 데이터베이스를 전체 백업합니다. 자세한 내용은 백업 및 복원 개요를 참조하세요.
- 멀티 노드 토폴로지를 업그레이드하는 경우 대기 및 복제본 노드를 먼저 업그레이드할 수 있도록 현재 기본 노드와 모든 대기 또는 복제본 노드를 식별합니다.
실행 중인 컨테이너를 검사하여 현재 이미지, 호스트 데이터 디렉터리 마운트, 포트 매핑, 환경 변수, 런타임 플래그를 기록하여 동일한 구성으로 컨테이너를 다시 만들 수 있습니다.
Docker
docker inspect CONTAINER_NAMEPodman
podman inspect CONTAINER_NAMECONTAINER_NAME을 AlloyDB Omni 컨테이너 이름으로 바꿉니다(예:my-omni).업그레이드하기 전에 현재 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_URIPodman
podman pull IMAGE_URIIMAGE_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 설치를 이후 마이너 버전으로 업그레이드하려면 각 노드에서 다음 단계를 완료합니다. 멀티 노드 토폴로지에서 기본 노드를 업그레이드하기 전에 각 대기 또는 복제본 노드에서 다음 단계를 완료합니다.
기존 AlloyDB Omni 컨테이너를 중지하고 삭제합니다.
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAME컨테이너를 중지하고 삭제해도 마운트된 호스트 데이터 디렉터리의 데이터베이스 파일에는 영향을 미치지 않습니다.
업데이트된 마이너 버전 이미지를 사용하고 기존 호스트 데이터 디렉터리를 마운트하여 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_URIPodman
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 설정을 참조하세요.
업그레이드 확인
컨테이너를 다시 만들고 시작한 후 데이터베이스 서비스가 업데이트된 마이너 버전을 실행 중인지 확인합니다.
AlloyDB Omni 컨테이너의 상태를 확인하고 상태가
Up인지 확인합니다.Docker
docker ps --filter "name=CONTAINER_NAME"Podman
podman ps --filter "name=CONTAINER_NAME"데이터베이스에 연결하고 업그레이드된 버전이 활성 상태인지 확인합니다.
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 설치를 이전 마이너 버전으로 되돌려야 하는 경우 업그레이드된 컨테이너를 중지하고 삭제한 후 이전 마이너 버전 이미지를 사용하는 컨테이너를 시작합니다.
업그레이드된 AlloyDB Omni 컨테이너를 중지하고 삭제합니다.
Docker
docker container stop CONTAINER_NAME docker container rm CONTAINER_NAMEPodman
podman container stop CONTAINER_NAME podman container rm CONTAINER_NAME이전 마이너 버전 이미지를 사용하고 동일한 호스트 데이터 디렉터리를 마운트하여 컨테이너를 다시 만들고 시작합니다.
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_URIPodman
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)
컨테이너가 실행 중이고 이전 데이터베이스 버전이 활성 상태인지 확인합니다.
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();"
다음 단계
- VM에서 AlloyDB Omni 업그레이드
- 프로덕션용 AlloyDB Omni 설정
- AlloyDB Omni 설치 맞춤설정
- AlloyDB Omni 관리 및 모니터링
- 백업 및 복원 개요