Search
ソースデータベースが自己管理型 Redis インスタンスや Tair (Redis OSS-compatible) インスタンスなどの Redis データベースである場合、同期タスクを設定する前に、このトピックの注意事項と制限事項をご確認ください。これにより、同期タスクが期待どおりに実行されるようになります。
Redis ソースの同期ソリューションの概要
ご利用の同期タスクに関する注意事項と制限事項を、以下のソリューションに基づいて確認してください。
Redis インスタンス間の双方向同期
タイプ | 説明 |
ソースデータベースの制限事項 | 同期の品質を確保するため、Data Transmission Service (DTS) は、更新タイムスタンプを記録するために、プレフィックスが DTS_REDIS_TIMESTAMP_HEARTBEAT のキーをソースデータベースに挿入します。ソースデータベースがクラスタアーキテクチャを使用している場合、DTS はこのキーを各シャードに挿入します。このキーは同期中に除外され、同期タスクの終了後に有効期限が切れます。 ソースインスタンスが読み取り専用インスタンスである場合、または DTS アカウントに書き込み (SETEX) 権限がない場合、報告されるレイテンシーが不正確になる可能性があります。 リンクの安定性を確保するため、redis.conf 設定ファイルの repl-backlog-size パラメーターの値を増やしてください。 ソースデータベースで FLUSHDB または FLUSHALL コマンドを実行しないでください。実行した場合、ソースデータベースと宛先データベース間でデータ不整合が発生します。 ソースデータベースの一部のキーが有効期限 (expire) ポリシーを使用している場合、宛先データベースのキー数がソースデータベースよりも少なくなることがあります。これは、期限切れのキーが常に迅速に削除されるとは限らないためです。`info` などのコマンドを実行してキー数を確認できます。 Basic Edition の Redis インスタンスからクラスタアーキテクチャの Redis インスタンスにデータを同期する場合、制限事項が適用されます。Redis クラスターでは、1 つのコマンドで操作できるスロットは 1 つだけです。ソースインスタンスで複数キー操作を実行し、それらのキーが同じスロットにないか、複数のスロットにまたがる場合、次のエラーが発生します。 CROSSSLOT Keys in request don't hash to the same slot
DTS の同期中は、リンクの中断を防ぐために単一キー操作のみを実行してください。 双方向同期は、Tair (Redis OSS-compatible) Enterprise Edition インスタンス間でのみサポートされます。サポートされるインスタンスは次のとおりです。 ソースインスタンスが Tair (Enterprise Edition) インスタンスで、その [ストレージメディア] が [永続メモリ] である場合は、appendonly パラメーターが yes に設定されていることを確認してください。詳細については、「手順」をご参照ください。 ソースが、Redis グローバル分散キャッシュ機能を備えたTair (Enterprise Edition) インスタンスのサブインスタンスである場合、DTS は選択されたサブインスタンスのデータのみを同期できます。これは、インスタンスと機能の制限によるものです。他のサブインスタンスのデータは同期できません。
|
その他の制限事項 | 同期中に、ソースまたは宛先の Redis インスタンスでスケールアウト、スケールイン、インスタンス設定の変更、エンドポイントやポートの変更などの操作を行うと、同期タスクが中断される可能性があります。これは、DTS が継続的なログデータと正しい接続情報を取得できなくなるためです。中断が発生した場合は、タスクを再設定する前に、宛先の Redis インスタンスに同期されたデータをクリアしてください。これにより、データ整合性が確保されます。 ソースまたは宛先インスタンスが自己管理型 Redis インスタンス (アクセス方法 が Alibaba Cloud インスタンス ではない場合) で、インスタンスの移行やアクティブ/スタンバイ切り替えなどのシナリオで同期中にそのエンドポイントが変更されると、同期タスクで再試行、遅延、失敗、さらにはデータ不整合が発生する可能性があります。同期タスクのステータスを速やかに確認してください。DTS タスクで再試行、遅延、失敗などの問題が発生した場合は、同期タスクを再設定してください。 宛先の Redis インスタンスでフェイルオーバーなどのインスタンス移行がトリガーされた後、データがメモリにのみ書き込まれ、セカンダリデータベースには書き込まれない場合があります。これにより、データ損失が発生する可能性があります。 互換性を確保するため、ソースデータベースと宛先データベースのバージョンを同じにするか、古いバージョンから新しいバージョンに同期してください。新しいバージョンから古いバージョンに同期すると、互換性の問題が発生する可能性があります。 初期完全データ同期中、DTS はソースデータベースと宛先データベースの読み取りおよび書き込みリソースを一部消費します。これにより、データベースの負荷が増加する可能性があります。データ同期を開始する前に、ソースデータベースと宛先データベースのパフォーマンスを評価してください。データ同期はオフピーク時間帯に実行することを推奨します。 DTS の同期中は、DTS 以外のソースから宛先データベースにデータを書き込まないでください。書き込んだ場合、ソースデータベースと宛先データベース間でデータ不整合が発生します。 DTS の正方向同期タスクとリモート同期タスクの両方が同じテーブルを同期し、かつ正方向同期タスクがそのテーブルの完全データと増分データの両方を同期する場合、リモート同期タスクはそのテーブルの増分データのみを同期します。 宛先インスタンスがクラスタアーキテクチャで、そのシャードの 1 つがメモリ制限に達した場合、または宛先インスタンスのストレージ容量が不足している場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。 デフォルトでは、データの削除方法を指定する maxmemory-policy パラメーターは、Tair (Redis OSS-compatible) インスタンスでは volatile-lru に設定されています。宛先インスタンスのメモリが不足している場合、データ削除 (eviction) によりソースインスタンスと宛先インスタンス間でデータ不整合が発生する可能性があります。この場合、データ同期タスクは停止しません。 データ不整合を防ぐため、宛先インスタンスの maxmemory-policy を noeviction に設定することを推奨します。これにより、宛先インスタンスのメモリが不足した場合にデータ同期タスクは失敗しますが、宛先インスタンスでのデータ損失を防ぐことができます。 ソースまたは宛先インスタンスで Transparent Data Encryption (TDE) が有効になっている場合、DTS を使用してデータを同期することはできません。 データ同期中に以下のいずれかの状況が発生した場合、完全データが宛先に再同期され、データ不整合が発生する可能性があります。 ソースまたは宛先の Redis インスタンスで一時的な接続が発生し、同期がブレークポイントから再開できなくなる。 ソースまたは宛先の Redis インスタンスでフェイルオーバーが発生する。 ソースまたは宛先の Redis インスタンスのエンドポイントが変更される。 DTS インスタンスの同期オブジェクトが変更される。
ご利用の Tair (Redis OSS-compatible) インスタンスで TLS (Transport Layer Security) 暗号化が有効になっている場合、SSL 暗号化 を使用して DTS に接続する必要があります (TLSv1.3 はサポートされていません)。現在、Alibaba Cloud インスタンス メソッドを使用して、SSL が有効になっている Tair (Redis OSS-compatible) インスタンスに接続することはできません。 同期インスタンスに完全データ同期タスクと増分データ同期タスクの両方が含まれている場合、インスタンスの再起動後に DTS が両方のタスクを再実行することがあります。 インスタンスに障害が発生した場合、DTS ヘルプデスクは 8 時間以内にインスタンスの回復を試みます。回復プロセス中に、インスタンスの再起動やパラメーターの調整などの操作が実行されることがあります。
説明 パラメーターが調整される場合、DTS インスタンスのパラメーターのみが変更され、データベース内のパラメーターは変更されません。変更される可能性のあるパラメーターには、「インスタンスパラメーターの変更」で説明されているものが含まれますが、これらに限定されません。
|
Redis インスタンス間の単方向同期
タイプ | 説明 |
ソースデータベースの制限事項 | Data Transmission Service (DTS) は、同期品質を確保するため、更新タイムスタンプを記録する目的で、プレフィックスが DTS_REDIS_TIMESTAMP_HEARTBEAT のキーをソースデータベースに挿入します。ソースデータベースがクラスタアーキテクチャを採用している場合、DTS はこのキーを各シャードに挿入します。このキーは同期中にフィルターされ、同期タスクの終了後に有効期限が切れます。 ソースインスタンスが読み取り専用インスタンスである場合、または DTS アカウントに書き込み (SETEX) 権限がない場合、レポートされるレイテンシーが不正確になる場合があります。 リンクの安定性を確保するには、redis.conf 構成ファイルの repl-backlog-size パラメーターの値を大きくしてください。 ソースデータベースの一部のキーが有効期限ポリシーを使用している場合、ターゲットデータベースのキーの数がソースデータベースよりも少なくなることがあります。これは、期限切れのキーが速やかに削除されるとは限らないためです。キーの数は、`info` などのコマンドを実行して確認できます。 Basic Edition の Redis インスタンスからクラスタアーキテクチャの Redis インスタンスへデータを同期する際には、制限事項があります。Redis クラスターでは、1 つのコマンドで操作できるスロットは 1 つのみです。ソースインスタンスで複数キーの操作を実行した際に、それらのキーが同一スロット内にない、または複数のスロットにまたがる場合、次のエラーが発生します: CROSSSLOT Keys in request don't hash to the same slot
DTS 同期中は、リンクの中断を避けるため、単一キーの操作のみを実行してください。 ソースインスタンスが、[ストレージメディア] が [永続メモリ] の Tair (Enterprise Edition) インスタンスである場合、appendonly パラメーターが yes に設定されていることを確認してください。 詳細については、「手順」をご参照ください。 ソースが、Redis グローバル分散キャッシュ 機能を持つ Tair (Enterprise Edition) インスタンスのサブインスタンスである場合、DTS は選択されたサブインスタンスからのみデータを同期できます。これは、インスタンスと機能の制限によるものです。他のサブインスタンスのデータは同期できません。
|
その他の制限事項 | ソースインスタンスが自己管理型 Redis インスタンスの場合、スレーブノードとマスターノード間のレプリケーションタイムアウト期間を指定する repl-timeout パラメーターを 600 秒に設定します。コマンド config set repl-timeout 600 を使用できます。ソースデータベースに大量のデータが含まれている場合は、必要に応じて repl-timeout パラメーターの値を増やしてください。 同期中に、ソースまたは宛先の Redis インスタンスでスケールアウト、スケールイン、インスタンス構成の変更、エンドポイントやポートの変更などの操作を行うと、同期タスクが中断される可能性があります。これは、DTS が継続的なログデータと正しい接続情報を取得できなくなるためです。中断が発生した場合は、タスクを再設定する前に、宛先 Redis インスタンスに同期されたデータをクリアしてください。これにより、データ整合性が確保されます。 ソースまたは宛先インスタンスが自己管理型 Redis インスタンスの場合 (アクセス方法 が Alibaba Cloud インスタンス ではない場合)、インスタンスの移行やアクティブ/スタンバイの切り替えなどのシナリオで同期中に接続アドレスが変更されると、同期タスクで再試行、遅延、失敗、さらにはデータ不整合が発生する可能性があります。同期タスクのステータスを速やかに確認してください。DTS タスクで再試行、遅延、失敗などの問題が発生した場合は、同期タスクを再設定してください。 宛先 Redis インスタンスでフェールオーバーなどのインスタンス移行がトリガーされた後、データがメモリにのみ書き込まれ、セカンダリデータベースには書き込まれない場合があります。これにより、データ損失が発生する可能性があります。 互換性を確保するために、ソースデータベースと宛先データベースのバージョンを同じにするか、古いバージョンから新しいバージョンに同期してください。新しいバージョンから古いバージョンに同期すると、互換性の問題が発生する可能性があります。 初期完全データ同期中、DTS はソースデータベースと宛先データベースの読み取りおよび書き込みリソースを消費します。これにより、データベース負荷が増加する可能性があります。データ同期を開始する前に、ソースデータベースと宛先データベースのパフォーマンスを評価してください。データ同期はオフピーク時間帯に実行することを推奨します。 DTS の同期中は、DTS 以外のソースから宛先データベースにデータを書き込まないでください。書き込んだ場合、ソースデータベースと宛先データベース間でデータ不整合が発生します。 宛先インスタンスがクラスターアーキテクチャで、そのシャードの 1 つがメモリ制限に達した場合、または宛先インスタンスのストレージ容量が不足している場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。 デフォルトでは、データのエビクション方法を指定する maxmemory-policy パラメーターは、Tair (Redis OSS-compatible) インスタンスでは volatile-lru に設定されています。宛先インスタンスのメモリが不足している場合、データエビクションにより、ソースインスタンスと宛先インスタンス間でデータ不整合が発生する可能性があります。この場合、データ同期タスクは停止しません。 データ不整合を防ぐために、宛先インスタンスの maxmemory-policy を noeviction に設定することを推奨します。これにより、宛先インスタンスのメモリが不足している場合にデータ同期タスクは失敗しますが、宛先インスタンスのデータ損失を防ぐことができます。 ソースまたは宛先インスタンスで Transparent Data Encryption (TDE) が有効になっている場合、DTS を使用してデータを同期することはできません。 データ同期中に次のいずれかの状況が発生した場合、完全データが宛先に再同期され、データ不整合が発生する可能性があります。 ソースまたは宛先の Redis インスタンスで一時的な接続障害が発生し、同期がブレークポイントから再開できなくなった場合。 ソースまたは宛先の Redis インスタンスでフェールオーバーが発生した場合。 ソースまたは宛先の Redis インスタンスのエンドポイントが変更された場合。 DTS インスタンスの同期オブジェクトが変更された場合。
ご利用の Tair (Redis OSS-compatible) インスタンスで TLS (Transport Layer Security) 暗号化が有効になっている場合、SSL 暗号化 接続を使用して DTS に接続する必要があります ([TLSv1.3] はサポートされていません)。現在、Alibaba Cloud インスタンス メソッドを使用して SSL が有効になっている Tair (Redis OSS-compatible) インスタンスに接続することはできません。 同期インスタンスに完全データ同期タスクと増分データ同期タスクの両方が含まれている場合、インスタンスの再起動後に DTS が両方のタスクを再実行することがあります。 インスタンスに障害が発生した場合、DTS ヘルプデスクは 8 時間以内にインスタンスの復旧を試みます。復旧プロセス中に、インスタンスの再起動やパラメーターの調整などの操作が実行されることがあります。
説明 パラメーターが調整される際、変更されるのは DTS インスタンスのパラメーターのみで、データベース内のパラメーターは変更されません。変更される可能性のあるパラメーターには、「インスタンスパラメーターの変更」で説明されているものが含まれますが、これらに限定されません。
|
ありがとうございます。フィードバックを受け取りました。