이 문서에서는 온라인 모드에서 온-프레미스 또는 Azure VM(가상 머신)에서 Azure Database for PostgreSQL로 PostgreSQL 인스턴스를 마이그레이션하는 방법을 안내합니다.
Azure Database for PostgreSQL의 마이그레이션 서비스는 Azure Portal 및 Azure CLI에 통합된 완전 관리형 서비스입니다. Azure Database for PostgreSQL 유연한 서버로의 마이그레이션 과정을 간소화합니다.
- 필수 조건
- 마이그레이션 수행
- 마이그레이션 모니터링
- 커트오버 시작
- 마이그레이션이 완료되면 확인합니다.
필수 조건
마이그레이션을 시작하려면 다음 필수 구성 요소가 필요합니다.
Azure Database for PostgreSQL 마이그레이션 서비스를 사용하여 마이그레이션을 시작하기 전에 온라인 마이그레이션 시나리오를 위해 특별히 설계된 다음 필수 구성 요소를 충족해야 합니다.
원본 버전 확인
원본 PostgreSQL 서버 버전은 9.5 이상이어야 합니다.
원본 PostgreSQL 버전이 9.5 미만인 경우 마이그레이션을 시작하기 전에 9.5 이상으로 업그레이드합니다.
비고
Azure Database for PostgreSQL의 마이그레이션 서비스는 원본 Google AlloyDB for PostgreSQL의 IP 주소를 사용하는 연결을 지원합니다. 형식 myproject:myregion:myinstance 은 지원되지 않습니다.
test_decoding 설치 - 원본 설정
- test_decoding은 논리적 디코딩 메커니즘을 통해 WAL을 수신하고 이를 수행된 작업의 텍스트 표현으로 디코딩합니다.
- PostgreSQL용 Google AlloyDB에서 test_decoding 플러그 인이 미리 설치되어 논리적 복제를 위해 준비됩니다. 이렇게 하면 논리적 복제 슬롯을 쉽게 설정하고 WAL 변경 내용을 스트리밍하여 CDC(변경 데이터 캡처) 또는 외부 시스템에 복제와 같은 사용 사례를 용이하게 할 수 있습니다.
- 테스트 디코딩 플러그 인에 대한 자세한 내용은 PostgreSQL 설명서를 참조하세요.
대상 설정 구성
- 마이그레이션하기 전에 Azure Database for PostgreSQL – 유연한 서버를 만들어야 합니다.
- Azure Database for PostgreSQL에 대해 프로비전된 SKU - 플렉시블 서버는 원본과 일치해야 합니다.
- 새 Azure Database for PostgreSQL을 만들려면 Azure Database for PostgreSQL 유연한 서버 만들기를 방문하세요.
CDC를 소스로 활성화
-
test_decoding논리적 디코딩 플러그 인은 원본에서 변경된 레코드를 캡처합니다. - 마이그레이션 사용자에게 필요한 복제 권한이 있는지 확인하려면 다음 SQL 명령을 실행합니다.
ALTER USER <user> WITH REPLICATION;
Google 클라우드 콘솔에서 Google AlloyDB PostgreSQL 인스턴스로 이동하여 인스턴스 이름을 선택하여 세부 정보 페이지를 열고 편집 단추를 선택한 다음 Flags 섹션에서 다음 플래그를 수정합니다.
-
alloydb.logical_decoding = on플래그 설정 -
max_replication_slots플래그를 1보다 큰 값으로 설정합니다. 이 값은 마이그레이션을 위해 선택한 데이터베이스 수보다 커야 합니다. -
max_wal_senders플래그를 1보다 큰 값으로 설정합니다. 최소한max_replication_slots와 인스턴스에서 이미 사용된 보낸 사람 수를 더한 값과 같아야 합니다. -
wal_sender_timeout플래그는 지정된 시간(밀리초)보다 긴 비활성 복제 연결을 종료합니다. 값을 0으로 설정하면 시간 제한 메커니즘이 비활성화되며 마이그레이션에 유효한 설정입니다.
-
대상 유연한 서버에서 온라인 마이그레이션이 로그를 저장할 스토리지가 부족하지 않도록 하려면 프로비전된 관리 디스크를 사용하여 충분한 테이블스페이스 공간을 확보해야 합니다. 이렇게 하려면 마이그레이션 기간 동안 서버 매개 변수
azure.enable_temp_tablespaces_on_local_ssd를 사용하지 않도록 설정하고 마이그레이션 후 원래 상태로 복원합니다.
네트워크 설정합니다.
마이그레이션 서비스가 올바르게 작동하려면 네트워크 설정이 중요합니다. 원본 PostgreSQL 서버가 대상 Azure Database for PostgreSQL 서버와 통신할 수 있는지 확인합니다. 성공적인 마이그레이션을 위해서는 다음 네트워크 구성이 필수적입니다.
네트워크 설정에 대한 자세한 내용은 마이그레이션 서비스 네트워크 가이드를 참조하세요.
확장 기능 활성화
Azure Database for PostgreSQL에서 마이그레이션 서비스를 사용하여 마이그레이션을 성공적으로 수행하려면 원본 PostgreSQL 인스턴스에 대한 확장을 확인해야 할 수 있습니다. 확장은 애플리케이션에 필요할 수 있는 기능과 기능을 제공합니다. 마이그레이션 프로세스를 시작하기 전에 원본 PostgreSQL 인스턴스에서 확장을 확인해야 합니다.
Azure Database for PostgreSQL 유연한 서버의 대상 인스턴스에서 원본 PostgreSQL 인스턴스에서 식별되는 지원되는 확장을 사용하도록 설정합니다.
자세한 내용은 확장 및 모듈을 참조하세요.
서버 매개 변수 확인
이러한 매개 변수는 자동으로 대상 환경으로 마이그레이션되지 않으며 수동으로 구성해야 합니다.
Azure Portal의 "서버 매개 변수" 섹션에 액세스하고 그에 따라 값을 수동으로 업데이트하여 원본 PostgreSQL 데이터베이스의 서버 매개 변수 값을 Azure Database for PostgreSQL과 일치시킵니다.
매개 변수 변경 내용을 저장하고 Azure Database for PostgreSQL을 다시 시작하여 필요한 경우 새 구성을 적용합니다.
사용자 및 역할 확인
Azure Database for PostgreSQL로 마이그레이션하는 경우 수동으로 개입해야 하므로 사용자 및 역할 마이그레이션을 별도로 처리해야 합니다.
사용자 및 역할의 수동 마이그레이션: 사용자 및 관련 역할은 Azure Database for PostgreSQL로 수동으로 마이그레이션해야 합니다. 이 프로세스를 용이하게 하기 위해
pg_dumpall플래그와 함께--globals-only유틸리티를 사용하여 역할 및 사용자 계정과 같은 전역 개체를 내보낼 수 있습니다.<<username>>를 실제 사용자 이름으로, 그리고<<filename>>를 원하는 출력 파일 이름으로 바꿔 다음 명령을 실행합니다.pg_dumpall --globals-only -U <<username>> -f <<filename>>.sql슈퍼 사용자 역할에 대한 제한: Azure Database for PostgreSQL은 슈퍼 사용자 역할을 지원하지 않습니다. 따라서 슈퍼 사용자 권한이 있는 사용자는 마이그레이션하기 전에 해당 권한을 제거해야 합니다. 그에 따라 권한과 역할을 조정했는지 확인합니다.
다음 단계를 수행하면 슈퍼 사용자 제한과 관련된 문제가 발생하지 않고 사용자 계정 및 역할이 Azure Database for PostgreSQL로 올바르게 마이그레이션되었는지 확인할 수 있습니다.
대상에서 고가용성(안정성) 및 읽기 복제본을 사용하지 않도록 설정합니다.
고가용성(안정성)을 사용하지 않도록 설정하고 대상 환경에서 복제본을 읽어야 합니다. 이러한 기능은 마이그레이션이 완료된 후에만 사용하도록 설정해야 합니다.
이러한 지침을 따르면 HA 및 읽기 복제본으로 인해 발생하는 추가 변수 없이 원활한 마이그레이션 프로세스를 보장할 수 있습니다. 마이그레이션이 완료되고 데이터베이스가 안정적이면 이러한 기능을 계속 사용하여 Azure에서 데이터베이스 환경의 가용성과 확장성을 향상시킬 수 있습니다.
마이그레이션 수행
Azure Portal 또는 Azure CLI를 사용하여 마이그레이션할 수 있습니다.
이 문서에서는 Azure Portal을 사용하여 PostgreSQL용 Google AlloyDB 서버에서 Azure Database for PostgreSQL로 PostgreSQL 데이터베이스를 마이그레이션하는 방법을 안내합니다. Azure Portal을 사용하면 데이터베이스 마이그레이션을 비롯한 다양한 작업을 수행할 수 있습니다. 이 자습서에 설명된 단계에 따라 데이터베이스를 Azure로 원활하게 전송하고 강력한 기능과 확장성을 활용할 수 있습니다.
마이그레이션 작업 구성
마이그레이션 서비스는 Azure Portal에서 간단한 마법사 기반 환경과 함께 제공됩니다.
Azure Portal 사용:
Azure Database for PostgreSQL 유연한 서버를 선택합니다.
리소스 메뉴에서 마이그레이션을 선택합니다.
만들기를 선택하여 마법사 기반 일련의 탭을 통해 온-프레미스 또는 Azure VM에서 유연한 서버로 마이그레이션을 수행합니다.
비고
마이그레이션 서비스를 처음 사용할 때 첫 번째 마이그레이션을 시작하라는 프롬프트와 함께 빈 표가 나타납니다.
유연한 서버 대상으로의 마이그레이션이 이미 만들어진 경우 이제 그리드에 마이그레이션 시도에 대한 정보가 포함됩니다.
설치 프로그램
마이그레이션 이름, 원본 서버 유형, 옵션 및 모드와 같은 마이그레이션과 관련된 여러 세부 정보를 제공해야 합니다.
마이그레이션 이름은 이 유연한 서버 대상으로의 각 마이그레이션에 대한 고유 식별자입니다. 이 필드는 영숫자 문자만 허용하며 하이픈(-)을 제외한 특수 문자는 허용하지 않습니다. 이름은 하이픈으로 시작할 수 없으며 대상 서버에 대해 고유해야 합니다. 동일한 유연한 서버 대상으로의 두 마이그레이션은 동일한 이름을 가질 수 없습니다.
원본 서버 유형 - PostgreSQL 원본에 따라 Azure Virtual Machine 또는 온-프레미스 서버를 선택할 수 있습니다.
마이그레이션 옵션 - 마이그레이션 을 트리거하기 전에 유효성 검사를 수행할 수 있습니다. 다음 옵션 중에서 선택할 수 있습니다.
- 유효성 검사 - 대상으로 마이그레이션하기 위한 서버 및 데이터베이스 준비 상태의 유효성을 검사합니다.
- 유효성 검사 및 마이그레이션 - 마이그레이션을 트리거하기 전에 유효성 검사를 수행합니다. 유효성 검사 실패가 없으면 마이그레이션이 시작됩니다.
마이그레이션을 실행하기 전에 사전 마이그레이션 유효성 검사를 수행하기 위해 유효성 검사 또는 유효성 검사 및 마이그레이션 옵션을 선택하는 것이 항상 좋은 방법입니다.
사전 마이그레이션 유효성 검사에 대해 자세히 알고 싶으시면 premigration을 방문해 주세요.
- 마이그레이션 모드 를 사용하면 마이그레이션 모드를 선택할 수 있습니다. 오프라인 이 기본 옵션입니다. 이 경우 온라인으로 변경합니다.
다음: 런타임 서버를 선택합니다.
런타임 서버
마이그레이션 런타임 서버는 마이그레이션 중에 중간 서버 역할을 하도록 설계된 Azure Database for PostgreSQL의 마이그레이션 서비스 내의 특수한 기능입니다. 대상 서버는 아니지만 프라이빗 네트워크를 통해서만 액세스할 수 있는 원본 환경에서 데이터베이스를 쉽게 마이그레이션하는 데 사용되는 별도의 Azure Database for PostgreSQL 유연한 서버 인스턴스입니다.
런타임 서버에 대한 자세한 내용은 마이그레이션 런타임 서버를 방문하세요.
원본 서버
원본 서버 탭은 데이터베이스의 원본인 설치 탭에서 선택한 원본과 관련된 세부 정보를 제공하라는 메시지를 표시합니다.
- 서버 이름 - 원본 PostgreSQL 서버의 호스트 이름 또는 IP 주소를 제공합니다.
- 포트 - 원본 서버의 포트 번호입니다.
- 관리자 로그인 - 원본 PostgreSQL 서버의 관리자 사용자의 이름입니다.
- 암호 - 원본 PostgreSQL 서버에 연결하기 위해 제공된 관리자 로그인의 암호입니다.
-
SSL 모드 - 지원되는 값은 다음과 같습니다
preferredrequired. 원본 PostgreSQL 서버에서 SSL이OFF일 때,prefer을 사용합니다. 원본 서버의 SSL이ON면 .를require사용합니다. SSL 값은 원본 서버의 postgresql.conf 파일에서 확인할 수 있습니다. - 연결 테스트 — 대상과 원본 간의 연결 테스트를 수행합니다. 연결에 성공하면 다음 탭으로 진행할 수 있습니다. 이러한 테스트는 제공된 자격 증명을 사용한 인증 확인을 포함하여 대상 서버와 원본 서버 사이에 존재할 수 있는 연결 문제를 식별하는 것을 목표로 합니다. 테스트 연결을 설정하는 데 몇 초 정도 걸립니다.
테스트 연결이 성공하면 다음: 대상 서버를 선택합니다.
대상 서버
대상 서버 탭에는 구독 이름, 리소스 그룹, 서버 이름, 위치 및 PostgreSQL 버전과 같은 유연한 서버 대상에 대한 메타데이터가 표시됩니다.
- 관리자 로그인 - 대상 PostgreSQL 서버의 관리자 사용자 이름입니다.
- 암호 - 대상 PostgreSQL 서버에 연결하기 위해 제공된 관리자 로그인의 암호입니다.
-
사용자 지정 FQDN 또는 IP 주소: 사용자 지정 FQDN 또는 IP 주소 필드는 선택 사항이며 대상이 사용자 지정 DNS 서버 뒤에 있거나 사용자 지정 DNS 네임스페이스가 있는 경우 사용할 수 있으므로 특정 FQDN 또는 IP 주소를 통해서만 액세스할 수 있습니다. 예를 들어, 사용자 지정 DNS 서버가
production-flexible-server.example.comDNS 영역을 포함하고 있는 경우, 또는 이 영역에 대한 쿼리를198.1.0.2로 전달하는 경우, 이에는production-flexible-server.postgres.database.azure.com,postgres.database.azure.com과 같은 항목 또는168.63.129.16와 같은 PostgreSQL FQDN이 포함될 수 있습니다. 이러한 경우 FQDN은 Azure 공용 또는 프라이빗 DNS 영역에서 확인됩니다. - 연결 테스트 — 원본과 대상 간의 연결 테스트를 수행합니다. 연결에 성공하면 다음 탭으로 진행할 수 있습니다. 이러한 테스트는 제공된 자격 증명을 사용한 인증 확인을 포함하여 원본 서버와 대상 서버 간에 발생할 수 있는 연결 문제를 식별하는 것을 목표로 합니다. 테스트 연결을 설정하는 데 몇 초 정도 걸립니다.
테스트 연결이 성공하면 다음: 데이터베이스를 선택하여 유효성을 검사하거나 마이그레이션합니다.
유효성을 검사하거나 마이그레이션할 데이터베이스
유효성을 검사하거나 마이그레이션할 데이터베이스 탭 아래에서 원본 PostgreSQL 서버에서 마이그레이션할 사용자 데이터베이스 목록을 선택할 수 있습니다.
데이터베이스를 선택한 후 다음: 요약을 선택합니다.
요약
요약 탭에는 유효성 검사 또는 마이그레이션을 만들기 위한 모든 원본 및 대상 세부 정보가 요약되어 있습니다. 세부 정보를 검토하고 유효성 검사 및 마이그레이션 시작을 선택합니다.
유효성 검사 또는 마이그레이션 취소
진행 중인 유효성 검사 또는 마이그레이션을 취소할 수 있습니다. 워크플로를 취소하려면 진행 중 상태여야 합니다. 성공 또는 실패 상태에서는 유효성 검사 또는 마이그레이션을 취소할 수 없습니다.
유효성 검사를 취소하면 추가 유효성 검사 작업이 중지되고 유효성 검사가 취소됨 상태로 이동합니다.
마이그레이션을 취소하면 대상 서버에서 추가 마이그레이션 작업이 중지되고 취소됨 상태로 이동합니다. 대상 서버에서 변경 내용을 삭제하거나 롤백하지 않습니다. 취소된 마이그레이션과 관련된 대상 서버에서 데이터베이스를 삭제해야 합니다.
마이그레이션 모니터링
유효성 검사 및 마이그레이션 시작 단추를 선택하면 몇 초 안에 유효성 검사 또는 마이그레이션을 성공적으로 만들 수 있다는 알림이 표시됩니다. 유연한 서버의 마이그레이션 페이지로 자동으로 리디렉션됩니다. 항목에 진행 중인상태가 표시됩니다. 이 워크플로는 마이그레이션 인프라를 설정하고 네트워크 연결을 확인하는 데 2~3분이 걸립니다.
마이그레이션을 표시하는 표에는 이름, 상태, 마이그레이션 모드, 마이그레이션 유형, 원본 서버, 원본 서버 유형, 데이터베이스, 기간 및 시작 시간 열이 있습니다. 항목은 시작 시간을 기준으로 내림차순으로 정렬되고 맨 위에 가장 최근 항목이 표시됩니다. 도구 모음의 새로 고침 단추를 사용하여 유효성 검사 또는 마이그레이션 실행의 상태를 새로 고칠 수 있습니다.
마이그레이션 세부 정보
그리드에서 마이그레이션 이름을 선택하여 관련 세부 정보를 확인합니다.
이전 단계에서 이 마이그레이션을 만들 때 마이그레이션 옵션을 유효성 검사 및 마이그레이션으로 구성했습니다. 이 시나리오에서는 마이그레이션이 시작되기 전에 유효성 검사가 먼저 수행됩니다. 수행 필수 구성 요소 단계 하위 상태가 완료되면 워크플로가 진행 중인 유효성 검사의 하위 상태로 이동합니다.
유효성 검사에 오류가 있으면 마이그레이션이 실패 상태로 전환됩니다.
오류 없이 유효성 검사가 완료되면 마이그레이션이 시작되고 워크플로가 데이터 마이그레이션의 하위 상태로 이동합니다.
유효성 검사 세부 정보는 인스턴스 및 데이터베이스 수준에서 사용할 수 있습니다.
-
인스턴스에 대한 유효성 검사 세부 정보
- 연결 검사, 원본 버전, 즉 PostgreSQL 버전 >= 9.5 및 서버 매개 변수 검사와 관련된 유효성 검사, Azure Database for PostgreSQL 유연한 서버의 서버 매개 변수에서 확장을 사용할 수 있는지 여부를 포함합니다.
-
데이터베이스에 대한 유효성 검사 및 마이그레이션 세부 정보
- 여기에는 Azure Database for PostgreSQL 유연한 서버에서 확장 및 데이터 정렬 지원과 관련된 개별 데이터베이스의 유효성 검사가 포함됩니다.
마이그레이션 세부 정보 페이지에서 유효성 검사 상태 및 마이그레이션 상태를 볼 수 있습니다.
몇 가지 가능한 마이그레이션 상태:
마이그레이션 상태
| 상태 | Description |
|---|---|
| 진행 중 | 마이그레이션 인프라 설정이 진행 중이거나 실제 데이터 마이그레이션이 진행 중입니다. |
| 취소됨 | 마이그레이션이 취소되거나 삭제되었습니다. |
| 실패 | 마이그레이션에 실패했습니다. |
| 유효성 검사 실패 | 유효성 검사에 실패했습니다. |
| 성공함 | 마이그레이션이 성공했으며 완료되었습니다. |
| 사용자 작업 대기 중 | 컷오버를 수행하기 위한 사용자 작업을 기다리는 중입니다. |
마이그레이션 세부 정보
| 하위 상태 | Description |
|---|---|
| 사전 준비 단계 수행 | 데이터 마이그레이션을 위한 인프라 설정이 진행 중입니다. |
| 유효성 검사 진행 중 | 유효성 검사가 진행 중입니다. |
| 대상 데이터베이스 삭제 중 | 대상 서버에서 기존 데이터베이스를 삭제합니다. |
| 데이터 마이그레이션 | 데이터 마이그레이션이 진행 중입니다. |
| 마이그레이션 완료 | 마이그레이션이 최종 완료 단계에 있습니다. |
| 완료됨 | 마이그레이션이 완료되었습니다. |
| 실패 | 마이그레이션에 실패했습니다. |
유효성 검사 하위 상태
| 하위 상태 | Description |
|---|---|
| 실패 | 유효성 검사가 실패했습니다. |
| 성공함 | 유효성 검사가 성공했습니다. |
| 경고 | 유효성 검사가 경고 상태입니다. |
커트오버 시작
Azure Portal 또는 Azure CLI를 사용하여 전환을 시작할 수 있습니다.
유효성 검사 및 마이그레이션 옵션의 경우, 온라인 마이그레이션을 완료하기 위해서는 사용자가 전환 작업을 트리거하는 추가 단계를 완료해야 합니다. 기본 데이터의 복사 또는 복제가 완료되면, 마이그레이션이 Waiting for user action 상태와 Waiting for cutover trigger 하위 상태로 이동합니다. 이 상태에서 사용자는 포털에서 마이그레이션을 선택하여 커트오버를 시작할 수 있습니다.
컷오버를 시작하기 전에 다음을 확인해야 합니다.
- 원본에 대한 쓰기가 중지
latency됩니다. 값은 0이거나 0에 가깝습니다.latency정보는 아래와 같이 마이그레이션 세부 정보 화면에서 가져올 수 있습니다. -
latency값이 0으로 감소하거나 0에 가깝습니다. -
latency값은 대상이 원본과 마지막으로 동기화된 시간을 나타냅니다. 이 시점에서 원본에 대한 데이터 쓰기를 중지할 수 있으며, 전환을 시작할 수 있습니다. 원본에 트래픽이 많은 경우,latency를 0에 가깝게 만들기 위해 먼저 쓰기를 중지한 다음 절체를 시작하는 것이 좋습니다.
전환 작업은 원본 서버에서 대상 서버로 보류 중인 모든 변경 사항을 적용하여 마이그레이션을 완료합니다. 0 latency이 아닌 상황에서도 전환을 트리거하면, 그 시점까지 복제가 중지됩니다. 그러면 컷오버 지점이 대상에 적용될 때까지 원본의 모든 데이터가 적용됩니다. 중단 지점에서 15분의 대기 시간이 발생하는 경우 지난 15분 동안의 데이터에 대한 모든 변경 내용이 대상에 적용됩니다.
시간은 지난 15분 동안 발생한 변경 내용의 백로그에 따라 달라집니다. 따라서 중단을 트리거하기 전에 대기 시간이 0 또는 0에 가깝게 진행되는 것이 좋습니다.
-
Succeeded하위 상태 또는 전환(온라인 마이그레이션 중)이 성공적으로 완료되면 마이그레이션이Migrating data상태로 이동합니다.Migrating data하위 상태에 문제가 발생하면 마이그레이션은Failed상태로 이동합니다.
마이그레이션이 완료되면 확인합니다.
데이터베이스를 완료한 후에는 원본과 대상 간의 데이터의 유효성을 수동으로 검사하고 대상 데이터베이스의 모든 개체가 성공적으로 생성되었는지 확인해야 합니다.
마이그레이션 후에는 다음 작업을 수행할 수 있습니다.
유연한 서버에서 데이터를 확인하고 원본 인스턴스의 정확한 복사본인지 확인합니다.
검증 후 필요에 따라 유연한 서버에서 고가용성 옵션을 사용하도록 설정합니다.
애플리케이션 요구 사항에 맞게 유연한 서버의 SKU를 변경합니다. 이 변경 내용을 적용하려면 데이터베이스 서버를 다시 시작해야 합니다.
원본 인스턴스의 기본값에서 서버 매개 변수를 변경하는 경우 해당 서버 매개 변수 값을 유연한 서버에 복사합니다.
태그, 경고 및 방화벽 규칙(해당하는 경우)과 같은 다른 서버 설정을 원본 인스턴스에서 유연한 서버로 복사합니다.
연결 문자열을 유연한 서버로 가리키도록 애플리케이션을 변경합니다.
데이터베이스 성능을 면밀히 모니터링하여 성능 튜닝이 필요한지 확인합니다.