Redis インスタンス間の移行
タイプ | 説明 |
ソースデータベースの制限事項 | 帯域幅の要件:ソースデータベースをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。そうでない場合、データ移行速度に影響が出ます。 ソースデータベースは Tair (Redis OSS-compatible) バージョン 2.8 にはできません。 ソースデータベースの操作制限: 完全なデータ移行のみを実行する場合 (移行タイプ が 完全データ移行 にのみ設定されている場合)、ソースインスタンスに新しいデータを書き込まないでください。そうしないと、ソースインスタンスと宛先インスタンス間でデータ不整合が発生します。リアルタイムのデータ整合性を維持するには、完全なデータ移行と増分データ移行の両方を選択してください。 Basic Edition の Redis インスタンスからクラスタアーキテクチャの Redis インスタンスへの移行に関する操作制限:Redis クラスターでは、単一のコマンドで単一のスロットしか操作できません。ソースデータベースで複数キー操作を実行し、それらのキーが同じスロットにないか、複数のスロットにまたがる場合、次のエラーが報告されます: CROSSSLOT Keys in request don't hash to the same slot
DTS 移行中は、リンク中断を防ぐために単一キー操作のみを実行してください。 移行の品質を確保するため、DTS はソースデータベースにプレフィックス DTS_REDIS_TIMESTAMP_HEARTBEAT を持つキーを挿入し、更新タイムスタンプを記録します。ソースデータベースがクラスタアーキテクチャを使用している場合、DTS はこのキーを各シャードに挿入します。このキーは移行中にフィルターで除外され、移行タスクの完了後に有効期限切れとなります。 ソースデータベースが読み取り専用インスタンスであるか、DTS アカウントに書き込み (SETEX) 権限がない場合、報告されるレイテンシが不正確になることがあります。 ソースインスタンスが、[ストレージメディア] が [永続メモリ] である Tair (Enterprise Edition) インスタンスの場合、appendonly パラメーターが yes に設定されていることを確認してください。詳細については、「手順」をご参照ください。 ソースが Redis グローバル分散キャッシュ機能を使用する Tair (Enterprise Edition) インスタンスのサブインスタンスである場合、インスタンスの制限により、DTS は選択されたサブインスタンスからのみデータを移行できます。DTS は他のサブインスタンスからデータを移行することはできません。
|
その他の制限事項 | ソースデータベースとターゲットデータベースは、容量ストレージタイプを使用する Tair (Redis OSS-compatible) Enterprise Edition インスタンスにはできません。 移行中に、ソースまたは宛先の Redis インスタンスがスケールアウトまたはスケールイン (シャードの追加や削除など)、スペックアップまたはスペックダウン (メモリの増加、仕様や構成の変更、ゾーンの移行など) されたり、エンドポイントとポート番号が変更されたりすると、DTS は継続的なログデータと正しい接続情報を取得できなくなる可能性があります。これにより、移行タスクが中断されます。この場合、タスクを再構成する前に、宛先の Redis インスタンスに同期されたデータをクリアしてください。 ソースインスタンスまたは宛先インスタンスが自己管理 Redis インスタンス (アクセス方法 が Alibaba Cloud インスタンス ではない場合) であり、かつ移行中にそのエンドポイントが変更された場合 (たとえば、インスタンスの移行やプライマリ/セカンダリのスイッチオーバーが原因で)、移行タスクでリトライ、遅延、失敗、さらにはデータ不整合が発生する可能性があります。移行タスクのステータスを速やかに確認してください。DTS タスクがリトライ、遅延、失敗などで異常な場合は、移行タスクを再設定してください。 宛先の Redis インスタンスでインスタンスの移行 (プライマリ/セカンダリの切り替えを含む) がトリガーされた後、データがメモリにのみ書き込まれ、セカンダリデータベースには書き込まれない場合があります。これにより、データ損失が発生する可能性があります。 ターゲットデータベースがメモリ不足になり、データエビクションがトリガーされると、ソースデータベースとターゲットデータベースの間でデータ不整合が発生する可能性があります。これは、Tair (Redis OSS-compatible) のデフォルトのデータエビクションポリシー (maxmemory-policy) が volatile-lru であるためです。ただし、これはタスクの正常な動作には影響しません。 これを防ぐには、ターゲットデータベースのデータエビクションポリシーを noeviction に設定します。ターゲットデータベースがメモリ不足になると、データの書き込みは失敗し、タスクも失敗しますが、エビクションによるデータ損失は発生しません。 EVAL または EVALSHA を使用して呼び出される Lua スクリプトの場合、宛先が実行結果を明示的に返さないため、DTS は増分データ移行中にスクリプトが正常に実行されたかどうかを確認できません。 List オブジェクトの場合、重複データが表示されることがあります。これは、DTS が psync または sync を使用してデータを転送する際に、宛先の既存データに対して Flush 操作を実行しないためです。 ソースデータベースの一部のキーが有効期限 (expire) ポリシーを使用している場合、宛先データベースのキーの数 (info コマンドで表示した場合など) がソースデータベースよりも少なくなることがあります。これは、期限切れのキーが速やかに削除されない可能性があるためです。
説明 有効期限ポリシーがない、または有効期限が切れていないキーの数は、ソースデータベースと宛先データベースで同じです。 互換性を確保するために、ソースデータベースと宛先データベースで同じ Redis バージョンを使用してください。古いバージョンから新しいバージョンへの移行はサポートされています。
説明 新しいバージョンから古いバージョンにデータを移行すると、互換性の問題が発生する可能性があります。 Redis インスタンスの アクセス方法 が パブリック IP アドレス の場合、インスタンスモード を クラスター にすることはできません。 データ移行を実行する前に、ソースデータベースと宛先データベースのパフォーマンスを評価してください。また、データ移行はオフピーク時間に実行してください。そうしないと、完全なデータ移行中に DTS がソースデータベースと宛先データベースの読み取りおよび書き込みリソースの一部を占有し、データベース負荷が増加する可能性があります。 完全なデータ移行には同時 INSERT 操作が含まれるため、宛先データベースのテーブルに断片化が発生します。そのため、完全移行が完了した後、宛先データベースのテーブルが使用するストレージ領域は、ソースインスタンスよりも大きくなります。 DTS は 7 日以内に失敗した移行タスクの回復を試みます。そのため、ビジネスを宛先インスタンスに切り替える前に、必ずタスクを終了またはリリースするか、revoke コマンドを使用して DTS が宛先インスタンスへのアクセスに使用するアカウントの書き込み権限を取り消してください。これにより、タスクが自動的に回復された後、ソースデータが宛先インスタンスのデータを上書きするのを防ぎます。 宛先インスタンスがクラスタアーキテクチャを使用しており、シャードがメモリ制限に達した場合、または宛先インスタンスのストレージ領域が不足している場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。 ソースまたは宛先インスタンスで TDE (透過的データ暗号化) が有効になっている場合、DTS を使用してデータを移行することはできません。 データ移行中に次のいずれかの状況が発生した場合、完全データが宛先に再移行され、データ不整合が発生する可能性があります。 ソースまたは宛先の Redis インスタンスで一時的な切断が発生し、再開可能な転送に失敗する。 ソースまたは宛先の Redis インスタンスでプライマリ/セカンダリの切り替えまたはフェールオーバーが発生する。 ソースまたは宛先の Redis インスタンスのエンドポイントが変更される。
お使いの Tair (Redis OSS-compatible) インスタンスで TLS (Transport Layer Security) 暗号化が有効になっている場合、DTS には SSL 暗号化 を使用して接続する必要があります ([TLSv1.3] はサポートされていません)。 現在、SSL が有効になっている Tair (Redis OSS-compatible) インスタンスへの接続に、Alibaba Cloud インスタンス メソッドを使用することはできません。 移行インスタンスに完全タスクと増分タスクの両方が含まれている場合、インスタンスを再起動すると、DTS が両方のタスクを再実行する可能性があります。 インスタンスに障害が発生した場合、DTS ヘルプデスクは 8 時間以内にインスタンスの回復を試みます。回復プロセス中に、インスタンスの再起動やパラメーターの調整などの操作が実行される場合があります。
説明 パラメーターが調整される際、DTS インスタンスのパラメーターのみが変更され、データベース内のパラメーターは変更されません。変更される可能性のあるパラメーターには、「インスタンスパラメーターの変更」で説明されているものが含まれますが、これらに限定されません。
|
特殊なケース | ソースデータベースが自社運用 Redis インスタンスの場合: 移行中にソースデータベースでプライマリ/セカンダリの切り替えが発生すると、移行タスクは失敗します。 DTS によって報告されるレイテンシは、宛先データベースに移行された最後のデータのタイムスタンプと現在のタイムスタンプを比較することによって計算されます。ソースデータベースで長期間 DML 操作が実行されない場合、レイテンシ情報が不正確になることがあります。タスクが高いレイテンシを表示する場合は、ソースデータベースで DML 操作を実行してレイテンシ情報を更新できます。
説明 データベース全体を移行することを選択した場合は、ハートビートテーブルを作成することもできます。ハートビートテーブルは、毎秒データを定期的に更新または書き込みます。
|