내용으로 건너뛰기

AWS DMS 작업을 사용하여 UTC 시간대를 사용하지 않는 Amazon RDS for MySQL 데이터베이스를 마이그레이션하려면 어떻게 해야 합니까?

5분 분량
0

UTC 시간대를 사용하지 않는 소스 및 대상 Amazon Relational Database Service(Amazon RDS) for MySQL이 있습니다. AWS Database Migration Service(AWS DMS) 작업을 사용하여 데이터베이스를 마이그레이션하려고 합니다.

간략한 설명

소스 또는 대상 RDS for MySQL DB 인스턴스에서 UTC 시간대를 사용하지 않는 경우 AWS DMS 마이그레이션 후 타임스탬프 데이터가 일치하지 않을 수 있습니다. 내부적으로 RDS for MySQL은 타임스탬프 열을 UTC로 저장합니다. 사용자가 날짜를 선택하면 RDS for MySQL이 타임스탬프 열을 자동으로 현재 세션의 시간대로 변환합니다.

예를 들어 오스트레일리아/시드니에서 실행되는 소스 RDS for MySQL 데이터베이스와 UTC에서 실행되는 대상 RDS for MySQL 데이터베이스가 있습니다. AWS DMS 작업이 소스에서 데이터를 UTC로 캡처하여 대상에 적용하면 데이터가 일치하지 않게 됩니다.

이 문제를 해결하려면 AWS DMS 대상 엔드포인트에 대한 Initstmt=SET time_zone='+00:00'; 추가 연결 속성(ECA)을 사용하십시오. 자세한 내용은 6단계: AWS DMS 소스 및 대상 엔드포인트 생성을 참조하십시오.

해결 방법

중요: 데이터를 마이그레이션하기 전에 AWS DMS 작업에 대해 CREATE TABLE 명령을 실행해야 합니다. 자세한 내용은 MySQL 웹 사이트의 CREATE TABLE statement를 참조하십시오.

예제 CREATE TABLE 명령:

create table sample_schema.dms_tz_table (
id int not null,
info varchar(30),
ts timestamp null default null,
primary key (id)
) engine=innodb default charset=utf8mb4 collate=utf8mb4_0900_ai_ci;

대상 엔드포인트에서 Initstmt ECA를 사용하지 않고 마이그레이션

다음 예에서 소스 데이터베이스는 오스트레일리아/시드니 시간대에 있고 대상 데이터베이스는 아메리카/카라카스 시간대에 있습니다. 또한 소스 데이터베이스는 대상 엔드포인트에 Initstmt ECA가 포함되어 있지 않습니다.

소스 및 대상 데이터베이스 파라미터를 확인하려면 다음 쿼리를 실행하십시오.

SELECT @@global.time_zone, @@session.time_zone;

소스 데이터베이스 출력:

@@global.time_zone|@@session.time_zone|
------------------+-------------------+
Australia/Sydney  |Australia/Sydney   |

대상 데이터베이스 출력:

@@global.time_zone|@@session.time_zone|
------------------+-------------------+
America/Caracas   |America/Caracas    |

전체 로드를 위해 데이터를 준비하려면 다음 명령을 실행합니다.

insert into sample_schema.dms_tz_table(id, info, ts) values(1, 'FL', CURRENT_TIMESTAMP);
insert into sample_schema.dms_tz_table(id, info, ts) values(2, 'FL','2025-12-18 19:03:01');

전체 로드 및 변경 데이터 캡처(CDC) 모드에서 AWS DMS 작업을 실행합니다. 전체 로드가 완료된 후 다음 명령을 실행하여 CDC 데이터를 소스 데이터베이스에 삽입합니다.

insert into sample_schema.dms_tz_table(id, info, ts) values(3, 'CDC', CURRENT_TIMESTAMP);
insert into sample_schema.dms_tz_table(id, info, ts) values(4, 'CDC', '2025-09-01 19:05:01');

소스 및 대상 데이터베이스의 데이터를 확인하려면 소스 및 대상 데이터베이스 모두에서 다음 SQL 쿼리를 실행합니다.

select t.* from sample_schema.dms_tz_table t;

다음 출력은 소스 및 대상 데이터베이스의 데이터를 보여줍니다.

|Source Australia/Sydney    |     Target America/Caracas|
|-------------------------------------------------------|
|id|info|                 ts|id|info|                 ts|
|--+----+-------------------+--+----+-------------------+
|1 |FL  |2025-12-19 02:12:47|1 |FL  |2025-12-18 15:12:47|
|2 |FL  |2025-12-18 19:03:01|2 |FL  |2025-12-18 08:03:01|
|3 |CDC |2025-12-19 02:17:40|3 |CDC |2025-12-18 11:17:40|
|4 |CDC |2025-09-01 19:05:01|4 |CDC |2025-09-01 05:05:01|

소스 데이터베이스와 대상 데이터베이스의 타임스탬프 데이터는 일치하지 않습니다.

대상 엔드포인트에서 Initstmt ECA를 사용하여 마이그레이션

다음 예에서 소스 데이터베이스는 오스트레일리아/시드니 시간대에 있고 대상 데이터베이스는 아메리카/카라카스 시간대에 있습니다. 소스 데이터베이스에 AWS DMS 대상 엔드포인트의 Initstmt=SET time_zone='+00:00'; ECA가 포함됨

소스 및 대상 데이터베이스 파라미터를 확인하려면 다음 쿼리를 실행하십시오.

SELECT @@global.time_zone, @@session.time_zone;

소스 데이터베이스 출력:

@@global.time_zone|@@session.time_zone|
------------------+-------------------+
Australia/Sydney  |Australia/Sydney   |

대상 데이터베이스 출력:

@@global.time_zone|@@session.time_zone|
------------------+-------------------+
America/Caracas   |America/Caracas    |

전체 로드를 위해 데이터를 준비하려면 다음 명령을 실행합니다.

insert into sample_schema.dms_tz_table(id, info, ts) values(1, 'FL', CURRENT_TIMESTAMP);
insert into sample_schema.dms_tz_table(id, info, ts) values(2, 'FL','2025-09-01 19:03:01');

전체 로드 및 CDC 모드에서 AWS DMS 작업을 실행합니다. 전체 로드가 완료된 후 다음 명령을 실행하여 CDC 데이터를 소스 데이터베이스에 삽입합니다.

insert into sample_schema.dms_tz_table(id, info, ts) values(3, 'CDC', CURRENT_TIMESTAMP);
insert into sample_schema.dms_tz_table(id, info, ts) values(4, 'CDC', '2025-09-01 19:05:01');

소스 및 대상 데이터베이스의 데이터를 확인하려면 소스 및 대상 데이터베이스 모두에서 다음 SQL 쿼리를 실행합니다.

select t.* from sample_schema.dms_tz_table t;

다음 출력은 소스 및 대상 데이터베이스의 데이터를 보여줍니다.

|Source Australia/Sydney    |     Target America/Caracas|
|-------------------------------------------------------|
|id|info|                 ts|id|info|                 ts|
|--+----+-------------------+--+----+-------------------+
|1 |FL  |2025-09-03 00:44:31|1 |FL  |2025-09-02 10:44:31|
|2 |FL  |2025-09-01 19:03:01|2 |FL  |2025-09-01 05:03:01|
|3 |CDC |2025-09-03 00:48:15|3 |CDC |2025-09-02 10:48:15|
|4 |CDC |2025-09-01 19:05:01|4 |CDC |2025-09-01 05:05:01|

대상 엔드포인트에서 Initstmt ECA를 사용하여 UTC 시간대의 대상 데이터베이스로 마이그레이션

다음 예에서 소스 데이터베이스는 오스트레일리아/시드니 시간대에 있고 대상 데이터베이스는 UTC 시간대에 있습니다. 소스 데이터베이스에 AWS DMS 대상 엔드포인트의 Initstmt=SET time_zone='+00:00'; ECA가 포함됨

소스 및 대상 데이터베이스 파라미터를 확인하려면 다음 쿼리를 실행하십시오.

SELECT @@global.time_zone, @@session.time_zone;

소스 데이터베이스 출력:

@@global.time_zone|@@session.time_zone|
------------------+------------------+
Australia/Sydney  |Australia/Sydney  |

대상 데이터베이스 출력:

@@global.time_zone|@@session.time_zone|
------------------+------------------+
UTC               |UTC               |

전체 로드를 위해 데이터를 준비하려면 다음 명령을 실행합니다.

insert into sample_schema.dms_tz_table(id, info, ts) values(1, 'FL', CURRENT_TIMESTAMP);
insert into sample_schema.dms_tz_table(id, info, ts) values(2, 'FL','2025-09-01 19:03:01');

전체 로드 및 CDC 모드에서 AWS DMS 작업을 실행합니다. 전체 로드가 완료된 후 다음 명령을 실행하여 CDC 데이터를 소스 데이터베이스에 삽입합니다.

insert into sample_schema.dms_tz_table(id, info, ts) values(3, 'CDC', CURRENT_TIMESTAMP);
insert into sample_schema.dms_tz_table(id, info, ts) values(4, 'CDC', '2025-09-01 19:05:01');

소스 및 대상 데이터베이스의 데이터를 확인하려면 소스 및 대상 데이터베이스 모두에서 다음 SQL 쿼리를 실행합니다.

select t.* from sample_schema.dms_tz_table t;

다음 출력은 소스 및 대상 데이터베이스의 데이터를 보여줍니다.

|Source Australia/Sydney    |                 Target UTC|
|-------------------------------------------------------|
|id|info|                 ts|id|info|                 ts|
|--+----+-------------------+--+----+-------------------+
|1 |FL  |2025-09-03 01:02:09|1 |FL  |2025-09-02 15:02:09|
|2 |FL  |2025-09-01 19:03:01|2 |FL  |2025-09-01 09:03:01|
|3 |CDC |2025-09-03 01:03:37|3 |CDC |2025-09-02 15:03:37|
|4 |CDC |2025-09-01 19:05:01|4 |CDC |2025-09-01 09:05:01|

관련 정보

MySQL 호환 데이터베이스를 AWS DMS의 대상으로 사용할 때의 엔드포인트 설정

AWS 공식업데이트됨 5달 전
댓글 없음