Babelfish를 AWS Database Migration Service 대상으로 사용 - AWS 데이터베이스 마이그레이션 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Babelfish를 AWS Database Migration Service 대상으로 사용

AWS Database Migration Service를 사용하여 Microsoft SQL Server 소스 데이터베이스의 데이터를 Babelfish 대상으로 마이그레이션할 수 있습니다.

Babelfish for Aurora PostgreSQL은 Microsoft SQL Server 클라이언트에서 데이터베이스 연결을 수락할 수 있는 기능을 사용하여 Amazon Aurora PostgreSQL 호환 버전 데이터베이스를 확장합니다. 이렇게 하면 원래 SQL Server용으로 구축된 애플리케이션이 기존 마이그레이션에 비해 거의 코드 변경 없이, 또 데이터베이스 드라이버 변경 없이 Aurora PostgreSQL에서 직접 작동할 수 있습니다.

AWS DMS가 대상으로 지원하는 Babelfish 버전에 대한 자세한 내용은 대상 AWS DMS 섹션을 참조하세요. Aurora PostgreSQL의 이전 Babelfish 버전은 Babelfish 엔드포인트를 사용하기 전에 업그레이드가 필요합니다.

참고

Aurora PostgreSQL 대상 엔드포인트는 데이터를 Babelfish로 마이그레이션하는 데 선호되는 방법입니다. 자세한 내용은 대상으로 Babelfish for Aurora PostgreSQL 사용 섹션을 참조하세요.

Babelfish를 데이터베이스 엔드포인트로 사용하는 방법에 대한 자세한 내용은 Aurora용 Amazon Aurora 사용 설명서에서 Babelfish for Aurora PostgreSQL을 참조하세요.

Babelfish를 AWS DMS 대상으로 사용하기 위한 사전 요구 사항

데이터를 마이그레이션하기 전에 테이블을 생성하여 AWS DMS가 올바른 데이터 유형과 테이블 메타데이터를 사용하도록 해야 합니다. 마이그레이션을 실행하기 전에 대상에 테이블을 생성하지 않으면 AWS DMS는 잘못된 데이터 유형 및 권한으로 테이블을 생성할 수 있습니다. 예를 들어 AWS DMS는 타임스탬프 열을 바이너리(8)로 대신 생성하고, 예상 타임스탬프/행 버전 기능을 제공하지 않습니다.

마이그레이션 전에 테이블을 준비하고 생성하려면
  1. 고유한 제약 조건, 프라이머리 키 또는 기본 제약 조건을 포함하는 create table DDL 문을 실행합니다.

    뷰, 저장 프로시저, 함수 또는 트리거 같은 객체에 대한 DDL 문이나 외래 키 제약 조건을 포함하지 마세요. 이들은 소스 데이터베이스를 마이그레이션한 후에 적용할 수 있습니다.

  2. 테이블의 ID 열, 계산된 열 또는 행 버전이나 타임스탬프 데이터 형식이 포함된 열을 식별합니다. 그런 다음 마이그레이션 작업을 실행할 때 알려진 문제를 처리하는 데 필요한 변환 규칙을 생성합니다. 자세한 내용은 변환 규칙 및 작업 단원을 참조하십시오.

  3. Babelfish가 지원하지 않는 데이터 형식의 열을 식별합니다. 그런 다음 지원되는 데이터 형식을 사용하도록 대상 테이블의 영향을 받는 열을 변경하거나, 마이그레이션 작업 중에 해당 열을 제거하는 변환 규칙을 생성합니다. 자세한 내용은 변환 규칙 및 작업 단원을 참조하십시오.

    다음 표에는 Babelfish에서 지원하지 않는 소스 데이터 형식과 사용할 해당 권장 대상 데이터 형식이 나열되어 있습니다.

    소스 데이터 유형

    권장 Babelfish 데이터 형식

    HEIRARCHYID

    NVARCHAR(250)

    GEOMETRY

    VARCHAR(MAX)

    GEOGRAPHY

    VARCHAR(MAX)

Aurora PostgreSQL Serverless V2 소스 데이터베이스의 Aurora 용량 단위(ACU) 수준을 설정하려면

최소 ACU 값을 설정하여 AWS DMS 마이그레이션 작업을 실행하기 전에 성능을 개선할 수 있습니다.

AWS DMS 마이그레이션 작업을 실행한 후 Aurora PostgreSQL Serverless V2 소스 데이터베이스에 적합한 수준으로 ACU의 최소값을 재설정할 수 있습니다.

Babelfish를 AWS Database Migration Service 대상으로 사용 시 보안 요구 사항

다음은 Babelfish를 대상으로 하여 AWS DMS를 사용할 경우의 보안 요구 사항에 대한 설명입니다.

  • 데이터베이스를 생성하는 데 사용된 관리자 사용자 이름(관리자 사용자).

  • 충분한 SELECT, INSERT, UPDATE, REFERENCES, REFERENCES 권한을 가진 PSQL 로그인 및 사용자.

Babelfish를 AWS DMS 대상으로 사용하기 위한 사용자 권한

중요

보안을 위해 데이터 마이그레이션에 사용되는 사용자 계정은 대상으로 사용하는 모든 Babelfish 데이터베이스에서 등록된 사용자여야 합니다.

Babelfish 대상 엔드포인트에는 AWS DMS 마이그레이션을 실행하기 위한 최소 사용자 권한이 필요합니다.

로그인 및 권한이 낮은 Transact-SQL(T-SQL) 사용자를 생성하려면
  1. 서버에 연결할 때 사용할 로그인과 암호를 생성합니다.

    CREATE LOGIN dms_user WITH PASSWORD = 'password'; GO
  2. Babelfish 클러스터의 가상 데이터베이스를 생성합니다.

    CREATE DATABASE my_database; GO
  3. 대상 데이터베이스의 T-SQL 사용자를 생성합니다.

    USE my_database GO CREATE USER dms_user FOR LOGIN dms_user; GO
  4. Babelfish 데이터베이스의 각 테이블에 권한을 부여합니다.

    GRANT SELECT, DELETE, INSERT, REFERENCES, UPDATE ON [dbo].[Categories] TO dms_user;

Babelfish를 AWS Database Migration Service 대상으로 사용 시 제한 사항

다음 제한 사항은 Babelfish 데이터베이스를 AWS DMS 대상으로 사용할 때 적용됩니다.

  • 테이블 준비 모드 “Do Nothing“만 지원됩니다.

  • ROWVERSION 데이터 형식에는 마이그레이션 작업 중에 테이블에서 열 이름을 제거하는 테이블 매핑 규칙이 필요합니다.

  • sql_variant 데이터 형식은 지원되지 않습니다.

  • 전체 LOB 모드가 지원됩니다. SQL Server를 소스 엔드포인트로 사용하려면 SQL Server 엔드포인트 연결 속성 설정 ForceFullLob=True을 설정해야 LOB를 대상 엔드포인트로 마이그레이션할 수 있습니다.

  • 복제 작업 설정에는 다음과 같은 제한 사항이 있습니다.

    { "FullLoadSettings": { "TargetTablePrepMode": "DO_NOTHING", "CreatePkAfterFullLoad": false, }. }
  • Babelfish의 TIME(7), DATETIME2(7), DATETIMEOFFSET(7) 데이터 형식은 시간의 초 부분 정밀도를 6자리로 제한합니다. 이러한 데이터 형식을 사용할 때는 대상 테이블에 정밀도 값 6을 사용하는 것이 좋습니다. Babelfish 버전 2.2.0 이상에서 TIME(7) 및 DATETIME2(7)를 사용할 경우, 정밀도의 일곱 번째 자리는 항상 0입니다.

  • DO_NOTHING 모드에서 DMS는 테이블이 이미 존재하는지 확인합니다. 대상 스키마에 테이블이 없으면 DMS는 소스 테이블 정의를 기반으로 테이블을 생성하고, 사용자 정의 데이터 형식을 기본 데이터 형식에 매핑합니다.

  • Babelfish 대상으로의 AWS DMS 마이그레이션 작업은 ROWVERSION 또는 TIMESTAMP 데이터 형식을 사용하는 열이 있는 테이블을 지원하지 않습니다. 전송 프로세스 중에 테이블에서 열 이름을 제거하는 테이블 매핑 규칙을 사용할 수 있습니다. 다음 변환 규칙 예제에서 소스에 있는 Actor라는 테이블이 변환되어 대상의 Actor 테이블에서 col 문자로 시작하는 모든 열을 제거합니다.

    { "rules": [{ "rule-type": "selection",is "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "remove-column", "rule-target": "column", "object-locator": { "schema-name": "test", "table-name": "Actor", "column-name": "col%" } }] }
  • 대상 테이블이 Categories처럼 대소문자가 혼용된 이름을 사용하는 ID 열 또는 계산된 열이 있는 테이블의 경우, DMS 작업을 위해 테이블 이름을 소문자로 변환하는 변환 규칙 작업을 생성해야 합니다. 다음 예제는 AWS DMS 콘솔을 사용하여 Make lowercase 변환 규칙 작업을 생성하는 방법을 보여 줍니다. 자세한 내용은 변환 규칙 및 작업 섹션을 참조하세요.

    Babelfish 변환 규칙
  • Babelfish 버전 2.2.0 이전에 DMS는 Babelfish 대상 엔드포인트에 복제할 수 있는 열 수를 20개로 제한했습니다. Babelfish 2.2.0에서는 이 한도가 100개로 늘어났습니다. 하지만 Babelfish 버전 2.4.0 이상에서는 복제할 수 있는 열 수가 다시 늘어납니다. SQL Server 데이터베이스에 대해 다음 코드 샘플을 실행하여 어떤 테이블이 너무 긴지 확인할 수 있습니다.

    USE myDB; GO DECLARE @Babelfish_version_string_limit INT = 8000; -- Use 380 for Babelfish versions before 2.2.0 WITH bfendpoint AS ( SELECT [TABLE_SCHEMA] ,[TABLE_NAME] , COUNT( [COLUMN_NAME] ) AS NumberColumns , ( SUM( LEN( [COLUMN_NAME] ) + 3) + SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 ) + LEN( TABLE_SCHEMA ) + 3 + 12 -- INSERT INTO string + 12) AS InsertIntoCommandLength -- values string , CASE WHEN ( SUM( LEN( [COLUMN_NAME] ) + 3) + SUM( LEN( FORMAT(ORDINAL_POSITION, 'N0') ) + 3 ) + LEN( TABLE_SCHEMA ) + 3 + 12 -- INSERT INTO string + 12) -- values string >= @Babelfish_version_string_limit THEN 1 ELSE 0 END AS IsTooLong FROM [INFORMATION_SCHEMA].[COLUMNS] GROUP BY [TABLE_SCHEMA], [TABLE_NAME] ) SELECT * FROM bfendpoint WHERE IsTooLong = 1 ORDER BY TABLE_SCHEMA, InsertIntoCommandLength DESC, TABLE_NAME ;

Babelfish의 대상 데이터 형식

다음 테이블에는 AWS DMS를 사용할 때 지원되는 Babelfish 대상 데이터 형식과 AWS DMS 데이터 형식에서의 기본 매핑이 나와 있습니다.

AWS DMS 데이터 형식에 대한 추가 정보는 AWS Database Migration Service에서 사용되는 데이터 형식 단원을 참조하십시오.

AWS DMS 데이터 형식

Babelfish 데이터 형식

BOOLEAN

TINYINT

BYTES

VARBINARY(길이)

DATE

DATE

TIME

TIME

INT1

SMALLINT

INT2

SMALLINT

INT4

INT

INT8

BIGINT

NUMERIC

NUMERIC(p,s)

REAL4

REAL

REAL8

FLOAT

STRING

열이 날짜 또는 시간 열인 경우, 다음 작업을 수행합니다.

  • SQL Server 2008 이상에서는 DATETIME2를 사용합니다.

  • 이전 버전의 경우에 크기가 3이면 DATETIME을 사용합니다. 다른 모든 경우에서는 VARCHAR (37)을 사용합니다.

열이 날짜 또는 시간 열이 아닌 경우, VARCHAR(길이)을 사용합니다.

UINT1

TINYINT

UINT2

SMALLINT

UINT4

INT

UINT8

BIGINT

WSTRING

NVARCHAR(length)

BLOB

VARBINARY(max)

DMS에 이 데이터 형식을 사용하려면 특정 작업에서 BLOB 사용을 활성화해야 합니다. DMS는 프라이머리 키를 포함하는 테이블에서만 BLOB 데이터 형식을 지원합니다.

CLOB

VARCHAR(최대)

DMS에 이 데이터 형식을 사용하려면 특정 작업에서 CLOB 사용을 활성화해야 합니다.

NCLOB

NVARCHAR(최대)

DMS에 이 데이터 형식을 사용하려면 특정 작업에서 NCLOB 사용을 활성화해야 합니다. CDC 중에 DMS는 프라이머리 키를 포함하는 테이블에서만 NCLOB 데이터 형식을 지원합니다.