Oracle에서 Azure Database for PostgreSQL로 마이그레이션 단계
Oracle에서 Azure Postgres로 포괄적인 엔드투엔드 마이그레이션을 수행하려면 몇 가지 주요 단계와 마이그레이션 단계를 신중하게 수행해야 합니다. 이러한 중요 시점은 모두 긴밀하게 관련되어 있으며 완전하고 성공적인 마이그레이션에 필수적입니다.
발견(Discovery)
대부분의 고객은 이미 Oracle 데이터베이스 인스턴스의 수량 및 위치(특히 관련 라이선스 비용)에 대해 잘 알고 있습니다. 그러나 완전성을 위해 이 단계를 마이그레이션의 중요한 시작점으로 강조하고 있습니다. 검색 단계는 마이그레이션 작업의 적절한 범위를 결정하는 데 이상적인 단계입니다. 마이그레이션하는 데 수십, 수백 또는 수천 개의 데이터베이스가 필요한 Oracle 데이터베이스 서버 "팜" 환경이 있나요? "마이그레이션 팩터리" 접근 방식에 따라 대규모 마이그레이션을 고려하고 있나요? 대신 사용자 환경이 마이그레이션 목록의 다음 데이터베이스로 이동하기 전에 연결된 모든 클라이언트의 병렬 현대화와 함께 단일 데이터베이스의 엔드 투 엔드 마이그레이션에 더 적합합니까? 두 경우 모두 최신 및 철저한 인벤토리는 중요한 필수 구성 요소이며 검색 단계를 통해 성공을 준비할 수 있습니다.
평가
평가는 고유한 특성에 의해 개별적으로 정의된 다양한 유형의 예측 기반 예비 작업을 캡슐화합니다. 일부 평가는 데이터베이스 개체 마이그레이션과 관련된 노력 및 리소스의 복잡성을 예측하고 분류하도록 설계되었으며, 주제 전문가의 주의가 필요한 개체 수(잠재적으로 코드 줄 수를 탐색하는 것)와 같은 요인에 따라 수행됩니다. 또는 다른 유형의 평가에서는 기본 데이터의 구조와 크기를 살펴보고 데이터를 대상 환경으로 완전히 마이그레이션하는 데 필요한 시간에 대한 지침을 제공합니다. 하지만 대상 Azure Postgres 리소스의 크기를 적절하게 조정하여 데이터를 서비스하는 데 필요한 컴퓨팅, 메모리, IOPS 및 네트워크 구성을 수용하도록 또 다른 평가 유형이 구성됩니다. 마이그레이션 성공을 보장하기 위해 포함해야 하는 가장 중요한 평가 중 하나는 연결된 모든 클라이언트와 모든 종속 애플리케이션으로 구성된 범위에 대한 철저한 검토 및 고려입니다. 요약하자면, 마이그레이션 평가를 준비할 때 다음을 포함하여 데이터베이스 마이그레이션의 모든 측면을 평가하고 있는지 확인합니다.
- 데이터베이스 스키마/코드 변환 수량 및 복잡성
- 데이터베이스 크기 및 크기 조정
- 데이터베이스 리소스 운영 요구 사항
- 클라이언트 애플리케이션 코드 마이그레이션
평가 정확도는 후속 마이그레이션 단계의 실행 및 완료와 관련된 특정 기본 도구 및 서비스 플랫폼과 밀접하게 연결됩니다. 따라서 이러한 평가 예측의 정확도에 영향을 미칠 수 있는 몇 가지 요인이 있으며 보고된 결과는 마이그레이션 평가에 사용된 기본 도구와 직접 상관 관계가 있다는 점을 고려해야 합니다. 평가 출력을 검토하고 마이그레이션 계획에 통합할 때 다른 도구 또는 결합된 도구의 예상 출력을 보간하지 않도록 주의해야 합니다.
자세한 내용은 Oracle에서 Azure Postgres로 마이그레이션 플레이북을 참조 하세요.
데이터베이스 스키마 마이그레이션
구조적 데이터 정의는 트랜잭션 데이터베이스 엔진의 특징 중 하나이며 잘 설계된 데이터 플랫폼의 필수 기반입니다. 고유한 Oracle 데이터 구조 및 데이터 형식 정의가 Azure Postgres 내의 해당 테이블에 제대로 매핑되도록 하는 것은 마이그레이션의 전반적인 성공에 중요한 요구 사항입니다. 모든 트랜잭션 데이터베이스는 많은 유사점을 공유하지만 데이터 테이블 및 열 데이터 형식의 차이점이 존재하며 데이터 정의가 일치하지 않아 데이터가 실수로 손실되거나 잘리거나 끊어지지 않도록 주의해야 합니다. 숫자 데이터 형식, 날짜/시간 데이터 형식 및 텍스트 기반 데이터 형식은 마이그레이션에 대한 해당 데이터 매핑을 개발할 때 면밀히 검토해야 하는 영역의 몇 가지 예일 뿐입니다.
Oracle과 Postgres 데이터 형식 간의 차이점에 대한 추가 정보 및 예제는 Oracle에서 Azure Postgres 마이그레이션 플레이북을 참조 하세요.
데이터베이스 코드 마이그레이션
데이터베이스 코드 마이그레이션은 원래 기능과 기존 성능 특성을 모두 유지하면서 Oracle이 Postgres 데이터베이스 엔진과 호환되도록 작성된 데이터베이스 코드를 변환하는 프로세스를 나타냅니다. 이 프로세스에서는 Oracle PL/SQL 쿼리, 저장 프로시저, 함수, 트리거 및 기타 데이터베이스 개체를 규격 Postgres PL/pgSQL로 변환해야 합니다. 다행히 Oracle의 PL/SQL 및 Postgres의 PL/pgSQL 절차 언어 언어 언어는 많은 유사점을 공유하며, 이는 일반적으로 많은 조직에서 Oracle 데이터베이스 마이그레이션에 가장 적합한 Postgres를 선택할 때 식별하는 초기 요소입니다. 그러나 고려해야 할 두 데이터베이스 언어 간에는 몇 가지 고유한 차이점과 차이점이 있습니다. 주의할 영역은 데이터베이스별 키워드 및 구문, 예외 처리, 기본 제공 함수, 데이터 형식 및 시퀀스 증분입니다.
대부분의 경우 Postgres 확장 에코시스템은 코드 마이그레이션 프로세스를 간소화하는 데 도움이 되는 강력한 동맹국이 될 수 있습니다. 예를 들어 확장 "Oracle Functions for PostgreSQL"(orafce)은 이러한 Oracle 함수를 사용하고 참조하는 코드베이스의 일부를 다시 작성할 필요성을 줄일 수 있는 기본 제공 Oracle 호환성 함수 및 패키지 집합을 제공합니다. Oracle 코드를 PostgreSQL로 마이그레이션하는 동안 이 호환성 기반 접근 방식을 사용하면 원본 데이터베이스 정의의 원래 논리와 기능을 유지 관리하여 마이그레이션 프로세스의 복잡성, 시간 및 비용을 줄이고 결과의 일관성을 보장하며 개발자 생산성을 향상시키는 측면에서 상당한 이점을 얻을 수 있습니다. 이러한 모든 이점은 PostgreSQL로의 간소화되고 효율적인 코드 마이그레이션에 추가됩니다.
Oracle과 Postgres 기본 제공 함수와 논리 연산자 간의 차이점에 대한 추가 정보 및 예제는 Oracle에서 Azure Postgres 마이그레이션 플레이북으로의 차이점을 참조 하세요.
데이터 마이그레이션
오늘날의 데이터 기반 환경에서 데이터는 틀림없이 가장 중요한 자산입니다. 데이터 리소스는 정보에 입각한 비즈니스 운영 및 전략적 의사 결정의 모든 측면에 점점 더 많은 영향을 미칩니다. 따라서 데이터 마이그레이션 파이프라인이 효율적이고 신속하게 작동하고, 완전히 일관되고 검증 가능하며, 궁극적으로 성공적으로 완료되는 것이 특히 중요합니다.
사용자 환경에 "오프라인" 또는 "라이브" 접근 방식을 적용할 수 있는지 여부를 결정하기 위해 데이터 마이그레이션 전략을 신중하게 고려해야 합니다. 각 데이터 마이그레이션 전략에는 고유한 이점과 고려 사항이 혼합되어 있으며, "오프라인" 작업과 "라이브" 작업 중에서 선택하는 것은 환경의 특정 요구 사항 및 제약 조건에 따라 달라집니다. 예를 들어 "오프라인" 마이그레이션은 "라이브" 마이그레이션보다 더 간단하고 덜 복잡할 수 있지만, "오프라인" 마이그레이션에는 데이터를 대상 데이터베이스로 완전히 마이그레이션하는 데 필요한 기간 동안 가동 중지 시간이 포함됩니다. "라이브" 마이그레이션은 가동 중지 시간을 최소화하거나 사용하지 않습니다. 그러나 초기 백필 데이터 로드 및 데이터 마이그레이션 시작 이후 발생할 수 있는 변경 내용의 후속 데이터 동기화를 감독하는 복잡성과 인프라가 더 많이 포함됩니다. 신중한 계획, 비즈니스 요구 사항의 철저한 평가 및 팀의 특정 중요 요소를 고려하면 데이터 마이그레이션 요구 사항에 완벽하게 부합하는 정보에 입각한 결정을 내릴 수 있습니다.
애플리케이션 코드 마이그레이션
외부 애플리케이션은 기술적으로 데이터베이스 팀 마이그레이션 책임의 도메인 외부에서 고려될 수 있지만, 클라이언트 애플리케이션에 대한 데이터베이스 연결을 업데이트하고 현대화하는 것은 데이터베이스 마이그레이션 과정의 전반적인 성공에 대한 필수적이고 긴밀하게 상호 관련된 단계입니다. 마이그레이션의 다른 단계와 마찬가지로 클라이언트 애플리케이션 플랫폼 호환성 수정과 관련된 관련 노력과 복잡성은 환경의 고유한 상황에 따라 달라집니다. 클라이언트 애플리케이션이 타사에서 개발되었나요? 그렇다면 해당 소프트웨어 제품이 Postgres 데이터베이스 플랫폼을 지원하도록 인증되었는지 확인하는 것이 중요합니다. 사내 애플리케이션이 Hibernate 또는 Entity Framework와 같은 개체 관계형 매핑 기술을 사용하고 있나요? 경우에 따라 작은 구성 또는 파일 변경이 필요할 수 있습니다. 반대로 코드에 포함된 많은 양의 데이터베이스 쿼리 및 문이 있는 경우 코드 변경 내용을 적절하게 검토, 수정 및 유효성을 검사하는 데 더 많은 시간을 할당해야 할 수 있습니다.
또는 레거시 클라이언트 데이터베이스 작업을 실시간으로 변환할 수 있는 새로운 방법을 제공하는 파트너 솔루션 공급자가 있습니다. 이러한 프록시 서비스는 데이터베이스 계층에 대한 추상화를 제공하여 애플리케이션을 데이터베이스별 언어 종속성에서 효과적으로 분리합니다.
대부분의 경우 결정은 각 강점과 결합된 기능에 대해 총체적으로 채택된 여러 전략과 하이브리드 접근 방식의 조합을 통합할 수 있습니다. 실시간 데이터베이스 변환 계층을 배포하면 팀이 클라이언트 애플리케이션을 신속하게 다시 배포하는 동시에 소프트웨어 엔지니어와 개발자에게 적절한 시간과 리소스 계획을 제공하여 Postgres 네이티브 작업을 지원하기 위해 데이터베이스별 종속성을 리팩터링할 수 있습니다.
Important
이러한 각 선택 항목에는 고유한 특정 고려 사항 및 혜택 집합이 수반되며 팀이 이러한 각 접근 방식을 신중하게 검토하여 이상적인 전략적 경로를 결정하는 것이 중요합니다.
마이그레이션 유효성 검사
Oracle에서 PostgreSQL로 마이그레이션할 때 데이터 무결성 및 논리적 일관성이 모두 가장 중요합니다. 마이그레이션 유효성 검사는 원본 Oracle 데이터베이스에서 전송된 데이터가 대상 PostgreSQL 시스템에서 정확하고 완료되었는지 확인하는 것을 포함하므로 이 프로세스에서 중요한 역할을 합니다. 이 단계는 데이터의 신뢰성을 유지하는 것뿐만 아니라 마이그레이션 프로세스에 오류 또는 불일치가 발생하지 않았는지 확인하는 데 필수적입니다. 유효성 검사에는 테이블 개수 비교, 데이터 형식 및 구조 확인, 행 수준 열 값 비교, 복잡한 쿼리가 두 데이터베이스에서 일관된 결과를 생성하는지 확인하는 것이 포함될 수 있습니다. 또한 날짜 및 시간 형식의 변형, 문자 인코딩 및 null 값 처리와 같은 두 데이터베이스 시스템이 데이터를 관리하는 방식의 차이를 처리하는 동안 특별한 주의를 기울여야 합니다.
일반적으로 두 데이터베이스의 데이터 세트를 비교하고 변칙을 강조 표시할 수 있는 자동화된 유효성 검사 스크립트를 설정하는 작업이 포함됩니다. 데이터 비교를 위해 설계된 도구와 프레임워크를 활용하여 이 프로세스를 간소화할 수 있습니다. 마이그레이션 후 유효성 검사는 마이그레이션의 다양한 단계에서 여러 검사를 수행하여 문제를 조기에 파악하고 데이터 손상 위험을 최소화하는 반복적인 프로세스여야 합니다. 조직에서는 데이터 유효성 검사의 우선 순위를 지정하여 데이터가 안정적이고 실행 가능한 상태로 유지된다는 것을 알고 Oracle에서 PostgreSQL로 자신 있게 전환할 수 있습니다.
성능 튜닝
성능은 일반적으로 플랫폼의 인식과 유용성을 결정하는 가장 가시적이고 중요한 특성 중 하나로 간주됩니다. 마이그레이션이 정확하고 성능이 좋은지 확인하는 것이 성공을 달성하는 데 가장 중요하며 간과할 수 없습니다. 더 구체적으로 말하면, 쿼리 성능은 최적 데이터베이스 구성의 가장 중요한 지표로 간주되며, 일반적으로 사용자 환경의 상태를 확인하기 위한 리트머스 테스트로 사용됩니다.
다행히 Azure 플랫폼은 기본적으로 규모, 효율성 및 가장 중요한 속도 등 다양한 메트릭에서 성능 지점을 모니터링하는 데 필요한 도구와 기능을 통합합니다. 이러한 지능형 성능 기능은 Postgres 모니터링 리소스와 함께 작동하여 튜닝 프로세스를 간소화하고, 대부분의 경우 이러한 단계를 자동화하여 필요에 따라 자동으로 조정 및 조정합니다. 다음 Azure 도구는 데이터베이스 시스템이 최상의 수준에서 작동하도록 보장할 수 있습니다.
쿼리 저장소
Azure Postgres에 대한 쿼리 저장소 모니터링 기능의 기초 역할을 합니다. 쿼리 저장소 쿼리, 관련 설명 계획, 리소스 사용률 및 워크로드 타이밍을 포함하여 Postgres 데이터베이스의 통계 및 운영 메트릭을 추적합니다. 이러한 데이터 요소는 장기 실행 쿼리, 가장 많은 리소스를 사용하는 쿼리, 가장 자주 실행되는 쿼리, 과도한 테이블 bloat 및 데이터베이스의 더 많은 운영 패싯을 발견할 수 있습니다. 이 정보를 사용하면 주의가 필요한 작업 또는 영역을 신속하게 식별하여 문제 해결에 소요되는 시간을 단축할 수 있습니다. 쿼리 저장소 다음을 식별하여 전체 워크로드 성능에 대한 포괄적인 보기를 제공합니다.
- 장기 실행 쿼리 및 시간이 지남에 따라 어떻게 변경되는지.
- 이러한 쿼리에 영향을 주는 대기 유형입니다.
- 호출(실행 횟수), 데이터 사용량별, IOPS 및 임시 파일 사용량별 상위 데이터베이스 쿼리에 대한 세부 정보(성능 향상을 위한 잠재적 튜닝 후보).
- 쿼리의 세부 정보를 드릴다운하여 쿼리 ID 및 리소스 사용률 기록을 확인합니다.
- 전반적인 데이터베이스 리소스 사용량에 대한 심층 인사이트
인덱스 튜닝
인덱스 튜닝은 추적된 쿼리를 분석하고 인덱스 권장 사항을 제공하여 워크로드 성능을 자동으로 향상시킬 수 있는 Azure Database for PostgreSQL 유연한 서버의 기능입니다. 기본적으로 Azure Database for PostgreSQL 유연한 서버에 기본 제공되며 쿼리 저장소 기능을 기반으로 합니다. 인덱스 튜닝은 쿼리 저장소 의해 추적되는 워크로드를 분석하고 인덱스 권장 사항을 생성하여 분석된 워크로드의 성능을 향상시키거나 중복되거나 사용되지 않는 인덱스를 삭제합니다. 이 작업은 다음과 같은 세 가지 고유한 방법으로 수행됩니다.
- 인덱스 튜닝 세션 중에 분석된 쿼리를 크게 향상시킬 수 있으므로 만드는 데 유용한 인덱스를 식별합니다.
- 정확히 중복되고 제거할 수 있는 인덱스를 식별하여 존재 및 유지 관리가 시스템의 전반적인 성능에 미치는 성능 영향을 줄입니다.
- 제거할 후보가 될 수 있는 구성 가능한 기간 사용되지 않는 인덱스를 식별합니다.
지능형 튜닝
지능형 튜닝은 워크로드의 특성에 대해 알아볼 뿐만 아니라 CPU 또는 IOPS와 같은 현재 부하 및 리소스 사용량을 추적하는 지속적인 모니터링 및 분석 프로세스입니다. 애플리케이션 워크로드의 정상적인 작동을 방해하지 않습니다. 이 프로세스를 통해 데이터베이스는 인스턴스의 현재 블로트 비율, 쓰기 성능 및 검사점 효율성을 식별하여 워크로드에 동적으로 조정할 수 있습니다. 이러한 인사이트를 통해 지능형 튜닝은 워크로드의 성능을 향상시키고 잠재적인 문제를 방지하는 튜닝 작업을 배포합니다. 이 함수는 두 가지 자동 튜닝 함수로 구성됩니다.
- 자동 진공 튜닝: 이 함수는 블로트 비율을 추적하고 그에 따라 자동 진공 설정을 튜닝합니다. 워크로드 중단을 방지하기 위해 현재 및 예상 리소스 사용량을 모두 고려합니다.
- 쓰기 튜닝: 이 함수는 쓰기 작업의 양과 패턴을 모니터링하고 쓰기 성능에 영향을 미치는 매개 변수를 수정합니다. 이러한 조정은 시스템 성능과 안정성을 모두 향상시켜 잠재적인 문제를 적극적으로 방지합니다.
팁
지능형 성능을 적용하여 Azure Postgres 플랫폼을 최대화하는 방법에 대해 자세히 알아봅니다.
클라우드 최적화
새 Azure Postgres 데이터베이스 환경의 최적화는 팀이 이 핵심 지점에 도달하도록 이끈 모든 놀라운 노력과 노력의 절정을 의미합니다. 클라우드 최적화는 특히 온-프레미스 또는 레거시 데이터베이스 환경에서 제공되는 경우 새로운 책임이 될 수 있습니다. Azure 클라우드 플랫폼은 귀중하고 최첨단 확장성 기능의 새롭고 향상된 집합을 도입하여 팀이 현재와 미래의 조직의 요구에 맞게 리소스, 기능 및 비용 효율성의 정확한 할당을 "전화 접속"할 수 있도록 합니다. 클라우드 최적화는 비용 최적화, 운영 우수성, 성능 효율성, 안정성 및 보안과 같은 Microsoft 잘 설계된 프레임워크와 관련된 모범 사례의 렌즈를 통해 볼 수 있는 사용자 환경에 대한 지속적인 개선 프로세스입니다.
비용 최적화 는 리소스의 올바른 크기 조정, 비용 관리 전략 적용 및 효율적인 리소스 사용률의 조합입니다.
운영 우수성 에는 배포, 모니터링 및 크기 조정을 위한 자동화 채택이 포함되며 효율성을 높이면서 오류를 줄입니다.
성능 효율성 은 과잉 프로비저닝 없이 요구 사항을 충족하는 적절한 리소스를 선택하는 동시에 최대 작동 기간 동안 다양한 부하를 효율적으로 처리하기 위한 확장성에 대한 모범 사례를 적용하도록 보장합니다.
안정성 은 가동 중지 시간을 최소화하기 위한 중복성 및 장애 조치(failover) 메커니즘이 있는 고가용성 및 내결함성 시스템을 설계하고 백업 및 복원 절차를 비롯한 강력한 복구 계획을 구현하기 위한 재해 복구 전략을 안내합니다.
보안 은 최소 권한 액세스, 암호 없는 인증 및 역할 기반 액세스 제어와 같은 강력한 ID 프로토콜 및 액세스 관리 방법의 중요성을 강조합니다. 데이터 보호 및 암호화를 통해 중요한 데이터는 미사용 데이터와 전송 중에 모두 보호됩니다. 보안에는 위협 탐지를 위한 도구 및 모범 사례와 보안 인시던트 즉시 해결을 위한 자동화된 응답도 포함됩니다. 규정 준수는 환경이 업계 표준 및 규정을 준수하도록 보장합니다.
클라우드 최적화 구현 지침 및 기본 사항의 5가지 핵심 요소에 대한 자세한 내용은 Azure WAF(Well-Architected Framework) 센터를 방문하세요.
이러한 핵심 요소를 Azure Postgres 배포에 맞게 조정하려면 Azure 잘 설계된 PostgreSQL 프레임워크 서비스 가이드를 검토하세요.