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

Data Transmission Service:Tairインスタンス間の双方向同期の設定

最終更新日:Oct 31, 2024

このトピックでは、Data Transmission Service (DTS) を使用して、ApsaraDB for Redis Enhanced Edition (Tair) インスタンスとクラウドディスクを使用するTairインスタンスを含むTairインスタンス間の双方向同期を構成する方法について説明します。 データ同期機能は、アクティブな地理的冗長性や地理的災害復旧などのシナリオに適用できます。

前提条件

  • クラウドディスクを使用してRedis 5.0を実行するソースとターゲットのTairインスタンスまたはTairインスタンスが作成されます。 詳細については、「手順1: インスタンスの作成」および「手順1: Tairインスタンスの作成」をご参照ください。

  • ソースインスタンスとターゲットインスタンスのストレージ容量は同じです。

制限事項

カテゴリ

説明

ソースデータベースの制限

  • 双方向データ同期タスクは、ローカルディスクを使用するTairインスタンス、クラウドディスクを使用するTairダイナミックランダムアクセスメモリ (DRAM) ベースインスタンス、クラウドディスクを使用するTair永続メモリ最適化インスタンスのみをサポートします。

  • 同期品質を確保するために、Data Transmission Service (DTS) は、ソースデータベースにDTS_REDIS_TIMESTAMP_HEARTBEATというプレフィックスが付いたキーを追加します。 このキーは、データが宛先データベースに同期される時刻を記録するために使用されます。 ソースデータベースがクラスターアーキテクチャにデプロイされている場合、DTSはこのキーを各シャードに追加します。 キーはデータ同期中に除外されます。 データ同期タスクが完了すると、キーは期限切れになります。

  • ソースデータベースが読み取り専用データベースである場合、またはデータ同期タスクの実行に使用されるソースデータベースアカウントにSETEXコマンドを実行する権限がない場合、報告されるレイテンシが不正確になる可能性があります。

  • データ同期の安定性を確保するために、redis.confファイルのrepl-backlog-sizeパラメーターの値を大きくすることを推奨します。

  • ソースデータベースでFLUSHDBまたはFLUSHALLコマンドを実行しないことを推奨します。 いずれかのコマンドを実行すると、ソースデータベースとターゲットデータベースの間でデータの不整合が発生する可能性があります。

  • ソースデータベースの追加専用ファイル (AOF) ログ機能を有効にする必要があります。

  • ソースデータベースの特定のキーに対して有効期限ポリシーが有効化されている場合、これらのキーは、有効期限が切れた後の最も早い機会に削除されない場合があります。 したがって、宛先データベース内のキーの数は、ソースデータベース内のキーの数よりも少なくてもよい。 INFOコマンドを実行して、ターゲットデータベース内のキーの数を表示できます。

その他の制限

  • データ同期中に、ソースTairインスタンスのシャード数が増減した場合、またはメモリ容量のスケールアップなどのデータベース仕様を変更した場合、データ同期タスクを再設定する必要があります。 データの一貫性を確保するために、データ同期タスクを再構成する前に、ターゲットTairインスタンスに同期されたデータをクリアすることを推奨します。

  • 互換性を確保するには、ターゲットデータベースのバージョンがソースデータベースのバージョンと同じかそれ以降である必要があります。 ターゲットデータベースのバージョンがソースデータベースのバージョンよりも前の場合、データベースの互換性の問題が発生する可能性があります。

  • 最初の完全データ同期中、DTSはソースデータベースとターゲットデータベースの読み取りおよび書き込みリソースを使用します。 これにより、データベースサーバーの負荷が増加する可能性があります。 データを同期する前に、ソースデータベースとターゲットデータベースのパフォーマンスに対するデータ同期の影響を評価します。 オフピーク時にデータを同期することを推奨します。

  • データ同期中は、DTSのみを使用してデータをターゲットデータベースに書き込むことをお勧めします。 これにより、ソースデータベースとターゲットデータベース間のデータの不一致が防止されます。

  • 双方向データ同期インスタンスには、順方向同期タスクと逆方向同期タスクが含まれます。 インスタンスを設定またはリセットするときに、順方向同期タスクと逆方向同期タスクの両方でオブジェクトを同期する場合は、次のルールが適用されます。

    • オブジェクトの完全データと増分データの両方を同期できるのは、タスクの1つだけです。 もう1つのタスクは、オブジェクトの増分データのみを同期します。

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

  • データ同期中に、データレコードが同じキーを有するが異なる値を有する場合、最新のキー値を有するデータレコードは、競合するレコードを上書きする。

  • ターゲットインスタンスがクラスターアーキテクチャにデプロイされ、ターゲットインスタンスのシャードが使用するメモリ量が上限に達した場合、またはターゲットインスタンスの使用可能なストレージスペースが不十分な場合、メモリ不足 (OOM) によりデータ同期タスクが失敗します。

  • ターゲットデータベースのメモリが不足しているためにデータの削除がトリガーされた場合、ソースデータベースとターゲットデータベースの間でデータの不整合が発生する可能性があります。 これは、ターゲットデータベースのデフォルトのデータ削除ポリシー (maxmemory-policy) がvolatile-lruに設定されているためです。 ただし、これはデータ同期タスクには影響しません。

    この場合、ターゲットデータベースのデータ削除ポリシーをnoevictionに設定することを推奨します。 ターゲットデータベースのメモリが不十分な場合、DTSはデータの書き込みに失敗し、データ同期タスクは失敗します。 ただし、データの削除によりターゲットデータベースでデータが失われることはありません。

    説明

    データ削除ポリシーの詳細については、「ApsaraDB for Redisはデフォルトでデータをどのように消去しますか?」をご参照ください。

  • 送信元または送信先のTairインスタンスに対して透過的なデータ暗号化 (TDE) 機能が有効になっている場合、DTSを使用してデータを同期することはできません。

  • データ同期中に、ソースRedisデータベースで一時的な接続が発生したために再開可能なアップロードが失敗した場合、完全なデータがターゲットデータベースに再同期される可能性があります。 これにより、ソースデータベースとターゲットデータベース間でデータの不一致が発生する可能性があります。

サポートされている双方向同期トポロジ

DTSは、2つのTairインスタンス間でのみ双方向同期をサポートします。 DTSは、3つ以上のTairインスタンス間の双方向同期をサポートしていません。

同期できるコマンド

  • APPEND

  • BITOP、BLPOP、BRPOP、およびBRPOPLPUSH

  • DECR、DECRFY、およびDEL

  • EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT

  • GEOADDとGETSET

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

  • INCR、INCRBY、およびINCRBYFLOAT

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

  • 移動、MSET、MSETNX、およびマルチ

  • 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、およびSUUNIONSTORE

  • ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNION STORE、ZREMRANGEBYRANK、およびZREMRANGEBYSCORE

  • XADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、およびXTRIM

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

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

  • SYNCまたはPSYNCコマンドを実行してLISTタイプのデータを転送すると、DTSはターゲットデータベースの既存のデータをクリアしません。 結果として、宛先データベースは、重複するデータレコードを含み得る。

データベースアカウントに必要な権限

データベース

権限と権限付与方法

ソースTairインスタンス

ソースおよびターゲットTairインスタンスのデータベースアカウントには、読み取りおよび書き込み権限が必要です。 アカウントに権限を付与する方法の詳細については、「データベースアカウントの作成と管理」をご参照ください。

宛先Tairインスタンス

手順

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

    1. データ管理 (DMS) コンソールにログインします。

    2. 上部のナビゲーションバーで、DTSをクリックします。

    3. 左側のナビゲーションウィンドウで、DTS (DTS) > データ同期を選択します。

    説明
  2. データ同期タスクの右側で、データ同期インスタンスが存在するリージョンを選択します。

    説明

    新しいDTSコンソールを使用する場合は、上部のナビゲーションバーでデータ同期インスタンスが存在するリージョンを選択する必要があります。

  3. ソースデータベースとターゲットデータベースを設定します。 下表にパラメーターを示します。

    警告

    ソースデータベースとターゲットデータベースを設定した後、ページに表示される制限を読むことを推奨します。 そうしないと、タスクが失敗したり、データの不一致が発生します。

    セクション

    パラメーター

    説明

    非該当

    タスク名

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

    ソースデータベース

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

    使用するデータベースインスタンス。 ビジネス要件に基づいて、既存のインスタンスを使用するかどうかを選択できます。

    • 既存のインスタンスを選択すると、DTSはデータベースのパラメーターを自動的に入力します。

    • 既存のインスタンスを選択しない場合は、次のデータベース情報を設定する必要があります。

    データベースタイプ

    移行元ディスクのタイプを設定します。 このパラメーターをApsaraDB for Redis Enhanced Edition (Tair) に設定します。

    アクセス方法

    ソースデータベースのアクセス方法。 [Alibaba Cloudインスタンス] を選択します。

    インスタンスリージョン

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

    Alibaba Cloudアカウント全体でのデータの複製

    Alibaba Cloudアカウント間でデータを同期するかどうかを指定します。 この例では、[いいえ] が選択されています。

    インスタンスID

    ソースTairインスタンスのID。

    データベースパスワード

    ソースデータベースのパスワード。 データベースアカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。

    説明

    データベースのパスワードは <user >:< password> 形式です。 たとえば、ソースTairインスタンスへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。

    宛先データベース

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

    使用するデータベースインスタンス。 ビジネス要件に基づいて、既存のインスタンスを使用するかどうかを選択できます。

    • 既存のインスタンスを選択すると、DTSはデータベースのパラメーターを自動的に入力します。

    • 既存のインスタンスを選択しない場合は、次のデータベース情報を設定する必要があります。

    データベースタイプ

    ターゲットデータベースのタイプ。 このパラメーターをApsaraDB for Redis Enhanced Edition (Tair) に設定します。

    アクセス方法

    ターゲットデータベースのアクセス方法。 [Alibaba Cloudインスタンス] を選択します。

    インスタンスリージョン

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

    インスタンスID

    宛先TairインスタンスのID。

    データベースパスワード

    ターゲットデータベースのパスワード。 データベースアカウントに必要な権限の詳細については、このトピックの「データベースアカウントに必要な権限」をご参照ください。

    説明

    たとえば、ターゲットTairインスタンスへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。

  4. ページの下部で、接続性をテストして続行をクリックします。

    ソースまたはターゲットデータベースがAlibaba Cloudデータベースインスタンス (ApsaraDB RDS for MySQLインスタンスやApsaraDB for MongoDBインスタンスなど) の場合、DTSは自動的にDTSサーバーのCIDRブロックをインスタンスのホワイトリストに追加します。 ソースデータベースまたはターゲットデータベースがElastic Compute Service (ECS) インスタンスでホストされている自己管理データベースの場合、DTSサーバーのCIDRブロックがECSインスタンスのセキュリティグループルールに自動的に追加されます。ECSインスタンスがデータベースにアクセスできることを確認する必要があります。 データベースが複数のECSインスタンスにデプロイされている場合、DTSサーバーのCIDRブロックを各ECSインスタンスのセキュリティグループルールに手動で追加する必要があります。 ソースデータベースまたはターゲットデータベースが、データセンターにデプロイされているか、サードパーティのクラウドサービスプロバイダーによって提供される自己管理データベースである場合、DTSサーバーのCIDRブロックをデータベースのホワイトリストに手動で追加して、DTSがデータベースにアクセスできるようにする必要があります。 詳細については、「DTSサーバーのCIDRブロックの追加」トピックの「DTSサーバーのCIDRブロック」セクションをご参照ください。

    警告

    DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを同期する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。

  5. 同期するオブジェクトと詳細設定を設定します。

    パラメーター

    説明

    同期タイプ

    デフォルトでは、増分データ同期が選択されています。 [フルデータ同期] も選択する必要があります。 事前チェックが完了すると、DTSは選択したオブジェクトの履歴データをソースデータベースからターゲットデータベースに同期します。 履歴データは、その後の増分同期の基礎となる。

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

    • エラーの事前チェックと報告: ターゲットデータベースにデータが存在するかどうかを確認します。 ターゲットデータベースにデータが存在しない場合、事前チェックがパスされます。 ターゲットデータベースにデータが存在する場合、事前チェック中にエラーが返され、データ同期タスクを開始できません。

    • エラーを無視して続行: ターゲットデータベース内のオブジェクトデータの存在検査 チェックアイテム。

      警告

      エラーを無視して続行 を選択した場合、移行元データベースのデータレコードが移行先データベースの同じキーを持つデータレコードを上書きするため、移行先データベースでデータ損失が発生する可能性があります。 作業は慎重に行ってください。

    同期トポロジ

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

    ソースオブジェクト

    ソースオブジェクト セクションから1つ以上のオブジェクトを選択し、向右アイコンをクリックして 選択中のオブジェクト セクションにオブジェクトを追加します。

    説明

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

    [選択済みオブジェクト]

    DB 0からDB 255にデータを同期するデータベースを選択したり、同期するデータをプレフィックスでフィルタリングしたりする場合は、オブジェクト名マッピング機能またはフィルタリング機能を使用できます。 選択中のオブジェクト セクションで、同期するデータベースを右クリックします。 スキーマの編集 ダイアログボックスで、パラメーターを設定します。 詳細については、「オブジェクト名のマップ」および「フィルター条件の設定」をご参照ください。

    説明

    一度に複数のオブジェクト名をマップすることはできません。

  6. [次へ:詳細設定] をクリックして詳細設定を構成します。

    パラメーター

    説明

    Set Alerts

    データ同期タスクのアラートを設定するかどうかを指定します。 タスクが失敗するか、同期レイテンシが指定されたしきい値を超えると、アラート送信先は通知を受け取ります。 有効な値:

    失敗した接続のリトライ時間範囲の指定

    失敗した接続のリトライ時間範囲。 データ同期タスクの開始後にソースデータベースまたはターゲットデータベースの接続に失敗した場合、DTSはその時間範囲内ですぐに接続を再試行します。 有効な値: 10 ~ 1440 単位は分です。 デフォルト値: 720 このパラメーターを30より大きい値に設定することを推奨します。 DTSが指定された時間範囲内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ同期タスクを再開します。 それ以外の場合、データ同期タスクは失敗します。

    説明
    • ソースまたはターゲットデータベースが同じである複数のデータ同期タスクに対して異なるリトライ時間範囲を指定した場合、最も短いリトライ時間範囲が優先されます。

    • DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。

    宛先データベースキーの有効期限の延長

    ソースデータベースからターゲットデータベースに同期されたキーが有効なままになるまでの延長期間。 単位は秒です。 次のコマンドなどの特定のコマンドを使用する場合は、データの一貫性を確保するために、このパラメーターを600に設定することを推奨します。

    EXPIRE key seconds
    PEXPIRE key milliseconds
    EXPIREAT key timestamp
    PEXPIREAT key timestampMs

    ETLの設定

    抽出、変換、および読み込み (ETL) 機能を有効にするかどうかを指定します。 詳細については、「ETLとは何ですか? 」をご参照ください。有効な値:

  7. タスク設定を保存し、事前チェックを実行します。

    • 関連するAPI操作を呼び出してDTSタスクを設定するときに指定するパラメーターを表示するには、ポインターを 次:タスク設定の保存と事前チェック に移動し、OpenAPI パラメーターのプレビュー をクリックします。

    • パラメーターを表示または表示する必要がない場合は、ページ下部の 次:タスク設定の保存と事前チェック をクリックします。

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

    • データ同期タスクが事前チェックに失敗した場合は、失敗した各項目の横にある [詳細の表示] をクリックします。 チェック結果に基づいて原因を分析した後、問題のトラブルシューティングを行います。 次に、プレチェックを再実行します。

    • 事前チェック中にアイテムに対してアラートがトリガーされた場合:

      • アラートアイテムを無視できない場合は、失敗したアイテムの横にある [詳細の表示] をクリックして、問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。

      • アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。 次に、[再度事前チェック] をクリックして、事前チェックを再度実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

  8. 成功率100% になるまで待ちます。 次に、[次へ: インスタンスの購入] をクリックします。

  9. 購入ページで、データ同期インスタンスの課金方法とインスタンスクラスのパラメーターを設定します。 下表にパラメーターを示します。

    セクション

    パラメーター

    説明

    新しいインスタンスクラス

    Billing Method

    • サブスクリプション: データ同期インスタンスの作成時にサブスクリプションの料金を支払います。 サブスクリプションの課金方法は、長期使用の場合、従量課金の課金方法よりも費用対効果が高くなります。

    • 従量課金: 従量課金インスタンスは1時間ごとに課金されます。 従量課金方法は、短期使用に適しています。 従量課金データ同期インスタンスが不要になった場合は、インスタンスをリリースしてコストを削減できます。

    リソースグループの設定

    データ同期インスタンスが属するリソースグループ。 デフォルト値: Default resource group 詳細については、「リソース管理とは 」をご参照ください。

    インスタンスクラス

    DTSは、同期速度が異なるインスタンスクラスを提供します。 ビジネス要件に基づいてインスタンスクラスを選択できます。 詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。

    サブスクリプション期間

    サブスクリプションの課金方法を選択した場合は、サブスクリプション期間と作成するデータ同期インスタンスの数を指定します。 サブスクリプション期間は、1〜9か月、1年、2年、3年、または5年とすることができる。

    説明

    このパラメーターは、サブスクリプション の課金方法を選択した場合にのみ使用できます。

  10. データ伝送サービス (従量課金) サービス規約を読んで選択します。

  11. [購入して開始] をクリックします。 表示されるダイアログボックスで、OK をクリックします。

    タスクリストでタスクの進行状況を確認できます。

  12. 初期同期が完了し、順方向のデータ同期タスクがランニング状態になります。

    説明

    [オブジェクトの構成と詳細設定] ステップで [フルデータ同期][増分データ同期] の両方が選択されている場合、[データ同期] ページの [データ同期タスク] セクションに [増分データ同期] が表示されます。

  13. 順方向同期タスクの下にある逆方向同期タスクを見つけ、タスクの設定をクリックします。

  14. 37ステップを実行して逆同期タスクを設定する

    重要
    • 逆方向同期タスクに設定する必要があるパラメーターの数は、順方向同期タスクの場合よりも少なくなります。 画面上の指示に従ってパラメータを設定します。

    • 逆方向同期タスク内のソースTairインスタンスは、順方向同期タスク内の宛先Tairインスタンスであり、逆方向同期タスク内の宛先Tairインスタンスは、順方向同期タスク内のソースTairインスタンスである。 データベースの名前、アカウント、パスワードなど、インスタンス情報の一貫性を確認する必要があります。

  15. 成功率100% になるまで待ちます。 [戻る] をクリックします。

  16. 順方向同期タスクと逆方向同期タスクの両方が実行中状態になるまで待ちます。 双方向同期が設定されています。