Tous les produits
Search
Centre de documentation

Data Transmission Service:Utiliser OpenAPI pour configurer la synchronisation de données unidirectionnelle ou bidirectionnelle pour les instances Tair

Dernière mise à jour :Sep 22, 2026

Vous pouvez utiliser l'API Data Transmission Service (DTS) pour configurer la synchronisation de données unidirectionnelle ou bidirectionnelle pour les instances Tair (compatible avec OSS Redis) Édition améliorée. Cette rubrique décrit les notes d'utilisation et fournit des exemples de code.

Prérequis

Les instances source et de destination sont des instances Tair (compatible avec OSS Redis) Édition améliorée.

Remarque

Si une instance Tair utilise la persistent memory comme storage medium, assurez-vous que le paramètre appendonly est défini sur yes. Pour plus d'informations, consultez la section Procédure.

Notes d'utilisation

  • Pour la synchronisation bidirectionnelle, la tâche de synchronisation avant effectue la synchronisation initiale des données complètes et la synchronisation incrémentielle des données. La tâche de synchronisation inverse n'effectue que la synchronisation incrémentielle des données.

    Avertissement

    Afin de garantir la cohérence des données, ne modifiez pas et n'écrivez pas de données dans la même clé des bases de données source et de destination lorsque la tâche de synchronisation bidirectionnelle est en cours d'exécution.

  • DTS utilise les ressources des bases de données source et de destination lors de la synchronisation initiale des données complètes. Cela peut augmenter la charge sur les serveurs de base de données. Si vous synchronisez une grande quantité de données ou si les spécifications du serveur ne répondent pas à vos exigences, les services de base de données peuvent devenir indisponibles. Avant de synchroniser les données, évaluez l'impact de la synchronisation des données sur les performances des instances source et de destination. Nous vous recommandons de synchroniser les données pendant les heures creuses.

  • N'exécutez pas les commandes FLUSHDB ou FLUSHALL sur l'instance source. Sinon, cela entraînerait une incohérence des données entre la source et la cible.

  • Si la mémoire de la destination est saturée, l'éviction des données peut provoquer une incohérence entre la source et la destination. La valeur par défaut de maxmemory-policy pour Tair (compatible avec OSS Redis) est volatile-lru, ce qui n'affecte pas le fonctionnement de la tâche mais peut entraîner l'éviction des données.

    Définissez la politique d'éviction de la destination sur noeviction pour éviter la perte de données. Avec cette politique, les opérations d'écriture échouent et la tâche s'arrête lorsque la mémoire est épuisée, mais aucune donnée n'est évictée.

    Remarque

    Consultez la section Politiques d'éviction des données dans Redis.

  • Si la base de données source contient des clés avec une politique d'expiration, la base de données de destination peut signaler moins de clés lorsqu'elle est vérifiée avec une commande telle que info. En effet, les clés expirées peuvent ne pas être supprimées immédiatement.

    Remarque

    Le nombre de clés qui n'ont pas de politique d'expiration ou qui n'ont pas expiré est identique dans les bases de données source et de destination.

  • Si la connexion directe est désactivée pour l'instance Tair (compatible avec OSS Redis) Édition améliorée de destination, DTS utilise le mode de transfert proxy pour écrire des données dans l'instance de destination.

    Remarque

    Pour plus d'informations sur l'activation de la connexion directe, consultez la section Activer la connexion directe.

  • Si vous mettez à l'échelle l'instance Redis source (ajout ou suppression de shards) ou modifiez ses spécifications pendant la synchronisation, reconfigurez la tâche. Effacez toutes les données synchronisées de la destination avant de reconfigurer afin de garantir la cohérence des données.

  • Si l'adresse de connexion de l'instance Redis source change pendant la synchronisation (par exemple, en raison d'un changement de zone de disponibilité ou d'un passage du réseau classique au VPC), reconfigurez la tâche.

  • Lors de la synchronisation d'une instance Redis autonome vers une instance Redis en cluster, les clusters Redis permettent à une seule commande de fonctionner sur un seul slot. Les opérations multi-clés sur des clés situées dans différents slots renvoient l'erreur suivante :

    CROSSSLOT Keys in request don't hash to the same slot

    Pour éviter les interruptions de tâche, n'effectuez que des opérations sur une seule clé pendant la synchronisation DTS.

  • Si l'instance de destination est une instance en cluster et que l'un de ses shards atteint sa limite de mémoire, ou si l'instance de destination manque d'espace de stockage, la tâche DTS échoue avec une erreur Out of Memory (OOM).

  • Si la fonctionnalité de chiffrement transparent des données (TDE) est activée pour l'instance source ou de destination, vous ne pouvez pas utiliser DTS pour synchroniser les données de la base de données source vers la base de données de destination.

  • Si l'instance source est une instance Redis gérée par vous-même, nous vous recommandons de définir le délai de réplication entre le slave et le master (repl-timeout) sur 600 secondes à l'aide de la commande config set repl-timeout 600. Si la base de données source contient un grand volume de données, vous pouvez augmenter la valeur du paramètre repl-timeout.

  • Une tâche de synchronisation bidirectionnelle comprend des tâches de synchronisation avant et inverse. Lorsque vous configurez ou réinitialisez la tâche, si l'objet de destination d'une tâche correspond à l'objet de synchronisation de l'autre tâche :

    • Autorisez une seule tâche à synchroniser les données complètes et incrémentielles. L'autre tâche prend uniquement en charge la synchronisation incrémentielle.

    • Les données provenant de la source de la tâche actuelle sont synchronisées uniquement vers la destination de la tâche actuelle. Elles ne servent pas de données source pour l'autre tâche.

Facturation

Type de synchronisation

Tarification

Synchronisation du schéma et synchronisation des données complètes

Gratuit.

Synchronisation incrémentielle des données

Facturé. Pour plus d'informations, consultez la section Présentation de la facturation.

Limites

La synchronisation en cascade unidirectionnelle n'est pas prise en charge. Pour plus d'informations, consultez la section Topologies de synchronisation.

Commandes pouvant être synchronisées

  • APPEND

  • BITOP, BLPOP, BRPOP et BRPOPLPUSH

  • DECR, DECRBY et DEL

  • EVAL, EVALSHA, EXEC, EXPIRE et EXPIREAT

  • GEOADD et GETSET

  • HDEL, HINCRBY, HINCRBYFLOAT, HMSET, HSET et HSETNX

  • INCR, INCRBY et INCRBYFLOAT

  • LINSERT, LPOP, LPUSH, LPUSHX, LREM, LSET et LTRIM

  • MOVE, MSET, MSETNX et MULTI

  • PERSIST, PEXPIRE, PEXPIREAT, PFADD, PFMERGE et PSETEX

  • RENAME, RENAMENX, RPOP, RPOPLPUSH, RPUSH et RPUSHX

  • SADD, SDIFFSTORE, SELECT, SET, SETBIT, SETEX, SETNX, SETRANGE, SINTERSTORE, SMOVE, SPOP, SREM et SUNIONSTORE

  • UNLINK, ZADD, ZINCRBY, ZINTERSTORE, ZREM, ZREMRANGEBYLEX, ZUNIONSTORE, ZREMRANGEBYRANK et ZREMRANGEBYSCORE

  • SWAPDB (Cette commande ne peut pas être synchronisée si l'instance source ou de destination est déployée dans une architecture en cluster.)

Important
  • Les commandes PUBLISH ne peuvent pas être synchronisées.

  • Si vous exécutez la commande EVAL ou EVALSHA pour appeler des scripts Lua, DTS ne peut pas identifier si ces scripts Lua sont exécutés sur la base de données de destination. En effet, la base de données de destination ne renvoie pas explicitement les résultats d'exécution des scripts Lua lors de la synchronisation incrémentielle des données.

  • Lorsque DTS exécute la commande SYNC ou PSYNC pour transférer des données de type LIST, DTS n'efface pas les données existantes. Par conséquent, l'instance de destination peut contenir des enregistrements de données en double.

Avant de commencer

Créer une paire de clés AccessKey.

Remarque

Pour protéger la paire de clés AccessKey de votre compte Alibaba Cloud, nous vous recommandons de créer un utilisateur Resource Access Management (RAM), d'accorder à cet utilisateur les autorisations d'accès à DTS, puis d'utiliser la paire de clés AccessKey de l'utilisateur RAM pour appeler le SDK DTS pour Java. Pour plus d'informations, consultez la section Contrôler l'accès aux ressources à l'aide d'utilisateurs RAM.

Créer une instance de synchronisation de données

  1. Connectez-vous à OpenAPI Explorer.

  2. Configurez les paramètres de requête en fonction de vos besoins métier. Le tableau suivant décrit les paramètres.

    Paramètre

    Description

    Valeur

    SourceRegion

    ID de la région dans laquelle se trouve l'instance source.

    Spécifiez une valeur pour ces paramètres en fonction de vos besoins métier.

    DestRegion

    ID de la région dans laquelle se trouve l'instance de destination.

    Topology

    Topologie de synchronisation. Valeurs valides :

    • oneway (par défaut) : synchronisation unidirectionnelle.

    • bidirectional : synchronisation bidirectionnelle.

    SynchronizationJobClass

    Classe d'instance de l'instance de synchronisation de données.

    PayType

    Méthode de facturation de l'instance de synchronisation de données. Valeurs valides :

    • PrePaid : abonnement.

    • PostPaid (par défaut) : paiement à l'utilisation.

    SourceEndpoint.InstanceType

    Type de l'instance source.

    Définissez la valeur sur Redis.

    DestinationEndpoint.InstanceType

    Type de l'instance de destination.

    Définissez la valeur sur Redis.

    Remarque

    Pour plus d'informations, consultez la section CreateSynchronizationJob.

  3. Dans la partie inférieure de la page, cliquez sur Initiate Call.

  4. Dans l'onglet Response, affichez la réponse de l'API.

    Remarque

    Enregistrez l'ID de l'instance de synchronisation (SynchronizationJobId) à partir de la réponse.

    Important

    Si la requête échoue, vous devez modifier les paramètres de requête en fonction du message renvoyé dans la réponse et envoyer à nouveau la requête jusqu'à ce qu'elle aboutisse.

  5. Facultatif : Obtenez l'exemple de code du SDK.

    1. Cliquez sur l'onglet SDK Sample Code.

    2. Spécifiez la version du SDK et le langage de programmation.

    3. Cliquez sur l'icône de copie dans le coin supérieur droit de la section de code pour copier le code.

Configurer une tâche de synchronisation unidirectionnelle

Dans cet exemple, le compte de base de données de l'instance source dispose des autorisations de lecture sur la base de données source. Le compte de base de données de l'instance de destination dispose des autorisations de lecture et d'écriture sur la base de données de destination.

Remarque

Lorsque vous configurez la synchronisation de données unidirectionnelle, vous pouvez également utiliser une base de données Redis gérée par vous-même ou une instance Tair (compatible avec Redis) comme base de données source ou cible. La méthode de configuration est similaire à celle de cet exemple, mais vous devez ajuster les paramètres de requête correspondants, tels que MigrationReserved.

  1. Connectez-vous à OpenAPI Explorer.

  2. Configurez les paramètres de requête en fonction de vos besoins métier.

    Remarque

    Vous devez définir le paramètre SynchronizationDirection sur Forward. Pour plus d'informations, consultez la section ConfigureSynchronizationJob.

  3. Dans la partie inférieure de la page, cliquez sur Initiate Call.

  4. Dans l'onglet Response, affichez la réponse de l'API.

    Important

    Si l'appel échoue, vérifiez le Message dans la réponse, corrigez le problème et réessayez.

  5. Facultatif. Obtenez l'exemple de code du SDK.

    1. Cliquez sur l'onglet SDK Sample Code.

    2. Spécifiez la version du SDK et le langage de programmation.

    3. Cliquez sur l'icône de copie dans le coin supérieur droit de la section de code pour copier le code.

Configurer des tâches de synchronisation bidirectionnelle

Dans cet exemple, les comptes de base de données utilisés pour la synchronisation des données disposent des autorisations de lecture et d'écriture.

  1. Configurez une tâche de synchronisation de données dans le sens avant. Pour plus d'informations, consultez la section Configurer une tâche de synchronisation unidirectionnelle de cette rubrique.

  2. Attendez que la tâche de synchronisation avant termine l'initialisation et que son statut passe à Synchronizing.

    Remarque

    Vous pouvez afficher le statut d'une tâche de synchronisation de données dans la console DTS ou en appelant l'opération Interroger le statut d'une tâche de synchronisation de données.

  3. Configurez la tâche de synchronisation de données dans le sens inverse.

    1. Facultatif. Connectez-vous à OpenAPI Explorer.

    2. Configurez les paramètres de requête en fonction de vos besoins métier.

      Remarque

      Vous devez définir le paramètre SynchronizationDirection sur Reverse. Pour plus d'informations, consultez la section ConfigureSynchronizationJob.

    3. Dans la partie inférieure de la page, cliquez sur Initiate Call.

    4. Dans l'onglet Response, affichez la réponse de l'API.

      Important

      Si l'appel échoue, vérifiez le Message dans la réponse, corrigez le problème et réessayez.

    5. Facultatif. Obtenez l'exemple de code du SDK.

      1. Cliquez sur l'onglet SDK Sample Code.

      2. Spécifiez la version du SDK et le langage de programmation.

      3. Cliquez sur l'icône de copie dans le coin supérieur droit de la section de code pour copier le code.

Références