Comment utiliser les tâches AWS DMS pour migrer une base de données Amazon RDS for MySQL qui n'utilise pas de fuseau horaire UTC ?
J'ai une base de données source et cible Amazon Relational Database Service (Amazon RDS) for MySQL qui n'utilise pas de fuseau horaire UTC. Je souhaite utiliser une tâche AWS Database Migration Service (AWS DMS) pour transférer des données vers Amazon Redshift.
Brève description
Si votre instance de base de données RDS for MySQL source ou cible n'utilise pas de fuseau horaire UTC, vos données d'horodatage peuvent être incohérentes après la migration vers AWS DMS. En interne, MySQL stocke la colonne d'horodatage au format UTC. Lorsque vous sélectionnez une date, RDS for MySQL convertit automatiquement la colonne d'horodatage en fonction du fuseau horaire de la session en cours.
Par exemple, vous avez une base de données RDS for MySQL source qui s'exécute en Australie/Sydney et une base de données RDS for MySQL cible qui s'exécute en UTC. Lorsque la tâche DMS capture et applique les données au format UTC de la source à la cible, les données deviennent incohérentes.
Pour résoudre ce problème, utilisez l'attribut de connexion supplémentaire (ECA) Initstmt=SET time_zone='+00:00'; pour le point de terminaison cible AWS DMS. Pour en savoir plus, consultez la section Étape 6 : Créer des points de terminaison source et cible AWS DMS.
Résolution
Important : avant de migrer des données, vous devez exécuter une commande CREATE TABLE pour votre tâche AWS DMS. Pour plus d’informations, consultez la page Instruction CREATE TABLE sur le site Web de MySQL.
Exemple de commande 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;
Migration sans l'ECA Initstmt dans le point de terminaison cible
Dans l'exemple suivant, la base de données source se trouve dans le fuseau horaire Australie/Sydney et la base de données cible se trouve dans le fuseau horaire America/Caracas. De plus, la base de données source n'inclut pas l'ECA Initstmt dans le point de terminaison cible.
Pour vérifier les paramètres des bases de données source et cible, exécutez la requête suivante :
SELECT @@global.time_zone, @@session.time_zone;
Sortie de la base de données source :
@@global.time_zone|@@session.time_zone| ------------------+-------------------+ Australia/Sydney |Australia/Sydney |
Sortie de la base de données cible :
@@global.time_zone|@@session.time_zone| ------------------+-------------------+ America/Caracas |America/Caracas |
Pour préparer les données en vue d'un chargement complet, exécutez les commandes suivantes :
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');
Exécutez votre tâche AWS DMS en mode chargement complet plus capture des données modifiées (CDC). Une fois le chargement complet terminé, exécutez les commandes suivantes pour insérer les données CDC dans votre base de données source :
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');
Pour vérifier les données de vos bases de données source et cible, exécutez la requête SQL suivante dans les bases de données source et cible :
select t.* from sample_schema.dms_tz_table t;
La sortie suivante présente les données des bases de données source et cible :
|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|
Les données d'horodatage ne sont pas cohérentes entre les bases de données source et cible.
Migration avec l'ECA Initstmt dans le point de terminaison cible
Dans l'exemple suivant, la base de données source se trouve dans le fuseau horaire Australie/Sydney et la base de données cible se trouve dans le fuseau horaire America/Caracas. La base de données source inclut l’ECA Initstmt=SET time_zone='+00:00'; dans le point de terminaison cible AWS DMS
Pour vérifier les paramètres des bases de données source et cible, exécutez la requête suivante :
SELECT @@global.time_zone, @@session.time_zone;
Sortie de la base de données source :
@@global.time_zone|@@session.time_zone| ------------------+-------------------+ Australia/Sydney |Australia/Sydney |
Sortie de la base de données cible :
@@global.time_zone|@@session.time_zone| ------------------+-------------------+ America/Caracas |America/Caracas |
Pour préparer les données en vue d'un chargement complet, exécutez les commandes suivantes :
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');
Exécutez votre tâche AWS DMS en mode chargement complet plus capture des données modifiées (CDC). Une fois le chargement complet terminé, exécutez les commandes suivantes pour insérer les données CDC dans votre base de données source :
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');
Pour vérifier les données de vos bases de données source et cible, exécutez la requête SQL suivante dans les bases de données source et cible :
select t.* from sample_schema.dms_tz_table t;
La sortie suivante présente les données des bases de données source et cible :
|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|
Migration avec l'ECA Initstmt sur le point de terminaison cible avec une base de données cible dans le fuseau horaire UTC
Dans l'exemple suivant, la base de données source se trouve dans le fuseau horaire Australie/Sydney et la base de données cible se trouve dans le fuseau horaire UTC. La base de données source inclut l’ECA Initstmt=SET time_zone='+00:00'; dans le point de terminaison cible AWS DMS.
Pour vérifier les paramètres des bases de données source et cible, exécutez la requête suivante :
SELECT @@global.time_zone, @@session.time_zone;
Sortie de la base de données source :
@@global.time_zone|@@session.time_zone| ------------------+------------------+ Australia/Sydney |Australia/Sydney |
Sortie de la base de données cible :
@@global.time_zone|@@session.time_zone| ------------------+------------------+ UTC |UTC |
Pour préparer les données en vue d'un chargement complet, exécutez les commandes suivantes :
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');
Exécutez votre tâche AWS DMS en mode chargement complet plus capture des données modifiées (CDC). Une fois le chargement complet terminé, exécutez les commandes suivantes pour insérer les données CDC dans votre base de données source :
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');
Pour vérifier les données de vos bases de données source et cible, exécutez la requête SQL suivante dans les bases de données source et cible :
select t.* from sample_schema.dms_tz_table t;
La sortie suivante présente les données des bases de données source et cible :
|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|
Informations connexes
- Langue
- Français

Contenus pertinents
demandé il y a 2 ans
demandé il y a 2 ans
demandé il y a 2 ans
demandé il y a 3 ans
AWS OFFICIELA mis à jour il y a 9 mois