적용 대상: Azure Database for PostgreSQL - 유연한 서버
Azure Database for PostgreSQL 유연한 서버는 PostgreSQL 버전 17(미리 보기), 16, 15, 14, 13, 12, 11을 지원합니다. Postgres 커뮤니티는 약 1년에 한 번씩 새로운 기능을 포함하는 새로운 주 버전을 릴리스합니다. 또한 각 주 버전에는 부 릴리스 형태로 정기적인 버그 수정이 제공됩니다. 부 버전 업그레이드에는 기존 애플리케이션과 호환되는 변경 내용이 포함됩니다. Azure Database for PostgreSQL 유연한 서버는 고객의 유지 관리 기간 동안 정기적으로 부 버전을 업데이트합니다.
주 버전 업그레이드는 부 버전 업그레이드보다 더 복잡합니다. 여기에는 기존 애플리케이션과 호환되지 않을 수 있는 내부 변경 내용과 새로운 기능이 포함될 수 있습니다.
Azure Database for PostgreSQL 유연한 서버에는 클릭 한 번으로 서버의 현재 위치 주 버전 업그레이드를 수행하는 기능이 있습니다. 이 기능은 서버에 액세스하는 사용자 및 애플리케이션의 중단을 최소화하여 업그레이드 프로세스를 간소화합니다.
전체 업그레이드는 주 버전 업그레이드 후에도 현재 서버의 서버 이름과 기타 설정을 보존합니다. 데이터 마이그레이션이나 애플리케이션 연결 문자열 변경이 필요하지 않습니다. 현재 위치 업그레이드는 데이터 마이그레이션보다 빠르고 가동 중지 시간이 짧습니다.
업그레이드 프로세스
전체 주 버전 업그레이드에 대한 몇 가지 중요한 고려 사항은 다음과 같습니다.
- 업그레이드를 시작하기 전에 서버에 10~20개 이상의% 사용 가능한 저장소가 있는지 확인합니다. 업그레이드 프로세스 중에 임시 로그 파일 및 메타데이터 작업을 수행하면 디스크 사용량이 증가할 수 있습니다. 사용 가능한 공간이 부족하면 업그레이드 실패 또는 롤백 문제가 발생할 수 있습니다.
- 현재 위치 주 버전 업그레이드 프로세스 중에 Azure Database for PostgreSQL 유연한 서버는 사전 검사 절차를 실행하여 업그레이드가 실패할 수 있는 잠재적인 문제를 식별합니다.
- 사전 검사에서 비호환성을 찾으면 오류 메시지와 함께 업그레이드 사전 검사가 실패했음을 보여 주는 로그 이벤트를 만듭니다.
- 사전 확인에 성공하면 Azure Database for PostgreSQL 유연한 서버가 서비스를 중지하고 업그레이드를 시작하기 직전에 암시적 백업을 수행합니다. 업그레이드 오류가 있는 경우 서비스는 이 백업을 사용하여 데이터베이스 인스턴스를 이전 버전으로 복원할 수 있습니다.
- Azure Database for PostgreSQL 유연한 서버는 pg_upgrade 도구를 사용하여 전체 주 버전 업그레이드를 수행합니다. 이 서비스는 버전을 건너뛰고 최신 버전으로 직접 업그레이드할 수 있는 유연성을 제공합니다.
- HA(고가용성)를 사용하도록 설정된 서버의 현재 위치 주 버전 업그레이드 중에 서비스는 HA를 사용하지 않도록 설정하고 주 서버에서 업그레이드를 수행한 다음 업그레이드가 완료된 후 HA를 다시 사용하도록 설정합니다.
- 대부분의 확장은 일부 예외를 제외하고 전체 주 버전 업그레이드 중에 자동으로 이후 버전으로 업그레이드됩니다.
- Azure Database for PostgreSQL 유연한 서버에 대한 전체 주 버전 업그레이드 프로세스는 지원되는 최신 부 버전을 자동으로 배포합니다.
- 현재 위치 주 버전 업그레이드는 오프라인 작업이므로 프로세스 중에 서버를 사용할 수 없습니다. 대부분의 업그레이드는 15분 미만으로 완료되지만 실제 기간은 데이터베이스의 크기와 복잡성에 따라 달라집니다. 특히 필요한 시간은 PostgreSQL 인스턴스의 개체 수(테이블, 인덱스, 스키마)에 직접 비례합니다. 더 크거나 더 복잡한 스키마는 업그레이드 시간이 길어질 수 있습니다.
- 업그레이드 전 장기 실행 트랜잭션 또는 높은 워크로드로 인해 데이터베이스를 종료하는 데 걸리는 시간이 늘어나고 업그레이드 시간이 늘어날 수 있습니다.
- 전체 주 버전 업그레이드가 성공하면 이전 버전으로 되돌릴 수 있는 자동화된 방법이 없습니다. 그러나 업그레이드 이전 지점으로 PITR(특정 시점 복원)을 수행하여 이전 버전의 데이터베이스 인스턴스를 복원할 수 있습니다.
- Azure Database for PostgreSQL 유연한 서버는 업그레이드 중에 데이터베이스의 스냅샷을 만듭니다. 업그레이드가 시작되기 전에 스냅샷이 만들어집니다. 업그레이드에 실패하면 시스템은 스냅샷에서 데이터베이스를 해당 상태로 자동으로 복원합니다.
- PostgreSQL 16에는 역할 기반 보안 측정값이 도입되었습니다. Azure Database for PostgreSQL 유연한 서버에서 주 버전을 업그레이드한 후 서버에서 만든 첫 번째 사용자(ADMIN 옵션이 부여됨)는 이제 필수 유지 관리 작업에 대한 다른 역할에 대한 관리 권한을 갖게 됩니다.
업그레이드 고려 사항 및 제한 사항
현재 위치 주 버전 업그레이드 중에 사전 검사 작업이 실패하면 자세한 오류 메시지와 함께 업그레이드가 차단됩니다. 다음은 업그레이드가 실패하거나 예기치 않게 동작할 수 있는 알려진 제한 사항입니다.
지원되지 않는 서버 구성
- 현재 위치 업그레이드에서는 읽기 복제본이 지원되지 않습니다. 주 서버를 업그레이드하기 전에 읽기 복제본을 삭제해야 합니다. 업그레이드 후 복제본을 다시 만들 수 있습니다.
- 네트워크 트래픽 규칙은 업그레이드 작업을 차단할 수 있습니다.
- 유연한 서버가 가상 네트워크 내의 포트 5432 및 6432 및 Azure Storage(로그 보관용)에서 트래픽을 보내거나 받을 수 있는지 확인합니다.
- NSG(네트워크 보안 그룹)가 이 트래픽을 제한하는 경우 HA는 업그레이드 후 자동으로 다시 사용하도록 설정하지 않습니다. NSG 규칙을 수동으로 업데이트하고 HA를 다시 사용하도록 설정해야 할 수 있습니다.
- 논리적 복제 슬롯은 동일 장소에서의 주 버전 업그레이드 동안 지원되지 않습니다.
- SSDv2 스토리지를 사용하는 서버는 주 버전 업그레이드에 적합하지 않습니다.
- 주 버전 업그레이드 동안에는
pg_stat_activity
에 종속된 뷰가 지원되지 않습니다.
확장 제한 사항
시스템 내 주요 버전 업그레이드는 모든 PostgreSQL 확장을 지원하지 않습니다. 지원되지 않는 확장이 발견되면 사전 검사 중에 업그레이드가 실패합니다.
- PostgreSQL 버전
timescaledb
에서는 다음 확장이 지원되지 않습니다. ,dblink
,orafce
,pg_partman
postgres_fdw
- 업그레이드 대상이 PostgreSQL 16 이상인 경우 다음 확장이 지원되지 않습니다.
pgrouting
- PostgreSQL 17
pgrouting
로 업그레이드할 때는 다음 확장이 지원되지 않습니다. ,age
,azure_ai
,hll
pg_diskann
pg_repack
및hypopg
와 같은 확장 프로그램은 현재 위치 업그레이드를 지원하지 않으므로 업그레이드 전에 제거하고 업그레이드 후에 다시 생성해야 합니다. 이러한 확장은 비영구적이고 업그레이드 후 다시 구성해도 안전합니다.
이러한 확장은 업그레이드하기 전에 azure.extensions 서버 매개 변수에서 제거해야 합니다. 있는 경우 업그레이드가 차단됩니다.
PostGIS 관련 고려 사항
PostGIS 또는 종속 확장을 사용하는 경우 다음을 포함하도록 search_path 서버 매개 변수를 구성해야 합니다.
- PostGIS와 관련된 스키마
postgis
,postgis_raster
,postgis_sfcgal
,postgis_tiger_geocoder
,postgis_topology
,address_standardizer
,address_standardizer_data_us
,fuzzystrmatch
를 포함한 종속 확장명- search_path 올바르게 구성하지 못하면 업그레이드 후 업그레이드 실패 또는 개체 손상이 발생할 수 있습니다.
기타 업그레이드 고려 사항
- LO(큰 개체): 수백만 개의 큰 개체가 저장된
pg_largeobject
데이터베이스는 높은 메모리 사용량 또는 로그 볼륨으로 인해 업그레이드 오류가 발생할 수 있습니다. vacuumlo 유틸리티를 사용하여 사용되지 않는 LO를 정리하고, 많은 LO가 계속 사용 중인 경우 업그레이드하기 전에 서버를 확장하는 것이 좋습니다.
경고
vacuumlo 사용 시 주의하세요. vacuumlo
는 기존의 참조 열(oid, lo)을 기반으로 분리된 큰 개체를 식별합니다. 애플리케이션에서 사용자 지정 또는 간접 참조 형식을 사용하는 경우 유효한 큰 개체가 실수로 삭제될 수 있습니다. vacuumlo
또한 특히 수백만 개의 큰 개체가 있는 데이터베이스에서 상당한 CPU, 메모리 및 IOPS를 사용할 수 있습니다. 유지 관리 기간 동안 실행하고 비-prod에서 먼저 테스트합니다.
업그레이드 후
주 버전 업그레이드가 완료된 후, 각 데이터베이스에서 ANALYZE
명령을 실행하여 pg_statistic
테이블을 새로 고치기를 권장합니다. 통계가 없거나 부실하면 쿼리 계획이 잘못되어 성능이 저하되고 과도한 메모리가 소요될 수 있습니다.
postgres=> analyze;
ANALYZE
업그레이드 로그 보기
주 버전 업그레이드 로그(PG_Upgrade_Logs
)는 자세한 서버 로그에 대한 직접 액세스를 제공합니다. PG_Upgrade_Logs
를 업그레이드 프로세스에 통합하면 새 PostgreSQL 버전으로 더욱 원활하고 투명하게 전환하는 데 도움이 될 수 있습니다.
다음 서버 매개 변수를 사용하여 서버 로그와 동일한 방식으로 주 버전 업그레이드 로그를 구성할 수 있습니다.
- 이 기능을 켜려면
logfiles.download_enable
을ON
으로 설정합니다. - 로그 파일의 보존 기간(일)을 정의하려면
logfiles.retention_days
를 사용합니다.
업그레이드 로그 설정
PG_Upgrade_Logs
의 사용을 시작하려면 PostgreSQL 서버 로그와 주 버전 업그레이드 로그 캡처를 구성하세요.
서버 로그용 UI를 통해 업그레이드 로그에 액세스할 수 있습니다. 여기에서 PostgreSQL 주 버전 업그레이드의 진행률과 세부 정보를 실시간으로 모니터링할 수 있습니다. 이 UI는 로그를 볼 수 있는 중앙 위치를 제공하므로 업그레이드 프로세스를 보다 쉽게 추적하고 문제를 해결할 수 있습니다.
업그레이드 로그 사용의 이점
- 통찰력 있는 진단:
PG_Upgrade_Logs
는 업그레이드 프로세스에 대한 귀중한 인사이트를 제공합니다. 수행된 작업에 대한 자세한 정보를 캡처하고 발생하는 오류 또는 경고를 강조 표시합니다. 이러한 세부 수준은 보다 원활한 전환을 위해 업그레이드 중에 발생할 수 있는 문제를 진단하고 해결하는 데 도움이 됩니다. - 간소화된 문제 해결: 이러한 로그에 직접 액세스하면 잠재적인 업그레이드 장애 요인을 신속하게 식별하고 해결할 수 있으므로 가동 중지 시간을 줄이고 작업에 미치는 영향을 최소화할 수 있습니다. 로그는 보다 효율적이고 효과적인 문제 해결을 가능하게 하여 중요한 문제 해결 도구 역할을 합니다.
비고
직접 주 버전 업그레이드는 자동 마이그레이션 서버에서 지원됩니다. 자동 마이그레이션된 서버에서 전체 주 버전 업그레이드가 성공하면 사용자 이름 형식 username@servername 더 이상 지원되지 않습니다. 대신 표준 형식인 사용자 이름을 사용해야 합니다. 인증 문제를 방지하려면 업그레이드 후 업데이트된 사용자 이름 형식을 사용하도록 애플리케이션 및 스크립트의 모든 연결 문자열을 신중하게 검토하고 업데이트합니다.