すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:OpenAPI を使用した Tair インスタンスの一方向または双方向データ同期の設定

最終更新日:Apr 23, 2026

Data Transmission Service (DTS) の API を使用して、Tair (Redis OSS 互換) Enterprise Edition インスタンスの一方向または双方向のデータ同期を設定できます。このトピックでは、注意事項とサンプルコードについて説明します。

前提条件

ソースインスタンスと宛先インスタンスは、Tair (Redis OSS 互換) Enterprise Edition インスタンスです。

説明

Tair インスタンスが [永続メモリ] をその [記憶媒体] として使用する場合、appendonly パラメーターを yes に設定してください。詳細については、「手順」をご参照ください。

注意事項

  • 双方向同期の場合、正方向同期ジョブは初期完全同期と増分同期を実行します。逆方向同期ジョブは増分同期のみを実行します。

    警告

    データ整合性を確保するため、双方向同期タスクの実行中は、ソースデータベースとターゲットデータベースの同じキーに対してデータを変更したり書き込んだりしないでください。

  • DTS は、初期完全同期中にソースデータベースとターゲットデータベースのリソースを使用します。これにより、データベースサーバーの負荷が増加する可能性があります。大量のデータを同期する場合や、サーバーの仕様が要件を満たしていない場合、データベースサービスが利用できなくなることがあります。データを同期する前に、データ同期がソースインスタンスと宛先インスタンスのパフォーマンスに与える影響を評価してください。オフピーク時にデータを同期することを推奨します。

  • ソースインスタンスで FLUSHDB または FLUSHALL コマンドを実行しないでください。実行すると、ソースとターゲット間でデータの不整合が発生します。

  • ターゲットデータベースのメモリが不足し、データエビクションがトリガーされると、ソースとターゲット間でデータが不整合になる可能性があります。これは、Tair (Redis OSS 互換) のデフォルトのデータエビクションポリシー (maxmemory-policy) が volatile-lru であるために発生します。ただし、これは通常のタスク操作には影響しません。

    この問題を回避するには、ターゲットデータベースのデータエビクションポリシーを noeviction に設定することを推奨します。このポリシーでは、ターゲットのメモリが不足した場合、書き込み操作は失敗し、タスクは停止し、エビクションによるデータ損失は発生しません。

    説明

    データエビクションポリシーの詳細については、「Redis のデータエビクションポリシー」をご参照ください。

  • ソースデータベースが一部のキーに有効期限ポリシーを使用している場合、ターゲットデータベースのキー数が少なく見えることがあります (info などのコマンドで報告されるように)。これは、有効期限が切れたキーがソースデータベースですぐに削除されないことがあるためです。

    説明

    有効期限ポリシーがない、または有効期限が切れていないキーの数は、ソースデータベースとターゲットデータベースの両方で同じです。

  • 宛先 Tair (Redis OSS 互換) Enterprise Edition インスタンスで直接接続が無効になっている場合、DTS はプロキシ転送モードを使用して宛先インスタンスにデータを書き込みます。

    説明

    直接接続を有効にする方法の詳細については、「直接接続の有効化」をご参照ください。

  • 同期中にソース Redis インスタンスがスケールされた場合 (シャードの追加や削除など)、または仕様が変更された場合 (メモリの増加など)、タスクを再設定する必要があります。データ整合性を確保するため、タスクを再設定する前に、宛先 Redis インスタンスから同期されたすべてのデータをクリアすることを推奨します。

  • 同期中にソース Redis インスタンスのエンドポイントが変更された場合 (アベイラビリティゾーンの変更や、ネットワークタイプがクラシックネットワークから Virtual Private Cloud (VPC) への切り替えなど)、タスクを再設定する必要があります。

  • スタンドアロン Redis インスタンスからクラスターモード Redis インスタンスにデータを同期する場合、以下の制限が適用されます。Redis クラスターでは、同じスロットにあるキーに対してのみコマンドを操作できます。キーが複数のスロットにまたがる複数キー操作をソースデータベースで実行すると、次のエラーが発生します:

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

    タスクの中断を防ぐため、データ同期中は単一キー操作のみを実行することを推奨します。

  • 宛先インスタンスがクラスターインスタンスであり、そのシャードの 1 つがメモリ制限に達した場合、または宛先インスタンスのストレージ容量が不足した場合、DTS ジョブはメモリ不足 (OOM) エラーで失敗します。
  • ソースまたは宛先インスタンスで TDE (透過的データ暗号化) 機能が有効になっている場合、DTS を使用してソースデータベースからターゲットデータベースにデータを同期することはできません。

  • ソースインスタンスが自主管理 Redis の場合、config set repl-timeout 600 コマンドを使用して、スレーブとマスター間のレプリケーションタイムアウト (repl-timeout) を 600 秒に設定することを推奨します。ソースデータベースに大量のデータが含まれている場合は、repl-timeout パラメーターの値を大きくすることができます。

  • 双方向同期タスクには、正方向同期タスクと逆方向同期タスクが含まれます。タスクを設定またはリセットする際に、一方のタスクの宛先オブジェクトがもう一方のタスクの同期オブジェクトと一致する場合:

    • 一方のタスクのみが完全データと増分データの同期を許可します。もう一方のタスクは増分同期のみをサポートします。

    • 現在のタスクのソースからのデータは、現在のタスクの宛先にのみ同期されます。もう一方のタスクのソースデータとしては機能しません。

課金

同期タイプ

料金

スキーマ同期と完全データ同期

無料です。

増分データ同期

有料です。詳細については、「課金概要」をご参照ください。

制限事項

一方向カスケード同期はサポートされていません。詳細については、「同期トポロジ」をご参照ください。

同期可能なコマンド

  • APPEND

  • BITOP、BLPOP、BRPOP、および BRPOPLPUSH

  • DECR、DECRBY、および DEL

  • EVAL、EVALSHA、EXEC、EXPIRE、および EXPIREAT

  • GEOADD および GETSET

  • HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、および HSETNX

  • INCR、INCRBY、および INCRBYFLOAT

  • LINSERT、LPOP、LPUSH、LPUSHX、LREM、LSET、および LTRIM

  • MOVE、MSET、MSETNX、および MULTI

  • PERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、および PSETEX

  • RENAME、RENAMENX、RPOP、RPOPLPUSH、RPUSH、および RPUSHX

  • SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、および SUNIONSTORE

  • UNLINK、ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、および ZREMRANGEBYSCORE

  • SWAPDB (ソースまたは宛先インスタンスがクラスターアーキテクチャでデプロイされている場合、このコマンドは同期できません。)

重要
  • PUBLISH コマンドは同期できません。

  • EVAL または EVALSHA コマンドを実行して Lua スクリプトを呼び出す場合、DTS はこれらの Lua スクリプトがターゲットデータベースで実行されたかどうかを識別できません。これは、増分データ同期中にターゲットデータベースが Lua スクリプトの実行結果を明示的に返さないためです。

  • DTS が SYNC または PSYNC コマンドを実行して LIST タイプのデータを転送する場合、DTS は既存のデータをクリアしません。その結果、宛先インスタンスに重複したデータレコードが含まれる可能性があります。

事前準備

AccessKey ペアを作成します

説明

Alibaba Cloud アカウントの AccessKey ペアを保護するため、Resource Access Management (RAM) ユーザーを作成し、その RAM ユーザーに DTS へのアクセス権限を付与してから、RAM ユーザーの AccessKey ペアを使用して DTS SDK for Java を呼び出すことを推奨します。詳細については、「RAM ユーザーを使用したリソースへのアクセスコントロール」をご参照ください。

データ同期インスタンスの作成

  1. OpenAPI Explorer にログインします。

  2. ビジネス要件に基づいてリクエストパラメーターを設定します。次の表にパラメーターを示します。

    パラメーター

    説明

    SourceRegion

    ソースインスタンスが存在するリージョンの ID。

    ビジネス要件に基づいて、これらのパラメーターの値を指定します。

    DestRegion

    宛先インスタンスが存在するリージョンの ID。

    Topology

    同期トポロジ。有効な値:

    • oneway (デフォルト): 一方向同期。

    • bidirectional: 双方向同期。

    SynchronizationJobClass

    データ同期インスタンスのインスタンスクラス。

    PayType

    データ同期インスタンスの課金方法。有効な値:

    • PrePaid: サブスクリプション。

    • PostPaid (デフォルト): 従量課金。

    SourceEndpoint.InstanceType

    ソースインスタンスのタイプ。

    値を Redis に設定します。

    DestinationEndpoint.InstanceType

    宛先インスタンスのタイプ。

    値を Redis に設定します。

    説明

    詳細については、「CreateSynchronizationJob」をご参照ください。

  3. ページの下部にある [呼び出し開始] をクリックします。

  4. [応答] タブで、API 応答を表示します。

    説明

    応答から同期インスタンス ID (SynchronizationJobId) を記録します。

    重要

    リクエストが失敗した場合は、応答で返された message に基づいてリクエストパラメーターを修正し、リクエストが成功するまで再度送信する必要があります。

  5. オプション: SDK サンプルコードを取得します。

    1. [SDK サンプルコード] タブをクリックします。

    2. SDK のバージョンと言語を指定します。

    3. コードセクションの右上隅にあるコピーアイコン をクリックしてコードをコピーします。

一方向同期タスクの設定

この例では、ソースインスタンスのデータベースアカウントはソースデータベースに対する読み取り権限を持っています。宛先インスタンスのデータベースアカウントは、ターゲットデータベースに対する読み取りおよび書き込み権限を持っています。

説明

一方向データ同期を設定する場合、自主管理 Redis データベースまたは Tair (Redis 互換) インスタンスをソースまたはターゲットデータベースとして使用することもできます。設定方法はこの例と似ていますが、MigrationReserved などの対応するリクエストパラメーターを調整する必要があります。

  1. OpenAPI Explorer にログインします。

  2. ビジネス要件に基づいてリクエストパラメーターを設定します。

    説明

    SynchronizationDirection パラメーターを Forward に設定する必要があります。詳細については、「ConfigureSynchronizationJob」をご参照ください。

  3. ページの下部にある [呼び出し開始] をクリックします。

  4. [応答] タブで、API 応答を表示します。

    重要

    呼び出しが失敗した場合は、応答の Message を確認し、問題を修正してから再試行してください。

  5. オプション。SDK のサンプルコードを取得します。

    1. [SDK サンプルコード] タブをクリックします。

    2. SDK のバージョンと言語を指定します。

    3. コードセクションの右上隅にあるコピーアイコン をクリックしてコードをコピーします。

双方向同期タスクの設定

この例では、データ同期に使用されるデータベースアカウントは読み取りおよび書き込み権限を持っています。

  1. 正方向のデータ同期タスクを設定します。詳細については、このトピックの「一方向同期タスクの設定」セクションをご参照ください。

  2. 正方向同期ジョブが初期化を完了し、ステータスが 同期中 に変わるまで待ちます。

    説明

    データ同期タスクのステータスは、DTS コンソールで表示するか、「データ同期ジョブのステータスのクエリ」操作を呼び出すことで確認できます。

  3. 逆方向のデータ同期タスクを設定します。

    1. 任意OpenAPI Explorer にログインします。

    2. ビジネス要件に基づいてリクエストパラメーターを設定します。

      説明

      SynchronizationDirection パラメーターを Reverse に設定する必要があります。詳細については、「ConfigureSynchronizationJob」をご参照ください。

    3. ページの下部にある [呼び出し開始] をクリックします。

    4. [応答] タブで、API 応答を表示します。

      重要

      呼び出しが失敗した場合は、応答の Message を確認し、問題を修正してから再試行してください。

    5. オプション。SDK のサンプルコードを取得します。

      1. [SDK サンプルコード] タブをクリックします。

      2. SDK のバージョンと言語を指定します。

      3. コードセクションの右上隅にあるコピーアイコン をクリックしてコードをコピーします。

参考資料