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

Tair (Redis® OSS-Compatible):Tair (Enterprise Edition) の双方向同期

最終更新日:Nov 09, 2025

Data Transmission Service (DTS) は、Tair (Enterprise Edition) インスタンス間の双方向データ同期をサポートしています。この機能は、アクティブ地理的冗長性やディザスタリカバリなどのシナリオに適しています。このトピックでは、データ同期タスクの設定方法について説明します。

設定は、コンソールで完了するか、OpenAPI 操作を呼び出すことで完了できます。詳細については、「OpenAPI 操作を呼び出して Tair Enterprise Edition インスタンス間の片方向または双方向のデータ同期を設定する」をご参照ください。

機能概要

双方向同期機能を使用するには、順方向データ同期タスクとリモート同期タスクの 2 つの同期リンクを順番に設定する必要があります。順方向データ同期タスクは完全移行増分同期を実行します。リモート同期タスクは増分データの同期のみを実行します。

  • 完全移行: DTS は、すべての既存データをソースデータベースからターゲットデータベースに移行します。完全移行は無料です。

  • 増分同期: 完全移行後、DTS は増分データをソースデータベースからターゲットデータベースにリアルタイムで同期します。増分移行は期間に基づいて課金されます。料金は移行されるデータ量とは関係ありません。詳細については、「課金項目」をご参照ください。

警告

データの不整合を防ぐため、双方向同期タスクの実行中は、両方のデータベースで同時に同じキーのデータを変更したり書き込んだりしないでください。

前提条件

ソースインスタンスと宛先インスタンスは Tair (Enterprise Edition) インスタンスです。

説明
  • Tair (Enterprise Edition) のディスクベースのインスタンスは、双方向データ同期をサポートしていません。

  • Tair 永続メモリインスタンスをソースデータベースとして使用する場合、手動で appendonly パラメーターを有効にする必要があります。

注意事項

  • 移行中は、インスタンスのスケーリング、インスタンスタイプの変更、ソースまたはターゲットデータベースのエンドポイントの変更を行わないでください。これらの操作を行うと、移行タスクが失敗し、再設定が必要になります。移行プロセスはソースデータベースとターゲットデータベースの両方でリソースを消費するため、オフピーク時に移行を実行することをお勧めします。

  • 双方向同期タスクのソースインスタンスまたは宛先インスタンスが中国以外のリージョンにある場合、双方向データ同期は同じリージョン内のインスタンス間でのみサポートされます。リージョン間の双方向データ同期はサポートされていません。たとえば、双方向データ同期は日本 (東京) リージョン内のインスタンス間でサポートされます。日本 (東京) リージョン内のインスタンスとドイツ (フランクフルト) リージョン内のインスタンス間ではサポートされていません。

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

    • 完全データと増分データの同期が許可されるのは 1 つのタスクのみです。もう一方のタスクは増分データのみを同期できます。

    • 現在のタスクのソースデータは、現在のタスクの宛先にのみ同期できます。同期されたデータは、もう一方のタスクのソースデータとして使用されません。

手順

  1. データ同期タスクページに移動します。

    1. DMS コンソールにログインします。

    2. 上部のメニューバーで、[データ + AI] > [Data Transmission Service (DTS)] > [データ同期] を選択します。

    3. [同期タスク] の右側で、同期するインスタンスのリージョンを選択します。

  2. [タスクの作成] をクリックします。

  3. ソースデータベースとターゲットデータベースを設定し、ページ下部の [接続テストと次へ] ボタンをクリックします。

    カテゴリ

    設定

    説明

    N/A

    タスク名

    DTS タスクの名前。DTS はタスク名を自動的に生成します。タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。一意のタスク名を指定する必要はありません。

    ソースデータベース

    DMS データベースインスタンスの選択

    ソースデータベースを DMS に追加した場合、ここで選択できます。ソースデータベースを選択すると、データベースに関する情報を入力する必要はありません。ソースデータベースを DMS に追加していない場合は、このオプションを無視してください。

    データベースタイプ

    Tair/Redis を選択します。

    アクセス方法

    Alibaba Cloud インスタンス を選択します。

    インスタンスリージョン

    インスタンスが存在するリージョンを選択します。

    クロスアカウントデータ同期

    この例は、同じ Alibaba Cloud アカウント内での移行を対象としています。いいえ を選択します。

    インスタンス ID

    ソースインスタンスの ID を選択します。

    認証方法

    必要に応じて パスワードログイン または パスワードなしのログイン を選択します。この例では、パスワードログイン を選択します。

    説明

    インスタンスで パスワードなしのアクセス機能 が有効になっていない場合は、パスワードログイン を選択します。

    データベースパスワード

    ソースインスタンスへの接続に使用するアカウントのパスワードを入力します。

    説明
    • このパラメーターは必須ではありません。パスワードが設定されていない場合は、このパラメーターを空のままにすることができます。

    • カスタムアカウントを使用する場合、アカウントには読み取り権限が必要です。アカウントとパスワードの形式は <user>:<password> です。たとえば、カスタムアカウントのユーザー名が admin でパスワードが Rp829dlwa の場合、このパラメーターに admin:Rp829dlwa と入力します。

    宛先データベース

    DMS データベースインスタンスの選択

    ターゲットデータベースを DMS に追加した場合、ここで選択できます。ターゲットデータベースを選択すると、データベースに関する情報を入力する必要はありません。ターゲットデータベースを DMS に追加していない場合は、このオプションを無視してください。

    データベースタイプ

    デフォルトでは、Tair/Redis が選択されています。

    アクセス方法

    Alibaba Cloud インスタンス を選択します。

    インスタンスリージョン

    宛先インスタンスが存在するリージョンを選択します。

    インスタンス ID

    宛先インスタンスの ID を選択します。

    認証方法

    要件に基づいて パスワードログオン または パスワードなしのログオン を選択します。この例では、パスワードログオン を選択します。

    説明

    インスタンスで パスワードなしのアクセス機能 が有効になっていない場合は、パスワードログイン を選択します。

    データベースパスワード

    ターゲットデータベースに接続するためのパスワードを入力します。

    説明

    カスタムアカウントを使用する場合、アカウントには書き込み権限が必要です。アカウントとパスワードの形式は <user>:<password> です。たとえば、カスタムアカウントのユーザー名が admin でパスワードが Rp829dlwa の場合、このパラメーターに admin:Rp829dlwa と入力します。

  4. タスクオブジェクトを設定し、ページ下部の [次へ: 詳細設定] をクリックします。

    設定

    説明

    同期タイプ

    要件に応じて [完全同期] を有効にするかどうかを選択します。[増分同期] は常に選択されます。

    同期トポロジ

    データ同期タスクの同期トポロジ。[双方向同期] を選択します。

    競合テーブルの処理モード

    • [事前チェックしてエラーを報告] (デフォルト): ターゲットデータベースにキーが存在するかどうかをチェックします。

      データが存在する場合、事前チェック中にエラーが報告され、移行タスクは開始されません。データが存在しない場合、事前チェックは合格します。

    • [エラーを無視して続行]: [ターゲットデータベースのオブジェクトの存在を確認] チェック項目をスキップします。同じ名前のキーがターゲットデータベースに既に存在する場合、キーは上書きされます。

    ソースオブジェクト選択中のオブジェクト

    ソースオブジェクト セクションで同期するオブジェクトを選択し、image.png をクリックしてオブジェクトを 選択中のオブジェクト セクションに移動します。選択したオブジェクトを削除するには、選択中のオブジェクト セクションでオブジェクトを選択し、image.png をクリックしてオブジェクトを ソースオブジェクト セクションに移動します。

    説明

    データベースレベル (DB 0 から DB 255) で移行するオブジェクトを選択できます。

  5. 詳細設定を行い、ページ下部の [次へ: データ検証] をクリックします。

    ほとんどの場合、デフォルト設定を使用できます。詳細については、「付録: 詳細設定」をご参照ください。

  6. 検証設定を行い、ページ下部の [次へ: タスクを保存して事前チェック] をクリックします。

    ほとんどの場合、デフォルト設定を維持できます。詳細については、「DTS 同期または移行インスタンスのデータ検証を設定する」をご参照ください。

  7. 事前チェックを実行します。事前チェックが完了したら、[次へ: 購入] をクリックします。

    事前チェックで [警告] または [失敗] した項目が返された場合は、1 つずつ対処する必要があります。[詳細の表示] をクリックして、提供された指示に基づいて項目を修正できます。また、[アラート詳細の確認] をクリックして項目を無視することもできますが、これによりデータの不整合が発生し、ビジネスにリスクをもたらす可能性があります。詳細については、「事前チェックの問題」をご参照ください。問題を解決した後、事前チェックを再度実行してください。

  8. [購入] ページで設定を行い、[購入して開始] をクリックします。

    • (オプション) [リソースグループ設定] で、DTS インスタンスのリソースグループを選択します。リソースグループを指定しない場合、[デフォルトのリソースグループ] が使用されます。

    • (オプション) DTS 同期リンクの仕様を選択します。仕様が高いほど同期速度は速くなりますが、コストも高くなります。デフォルト値は large です。詳細については、「データ同期リンクの仕様」をご参照ください。

    • 利用規約を読んで選択します。

    購入が完了すると、同期タスクが開始されます。タスクの進行状況は、データ同期タスクページで確認できます。

  9. 順方向同期タスクの [ステータス][実行中] に変わるのを待ちます。次に、下の逆方向タスクの [タスクの設定] をクリックします。

  10. 上記の手順に従ってリモート同期タスクを設定します。

    [事前チェック合格率] が 100% になったら、設定は完了です。[リストに戻る] をクリックできます。

  11. データ同期リストで、順方向と逆方向の両方の同期タスクの [実行ステータス][実行中] であれば、双方向データ同期は正常に設定されています。

よくある質問

  • 接続テストが失敗するのはなぜですか?

    次の項目を確認してください:

    • アカウントまたはパスワードが正しくありません。Redis パスワードの形式は user:password です。詳細については、「インスタンスのログオン方法」をご参照ください。

    • ソースデータベースがオンプレミスのデータセンターまたはサードパーティのクラウドにある場合、ネットワークファイアウォールが存在する可能性があります。DTS からのアクセスを許可するには、対応するリージョンの DTS サーバーの IP アドレスをファイアウォールの許可リストに手動で追加する必要があります。詳細については、「DTS サーバーの CIDR ブロックを許可リストに追加する」をご参照ください。

  • タスクが失敗するのはなぜですか?

    • 移行中に、スケーリング、インスタンスタイプの変更、ソースまたはターゲットデータベースのエンドポイントの変更などの操作を行うと、タスクが失敗します。タスクを再設定する必要があります。

    • 宛先インスタンスのメモリが不足している場合、またはクラスターインスタンスでシャードがメモリ制限に達した場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。

    • 宛先インスタンスで TDE (透過的データ暗号化) が有効になっている場合、DTS を使用したデータ移行はサポートされません。

  • データの不整合が発生するのはなぜですか?

    • ソースデータベースの一部のキーに有効期限ポリシー (Expire) がある場合、宛先データベースのキーの数がソースよりも少なくなることがあります。これは、期限切れのキーがすぐに削除されなかった可能性があるためです。

    • List オブジェクトの場合, DTS は PSYNC または SYNC を使用してデータを転送する際に、宛先の既存データに対して FLUSH 操作を実行しません。これにより、データが重複する可能性があります。

    • 完全移行中にネットワークが中断された場合、DTS は完全移行を複数回リトライすることがあります。このプロセスでは、同じ名前のキーが自動的に上書きされます。リトライ中にソースデータベースで削除操作が実行された場合、そのコマンドは宛先に同期されません。これにより、宛先データベースのデータがソースよりも多くなる可能性があります。

  • 事前チェックで Redis のエビクションポリシーが noeviction に設定されているかどうかを確認するのはなぜですか?

    Tair (Redis OSS-compatible) のデフォルトのデータエビクションポリシー (maxmemory-policy) は volatile-lru です。宛先データベースのメモリが不足すると、データのエビクションがトリガーされ、ソースデータベースと宛先データベースの間でデータの不整合が発生する可能性があります。これはタスクの通常の操作には影響しません。この問題を回避するには、宛先データベースのデータエビクションポリシーを noeviction に設定します。このポリシーを使用して宛先データベースのメモリが不足すると、データの書き込みが失敗し、タスクも失敗します。ただし、宛先データベースはエビクションによってデータを失うことはありません。データエビクションポリシーの詳細については、「Redis データエビクションポリシー」をご参照ください。

  • なぜ CROSSSLOT Keys in request don't hash to the same slot エラーが発生するのですか?

    宛先インスタンスがクラスターアーキテクチャを使用している場合、Redis は単一のコマンドでのクロススロット操作をサポートしていません。リンクが中断されるのを防ぐために、DTS 同期中は単一のキーに対してのみ操作を実行することをお勧めします。

  • どのコマンドが同期でサポートされていますか?

    • 次のコマンドがサポートされています:

      • APPEND

      • BITOP, BLPOP, BRPOP, and BRPOPLPUSH

      • DECR, DECRBY, and DEL

      • EVAL, EVALSHA, EXEC, EXPIRE, and EXPIREAT

      • GEOADD and GETSET

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

      • INCR, INCRBY, and INCRBYFLOAT

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

      • MOVE, MSET, MSETNX, and MULTI

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

      • RENAME, RENAMENX, RESTORE, RPOP, RPOPLPUSH, RPUSH, and RPUSHX

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

      • ZADD, ZINCRBY, ZINTERSTORE, ZREM, ZREMRANGEBYLEX, ZUNIONSTORE, ZREMRANGEBYRANK, and ZREMRANGEBYSCORE

      • SWAPDB and UNLINK (These two commands can be synchronized only if the engine version of the source Redis instance is 4.0)

      • XADD, XCLAIM, XDEL, XAUTOCLAIM, XGROUP CREATECONSUMER, and XTRIM

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

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