スキップしてコンテンツを表示

UTC タイムゾーンを使用しない Amazon RDS for MySQL データベースを AWS DMS タスクを使用して移行する方法を教えてください。

所要時間3分
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) を使用します。詳細については、「Step 6: Create AWS DMS source and target endpoints」(ステップ 6: AWS DMS のソースエンドポイントとターゲットエンドポイントを作成する) を参照してください。

解決策

重要: データを移行する前に、AWS DMS タスクの CREATE TABLE コマンドを実行する必要があります。詳細については、MySQL のウェブサイトで「CREATE TABLE statement」(CREATE TABLE ステートメント) を参照してください。

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');

AWS DMS タスクをフルロード + 変更データキャプチャ (CDC) モードで実行します。フルロードが完了したら、次のコマンドを実行して 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');

AWS DMS タスクをフルロードモードと CDC モードで実行します。フルロードが完了したら、次のコマンドを実行して 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');

AWS DMS タスクをフルロードモードと CDC モードで実行します。フルロードが完了したら、次のコマンドを実行して 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|

関連情報

Endpoint settings when using a MySQL-compatible database as a target for AWS DMS (MySQL 互換データベースを AWS DMS のターゲットとして使用する場合のエンドポイント設定)

AWS公式更新しました 7ヶ月前
1コメント

This article was reviewed and updated on 2026-02-02.

エキスパート

応答済み 2ヶ月前

関連するコンテンツ