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

Data Transmission Service:自主管理 Redis から Redis インスタンスへのデータ同期

最終更新日:Apr 23, 2026

Data Transmission Service (DTS) は、Redis データベースの一方向データ同期をサポートしており、アクティブ地理的冗長性やジオディザスタリカバリなどのユースケースに最適です。このトピックでは、Elastic Compute Service (ECS) インスタンス上の自主管理 Redis データベースから Redis インスタンスへのデータ同期タスクを設定する方法を例として説明します。

警告

データ同期タスクを設定した後は、ソースデータベースまたはターゲットデータベースのアーキテクチャタイプ (例:マスター/レプリカアーキテクチャからクラスターアーキテクチャへの変更) を変更しないでください。変更すると、データ同期タスクは失敗します。

前提条件

  • ソース Redis データベースのバージョンが 2.8、3.0、3.2、4.0、または 5.0 であること。

    説明

    バージョン間でデータを同期する場合 (古いバージョンから新しいバージョンへのみサポート)、まず互換性を確認する必要があります。たとえば、テスト用に従量課金の Redis インスタンスを作成できます。テスト完了後、インスタンスをリリースするか、課金方法をサブスクリプションに変更できます。

  • ターゲット Redis インスタンスには、ソースデータベースが使用する容量よりも多くの利用可能なストレージ容量が必要です。

  • ソース Redis データベースがクラスターアーキテクチャを使用している場合、クラスター内の各ノードは psync コマンドを実行でき、同じ接続パスワードを持っている必要があります。

  • ソース Redis インスタンスのレプリカノードとマスターノード間のレプリケーションタイムアウトパラメーター repl-timeout のデフォルト値は 60 秒です。config set repl-timeout 600 コマンドを実行して、値を 600 秒に設定します。ソースデータベースに大量のデータが含まれている場合は、repl-timeout パラメーターの値を増やすことができます。

注意事項

  • 初回完全データ同期は、ソースデータベースとターゲットデータベースの両方のリソースを消費し、サーバー負荷を増加させます。データベースのトラフィックが多い場合や、低スペックのサーバーで実行している場合、データベースへの負荷が増大し、利用できなくなることさえあります。開始前にパフォーマンスへの影響を評価し、オフピーク時間帯にデータ同期タスクを実行することを推奨します。

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

    説明

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

  • ソースデータベースの redis.conf ファイルで bind パラメーターが設定されている場合、このパラメーターを ECS インスタンスの内部 IP アドレスに設定します。これにより、DTS がソースデータベースに接続できるようになります。

  • タスクの安定性を確保するため、ソース Redis データベースの redis.conf ファイルにある repl-backlog-size パラメーターの値を増やすことを推奨します。

  • 同期の品質を確保するため、DTS はソース Redis データベースに DTS_REDIS_TIMESTAMP_HEARTBEAT というプレフィックスを持つキーを挿入し、更新タイムスタンプを記録します。

  • Redis クラスター間でデータ同期を設定する場合、ソースクラスターで FLUSHDB または FLUSHALL コマンドを実行しないでください。実行すると、ソースとターゲット間でデータに不整合が生じます。

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

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

    説明

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

  • 同期中に、シャードの追加や削除などの自主管理 Redis データベースのスケールアウトまたはスケールイン、あるいはメモリの増設などの仕様変更を行った場合は、タスクを再設定する必要があります。データ整合性を確保するため、タスクを再設定する前に、ターゲット Redis インスタンスに同期されたデータをクリアすることを推奨します。

  • 同期中に、自主管理 Redis データベースの接続エンドポイントが変更された場合は、タスクを再設定する必要があります。

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

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

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

  • ターゲットインスタンスがクラスターアーキテクチャを使用しており、そのシャードのいずれかがメモリ制限に達した場合、またはターゲットインスタンスのストレージ容量が不足している場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。
  • 同期の品質を確保するため、DTS はソースデータベースに DTS_REDIS_TIMESTAMP_HEARTBEAT というプレフィックスを持つキーを挿入し、更新タイムスタンプを記録します。ソースデータベースがクラスターアーキテクチャを使用している場合、DTS はこのキーを各シャードに挿入します。このキーは同期中にフィルタリングされ、タスク完了後に有効期限が切れます。

  • ソースデータベースが読み取り専用インスタンスである場合、または DTS が使用するアカウントに書き込み (SETEX) 権限がない場合、報告されるレイテンシが不正確になることがあります。

  • ターゲット Redis インスタンスで TDE (透過的データ暗号化) が有効になっている場合、DTS を使用してデータを同期することはできません。

  • 特定の条件により、ターゲットへの完全データ再同期がトリガーされ、データの不整合につながる可能性があります。これらの条件には以下が含まれます:

    • ソースまたはターゲット Redis の一時的な接続中断により、再開可能な転送が失敗した場合。

    • ソースまたはターゲット Redis でプライマリ/セカンダリ切り替えまたはフェイルオーバーが発生した場合。

    • ソースまたはターゲット Redis の接続エンドポイントが変更された場合。

    • DTS インスタンスの同期オブジェクトを変更した場合。

  • Tair (Redis OSS 互換) インスタンスで Transport Layer Security (TLS) 暗号化が有効になっている場合、SSL 暗号化を使用して DTS に接続する必要があります。TLSv1.3 はサポートされていません。Alibaba Cloud インスタンスAlibaba Cloud インスタンスに設定した場合、SSL が有効なTair (Redis OSS 互換) インスタンスには接続できません。

  • タスクが失敗した場合、DTS サポートスタッフが 8 時間以内に復旧を試みます。復旧中、タスクを再起動したり、パラメーターを調整したりすることがあります。

    説明

    変更されるのは DTS タスクのパラメーターのみで、データベースのパラメーターは変更されません。調整される可能性のあるパラメーターには、「インスタンスパラメーターの変更」に記載されているものが含まれます。

課金

同期タイプ

料金

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

無料です。

増分データ同期

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

サポートされる同期トポロジ

  • 1 対 1 の一方向同期

  • 1 対多の一方向同期

  • カスケード型一方向同期

同期トポロジとその使用上の注意点の詳細については、「データ同期トポロジ」をご参照ください。

サポートされる同期コマンド

  • 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、RESTORE、RPOP、RPOPLPUSH、RPUSH、RPUSHX

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

  • ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCORE

  • SWAPDB、UNLINK (ソース Redis インスタンスがバージョン 4.0 以降の場合のみサポート)

  • XADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、XTRIM

説明
  • PUBLISH コマンドは同期されません。

  • EVAL または EVALSHA で呼び出される Lua スクリプトについて、DTS は増分データ同期中にターゲットでスクリプトが正常に実行されることを保証できません。これは、ターゲットが実行結果を明示的に返さないためです。

  • List データ型の場合、DTS は sync または psync でデータを再送信する際に、ターゲット上の既存データをクリアしません。これにより、データが重複する可能性があります。

操作手順

  1. データ同期インスタンスを購入します。詳細については、「データ同期タスクの購入」をご参照ください。

    説明

    購入ページで、ソースとターゲットの両方のインスタンスタイプを Redis に設定します。

  2. Data Transmission Service コンソールにログインします。

    説明

    Data Management (DMS) コンソールにリダイレクトされた場合は、右下隅の jiqiren アイコンをクリックし、次に 返回旧版 アイコンをクリックして、以前のバージョンの DTS コンソールに戻ります。

  3. 左側のナビゲーションウィンドウで、データ同期 をクリックします。

  4. 同期タスクページの上部で、ターゲットインスタンスが配置されているリージョンを選択します。

  5. 購入したデータ同期インスタンスを見つけ、[操作] 列の [タスクの設定] をクリックします。

  6. ソースインスタンスとターゲットインスタンスを設定します。

    セクション

    パラメーター

    説明

    N/A

    同期タスク名

    DTS は自動的にタスク名を生成します。識別しやすいように、わかりやすい名前を指定することを推奨します。

    ソースインスタンスの詳細

    インスタンスタイプ

    [ECS インスタンス上の自己構築データベース] を選択します。

    インスタンスリージョン

    データ同期インスタンスを購入したときに選択したソースリージョンです。このパラメーターは変更できません。

    ECS インスタンス ID

    データソースとして機能する ECS インスタンスの ID を選択します。

    説明

    ソース Redis データベースがクラスターアーキテクチャを使用している場合は、マスターノードが存在する ECS インスタンスの ID を選択します。

    データベースタイプ

    Redis に固定されています。

    インスタンスモード

    ソース Redis データベースのアーキテクチャに基づいて、スタンドアロン または クラスター を選択します。

    ポート

    ソース Redis データベースのサービスポートを入力します。デフォルト値は 6379 です。この例では、7000 が入力されています。

    説明

    ソース Redis データベースがクラスターアーキテクチャを使用している場合は、マスターノードのサービスポートを入力します。

    データベースパスワード

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

    説明

    このパラメーターはオプションです。パスワードが設定されていない場合は、このパラメーターを空のままにすることができます。

    宛先インスタンスの詳細

    インスタンスタイプ

    [Redis インスタンス] を選択します。

    インスタンスリージョン

    データ同期インスタンスを購入したときに選択したターゲットリージョンです。このパラメーターは変更できません。

    インスタンス ID

    ターゲット Redis インスタンスの ID を選択します。

    データベースパスワード

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

    説明

    パスワードは <user>:<password> 形式である必要があります。たとえば、ユーザー名が admin でパスワードが Rp829dlwa の場合、admin:Rp829dlwa と入力します。

  7. ページの右下隅にある [ホワイトリストの設定と次へ] をクリックします。

    説明
    • ソースデータベースまたはターゲットデータベースが、ApsaraDB RDS for MySQLApsaraDB for MongoDB などの Alibaba Cloud データベースインスタンス、または ECS インスタンス上の自己管理データベースである場合、DTS は対応するリージョンの DTS サーバーの IP CIDR ブロックをデータベースインスタンスのホワイトリストまたは ECS インスタンスのセキュリティグループに自動的に追加します。手動で追加する必要はありません。詳細については、「DTS サーバーの IP アドレス」をご参照ください。

    • DTS タスクが完了またはリリースされた後、追加された DTS サーバーの IP CIDR ブロックを手動で削除することを推奨します。

  8. ターゲット内の既存オブジェクトの処理モードと同期オブジェクトを設定します。

    設定

    説明

    既存オブジェクトの処理モード

    • エラーの事前チェックと報告:ターゲットデータベースが空であるかを確認します。空の場合は事前チェックに合格します。空でない場合は事前チェックに失敗し、データ同期タスクは開始されません。

    • エラーを無視して続行:ターゲットデータベースが空であるかの確認をスキップします。

      警告

      エラーを無視して続行 を選択すると、同期中にソースデータベースのデータがターゲットデータベースの同じキーを持つデータを上書きします。このオプションは注意して使用してください。

    同期オブジェクト

    • ソースオブジェクト ボックスで、同期したいデータベースをクリックし、 アイコンをクリックして 選択中のオブジェクト ボックスに移動します。

    • 同期オブジェクトとしてデータベースを選択できます。個々のキーは選択できません。

    マッピング名の編集

    このシナリオではオブジェクトの名前を変更することはできません。

    DMS でのオンライン DDL 中に一時テーブルをレプリケート

    ソースデータベースが Data Management (DMS) を使用してオンライン DDL 変更を実行する場合、オンライン DDL 変更によって生成された一時テーブルデータを同期するかどうかを選択できます。

    • :オンライン DDL 操作によって生成された一時テーブルのデータを同期します。

      説明

      オンライン DDL 操作中に一時テーブルで大量のデータが生成されると、データ同期タスクが遅延する可能性があります。

    • いいえ:一時テーブルのデータを同期しません。ソースデータベースの元の DDL データのみが同期されます。

      説明

      このオプションは、ターゲットデータベースでテーブルロックを引き起こす可能性があります。

    接続リトライ期間

    DTS がソースまたはターゲットデータベースに接続できない場合、デフォルトで 720 分 (12 時間) 接続をリトライします。カスタムのリトライ期間を指定することもできます。指定された期間内に DTS がデータベースに再接続すると、データ同期タスクは自動的に再開されます。それ以外の場合、タスクは失敗します。

    説明

    接続リトライ期間中も DTS インスタンスは課金されます。ビジネス要件に基づいてカスタムのリトライ期間を指定するか、ソースおよびターゲットデータベースインスタンスがリリースされた後、速やかに DTS インスタンスをリリースすることを推奨します。

  9. 上記の設定を完了したら、次へ をクリックします。

  10. 初期同期メソッドは [完全データ + 増分データ] に固定されています。

    説明
  11. 設定が完了したら、ページの右下隅にある [事前チェックして開始] をクリックします。

    説明
    • データ同期タスクが開始される前に、DTS は事前チェックを実行します。タスクは事前チェックに合格した後にのみ開始されます。

    • 事前チェックが失敗した場合は、失敗した項目の横にある 提示 アイコンをクリックして詳細を表示します。

      • 詳細に基づいて問題を修正し、再度事前チェックを実行できます。

      • 警告項目を修正する必要がない場合は、無視 または [無視して再度事前チェック] を選択して警告項目をスキップし、再度事前チェックを実行することもできます。

  12. 事前チェック ダイアログボックスに 事前チェック完了 と表示されたら、事前チェック ダイアログボックスを閉じます。その後、同期ジョブが開始されます。

  13. タスクが初期化されるのを待ちます。ステータスが 同期中 に変わります。

    説明

    タスクのステータスは データ同期 ページで確認できます。