기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
3단계: 마이그레이션
데이터베이스 마이그레이션의 주요 작업은 가동 중지 시간을 최소화하면서 마이그레이션을 완료하는 것입니다. 두 데이터베이스 모두 동일한 프로그래밍 언어와 통신 프로토콜을 사용해야 하므로 유사한 쿼리 구문, 절차 및 함수에 대해 코드와 스키마를 변환해야 할 수 있습니다. 스키마를 변환할 때 다음 측면을 고려하세요.
-
새 엔진에 맞게 데이터베이스 연결을 수정합니다.
-
코드 변환의 경고 및 오류를 수정합니다.
-
변환된 스키마에 맞게 테이블 매핑 및 코드를 수정합니다.
-
애플리케이션이 사용하는 공급업체별 기능을 식별하고 리팩터링합니다.
SAP ASE 데이터베이스 및 Amazon RDS for SQL Server와 같은 스키마 코드 변환에 타사 마이그레이션 도구를 사용할 수 있습니다. SQL Server에서는 비ANSI SQL이 지원되지 않으므로 일부 코드를 수동으로 변환해야 할 수 있습니다.
코드를 변환한 후 애플리케이션 코드 또는 동적 SQL 애플리케이션을 변환한 다음 단위 및 기능 테스트를 수행합니다. 자세한 내용은 마이그레이션된 데이터베이스 객체 테스트(SybaseToSQL)를 참조하세요
데이터 변환
원시 데이터를 정리, 표준화, 확인 및 정렬하여 더 유용하도록 변환합니다. 데이터베이스 마이그레이션에서 추출, 변환 및 로드(ETL) 프로세스는 다음과 같은 방식으로 사용됩니다.
-
데이터베이스 내부
-
외부 스크립트 사용
-
타사 도구 사용
ETL 도구의 예로는 AWS Glue Informatica 및 Talend가 있습니다. SAP ASE에서 SQL Server로 마이그레이션하는 경우 일부 무료 도구는 저장된 프로시저와 함수를 자동으로 변환할 수 있습니다.
데이터베이스 객체 검증
데이터베이스를 검증하면 후속 마이그레이션 단계에서 문제를 방지하는 데 도움이 됩니다. 코드 변환 후 SAP ASE와 RDS SQL Server 간에 다음 요소를 비교하여 데이터베이스 스키마를 검증합니다.
-
스키마
-
테이블
-
뷰
-
함수
-
저장된 프로시저 인덱스
-
트리거
-
제약 조건(예: 기본 키, 외래 키, 검사 및 기본값)
각 객체가 올바르게 마이그레이션되었는지 확인합니다. 차이점이 발견되면 실패 이유를 식별합니다. 대상 데이터베이스에서 누락된 객체를 수동으로 생성하거나 Transact-SQL 코드를 변환해야 할 수 있습니다. 자세한 내용은 SAP ASE에서 Amazon RDS for SQL Server 또는 Microsoft SQL Server로 마이그레이션한 후 데이터베이스 객체 검증
를 사용하여 데이터 마이그레이션 AWS DMS
데이터베이스 사용자가 여러 명인 경우 일정에 따라 애플리케이션을 마이그레이션해야 할 수 있습니다. 데이터베이스 크기 및 마이그레이션 기간에 따라 이러한 데이터 마이그레이션에는 전체 로드 및 증분 로드에 대한 지식이 필요합니다. 이러한 이유로 AWS DMS 는 소스 데이터베이스와 대상 데이터베이스를 연결하여 다음 프로세스에 따라 데이터베이스 콘텐츠를 복제할 수 있습니다.
-
복제 서버를 생성합니다.
-
데이터 스토어 연결을 설명하는 소스 및 대상 엔드포인트를 생성합니다.
-
하나 이상의 마이그레이션 작업을 생성하여 소스 및 대상 데이터 스토어 간에 데이터를 마이그레이션합니다.
-
SAP ASE에서 SQL Server로 지속적 복제
-
(선택 사항) 변경 데이터 캡처를 사용하여 SAP ASE에서 SQL Server로 데이터 마이그레이션 완료
특정 데이터 유형을 AWS DMS 처리하도록 최적화해야 할 수 있습니다. 자세한 내용은 SAP ASE 데이터베이스를 소스로 사용을 참조하세요 AWS DMS.
오프라인 데이터 마이그레이션
AWS Storage Gateway 를 사용하여 SAP ASE 데이터베이스를 Amazon Simple Storage Service(Amazon S3)와 통합할 수 있습니다. Amazon Simple Storage Service는 온프레미스 SAP ASE 데이터베이스 백업을 위한 비용 효율적이고 확장 가능하며 안전한 스토리지를 제공합니다. 자세한 내용은 를 사용하여 SAP ASE 데이터베이스를 Amazon S3에 통합 AWS Storage Gateway
타사 도구 사용
일부 애플리케이션은 다른 애플리케이션과 인터페이스하는 단일 연락 지점(SPOC) 역할을 합니다. SQL Server 데이터베이스 플랫폼으로 마이그레이션할 때 이러한 상호 연결이 영향을 받을 수 있으며, 데이터베이스 모니터링에는 서버별 통신 프로토콜을 사용하는 네이티브 또는 타사 도구가 필요할 수 있습니다. 이러한 종속 애플리케이션 및 도구가 이미 SQL Server를 지원하는지 또는 제대로 작동하려면 수정이 필요한지 평가하는 것이 중요합니다.
패키징된 애플리케이션의 경우 공급업체에 문의하여 Amazon RDS for SQL Server를 지원하는지 확인하세요. 사용자 지정 애플리케이션의 경우 마이그레이션된 데이터베이스와의 호환성을 보장하기 위해 코드를 수정해야 할 수 있습니다.
데이터베이스 모니터링
선택한 마이그레이션 경로에 관계없이 Amazon CloudWatch는 CPU 유형, 메모리 및 I/O 함수와 같은 지표를 수집하는 역할을 합니다. 또한 지표 임계값을 설정하고 임계값이 트리거될 때 작업을 시작할 수 있습니다.
예를 들어 Amazon RDS 클러스터 지표, 알림 및 작업에 대한 경보를 생성하여 미사용 또는 사용률이 낮은 리더 인스턴스를 감지하고 종료할 수 있습니다. 지표 및 이벤트에 대한 경보를 설정하면 Amazon S3, Amazon RDS 성능 개선 도우미, Amazon
데이터 검증
SAP ASE에서 Amazon RDS for SQL Server로 데이터 마이그레이션이 완료되면 데이터를 검증하여 정확성과 일관성을 보장합니다. 다음 SQL 쿼리를 사용하여 데이터베이스의 각 테이블에 대한 메타데이터 문을 생성합니다.
1단계: 메타데이터 문 및 열 목록 생성
SELECT dt.schema_name, dt.table_name, STRING_AGG(dt.column_name, ',') AS column_name, STRING_AGG(dt.cname, ',') AS column_order FROM ( SELECT object_name(a.id) AS table_name, a.name colname, c.name col_type, a.isnullable, a.name AS cname, schema_name(b.uid) AS schema_name, CASE WHEN a.isnullable = 1 THEN CASE WHEN c.name LIKE '%char%' THEN 'coalesce(ltrim(rtrim('+a.name+')),''X'') as '+a.name WHEN (c.name LIKE '%int%' OR c.name = 'numeric') THEN 'coalesce('+a.name+',0) as '+a.name WHEN c.name IN ('decimal','float','money') THEN 'coalesce('+a.name+',0.0) as '+a.name WHEN c.name LIKE 'datetime%' THEN 'coalesce(convert(nvarchar(30),'+a.name+',112),''99991231'') as '+a.name ELSE a.name END WHEN c.name LIKE 'datetime%' THEN 'coalesce(convert(nvarchar(30),'+a.name+',112),''99991231'') as '+a.name WHEN c.name LIKE '%char%' THEN 'coalesce(ltrim(rtrim('+a.name+')),''X'') as '+a.name ELSE a.name END AS column_name FROM syscolumns a INNER JOIN sysobjects b ON a.id = b.id AND b.type = 'U' INNER JOIN systypes c ON a.usertype = c.usertype AND a.xusertype = c.xusertype AND c.name != 'varbinary' INNER JOIN ( SELECT OBJECT_NAME(ic.OBJECT_ID) AS table_name, COL_NAME(ic.OBJECT_ID, ic.column_id) AS column_name FROM sys.indexes AS i INNER JOIN sys.index_columns AS ic ON i.OBJECT_ID = ic.OBJECT_ID AND i.index_id = ic.index_id AND i.is_primary_key = 1 ) pk ON pk.table_name = object_name(a.id) AND pk.column_name = a.name ) dt GROUP BY dt.schema_name, dt.table_name;
다음 표에는 출력의 예가 나열되어 있습니다.
스키마 이름 |
테이블 이름 |
열 이름 |
열 순서 |
|---|---|---|---|
Person |
주소 |
AddressID |
AddressID |
Person |
AddressType |
AddressTypeID |
AddressTypeID |
Person |
BusinessEntity |
BusinessEntityID |
BusinessEntityID |
Person |
BusinessEntityAddress |
BusinessEntityID, AddressID, AddressTypeID |
BusinessEntityID, AddressID, AddressTypeID |
2단계: 메타데이터 결과를 사용하여 비교 쿼리 생성 및 SELECT 문 생성
SELECT <column_name> FROM [schema_name].[table_name] ORDER BY <column_order>;
다음은 생성된 쿼리의 예입니다.
SELECT BusinessEntityID, AddressID, AddressTypeID FROM [Person].[BusinessEntityAddress] ORDER BY BusinessEntityID, AddressID, AddressTypeID;
3단계: 검증
-
두 데이터베이스 모두에서 메타데이터 쿼리를 실행합니다.
-
각 테이블에 대한
SELECT문을 생성하고 실행합니다. -
소스 데이터베이스와 대상 데이터베이스 간의 결과를 비교합니다.
-
행 수가 일치해야 합니다.
-
데이터 값은 동일해야 합니다.
-
데이터 유형 변환 문제를 확인합니다.
-
4단계: 행 수 검증
SELECT COUNT(1) AS total_rows FROM [schema_name].[table_name];
5단계: 새 데이터베이스를 가리키도록 애플리케이션 구성 업데이트
-
보안 그룹을 업데이트하십시오.
-
필요에 따라 DNS 연결 문자열을 수정하여 대상 데이터베이스에 연결합니다.
마이그레이션 테스트
테스트 프로세스는 잘못 변환된 쿼리 또는 누락된 인덱스와 같이 개발 중에 간과되는 문제를 식별하는 데 도움이 될 수 있습니다. 또한 워크로드 성능에 따라 데이터베이스 엔진 튜닝 또는 쿼리 수정이 필요할 수 있습니다.
애플리케이션 워크플로에 대한 단위 테스트를 포함하는 기능 테스트는 새 데이터베이스와의 원활한 통합을 보장하는 데 도움이 됩니다. 성능 테스트는 허용 가능한 응답 시간을 확인하고 병목 현상을 식별하여 데이터베이스를 최적화하는 데 도움이 됩니다.
수동 및 자동 테스트 방법이 모두 존재하지만, 특히 추가 테스트 주기에 더 효율적이기 때문에 자동화된 방법을 사용하는 것이 좋습니다.