Data Transmission Service (DTS) を使用して、Tair (Redis OSS 互換) インスタンス間のデータを最小限のダウンタイムで移行できます。DTS は完全データ移行と増分データ移行をサポートしているため、移行が完了するまでソースインスタンスを実行し続けることができます。
前提条件
開始する前に、以下を確認してください。
-
ソースとターゲットの Tair (Redis OSS 互換) インスタンスが必要です。インスタンスの作成については、「ステップ 1:インスタンスの作成」をご参照ください。
-
ターゲットインスタンスには、ソースインスタンスで使用されているストレージを上回る十分な空きストレージが必要です。
-
ソースインスタンスのアカウントには読み取り権限、ターゲットインスタンスのアカウントには読み取り権限と書き込み権限が必要です。
サポートされているデータベースバージョンについては、「移行ソリューションの概要」をご参照ください。
移行タイプの選択
ダウンタイムの許容範囲に基づいて、移行タイプを選択してください。
|
移行タイプ |
仕組み |
使用する場面 |
|
[完全データ移行] |
ソースから宛先へのすべての既存データのコピーは無料です。宛先の[アクセス方法]が[パブリック IP アドレス]に設定されている場合、インターネットトラフィック料金が発生します。詳細については、「料金概要」をご参照ください。 |
メンテナンスウィンドウを確保でき、移行中にソースへの書き込みを停止できる場合。 |
|
[完全データ移行と増分データ移行] |
既存データをコピーした後、カットオーバーまで書き込みを継続的にレプリケートします。増分フェーズは課金対象です。詳細については、「課金概要」をご参照ください。 |
ダウンタイムをゼロまたはほぼゼロにする必要がある場合。本番ワークロードに推奨します。 |
完全データ移行のみを選択した場合は、移行中にソースインスタンスへのすべての書き込みを停止してください。スナップショットの取得後に行われたソースへの書き込みはターゲットに反映されないため、データの不整合が発生します。
制限事項
移行タスクを開始する前に、これらの制限事項を確認してください。
ソースインスタンスの制限事項:
-
ソースインスタンスのバージョンは 2.8 にできません。
-
ソースインスタンスをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。帯域幅が不足していると、移行速度が低下します。
-
Data Transmission Service (DTS) は、
DTS_REDIS_TIMESTAMP_HEARTBEATというプレフィックスが付いたハートビートキーをソースインスタンスに書き込みます (クラスターデプロイメントの場合、シャードごとに 1 つ)。このキーは移行中にフィルターされ、タスク完了後に有効期限が切れます。 -
ソースが ストレージメディア:永続メモリ の Tair (Enterprise Edition) インスタンスである場合、移行前に
appendonlyパラメーターをyesに設定してください。詳細については、「AOF 永続化の無効化」をご参照ください。 -
ソースが読み取り専用であるか、アカウントに
SETEX権限がない場合、移行のレイテンシー報告が不正確になる可能性があります。 -
クラスターアーキテクチャ:各 Redis コマンドは単一のスロットで動作します。ソースでのクロススロット操作により、以下のエラーが発生して移行タスクが中断します:
CROSSSLOT Keys in request don't hash to the same slot移行中は、一度に 1 つのキーを操作してください。
宛先インスタンスの制限事項:
-
Tair (Redis OSS-Compatible) Enhanced Edition のストレージ最適化インスタンスは、ソースまたは宛先インスタンスとして使用できません。
-
宛先インスタンスのバージョンは、ソースバージョンと同じか、それ以降である必要があります。
-
宛先インスタンスで透過的データ暗号化 (TDE) が有効になっている場合、DTS はデータを移行できません。
-
宛先インスタンスのクラスターのシャードでメモリまたはストレージが不足した場合、移行タスクはメモリ不足 (OOM) エラーで失敗します。
-
デフォルトのエビクションポリシー (
maxmemory-policy) はvolatile-lruです。宛先インスタンスのメモリが不足すると、データの不整合が発生する可能性があります。エビクションポリシーをnoevictionに設定すると、DTS はデータをサイレントに削除するのではなく、明示的に書き込みを失敗させます。詳細については、「Tair (Redis OSS-Compatible) はデフォルトでどのようにデータをエビクトしますか?」をご参照ください。
その他の制限事項:
-
DTS は書き込み前に宛先インスタンスの既存の LIST データをフラッシュしません。宛先インスタンスに既に LIST キーが存在する場合、レコードが重複する可能性があります。
-
EVALおよびEVALSHALua スクリプト:DTS は増分移行中に宛先インスタンスでの実行を確認できません。 -
有効期限ポリシーを持つキーは、有効期限が切れてもすぐに削除されない場合があるため、宛先インスタンスのキー数はソースよりも少ない場合があります。
-
自己管理の Redis データベースの[アクセス方法]が[パブリック IP アドレス]の場合、[インスタンスモード]を[クラスター]に設定できません。
-
TLS:Tair インスタンスで TLS が有効な場合、[SSL 暗号化] 経由で接続します。 TLSv1.3 はサポートされていません。また、SSL が有効なインスタンスを [Alibaba Cloud インスタンス] として接続することはできません。
移行中にインスタンス構成 (仕様、ポート番号) を変更すると、タスクが中断されます。構成変更を行った後は、移行先のデータを削除し、移行タスクを再設定してください。
-
DTS は、失敗した移行タスクを最大 7 日間再試行します。ワークロードを宛先インスタンスに切り替える前に、失敗した DTS タスクを停止または解放してください。そうしないと、再開されたタスクが古いソースデータで宛先インスタンスのデータを上書きする可能性があります。
-
データ移行インスタンスに完全データ移行タスクと増分データ移行タスクの両方が含まれている場合、インスタンスの再起動後に DTS が両方のタスクを再開する可能性があります。
-
インスタンスの実行が失敗した場合、DTS のテクニカルサポートは 8 時間以内に復旧を試みます。復旧中、インスタンスが再起動されたり、DTS インスタンスのパラメーターが調整されたりすることがあります (データベースのパラメーターは変更されません)。調整される可能性があるパラメーターについては、「インスタンスパラメーターの変更」をご参照ください。
-
以下のイベントにより、完全な再移行が発生し、データの不整合につながる可能性があります:
-
一時的な接続に起因する再開可能なアップロードの失敗
-
ソースまたは宛先インスタンスでのプライマリ/セカンダリの切り替えまたはフェイルオーバー
-
ソースまたは宛先インスタンスでのエンドポイントの変更
-
セルフマネージド Redis のみ:
-
移行中にソースでプライマリ/セカンダリの切り替えが行われると、タスクが失敗します。
-
移行のレイテンシーは、最後に移行されたレコードのタイムスタンプと現在のソース時刻を比較して計算されます。ソースで長期間 DML アクティビティがない場合、レイテンシーの報告が不正確になる可能性があります。レイテンシー報告の精度を保つには、データベース全体を移行する際に、毎秒書き込みを行うハートビートテーブルを作成してください。
増分データ移行の対応コマンド
DTS は、増分データ移行中に以下の Redis コマンドをサポートしています。
-
APPEND -
BITOP、BLPOP、BRPOP、BRPOPLPUSH -
DECR、DECRBY、DEL -
EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT -
FLUSHALL、FLUSHDB -
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、PUBLISH -
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 -
XADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、XTRIM
移行タスクの作成
ステップ 1:データ移行ページへの移動
Data Transmission Service (DTS) コンソールまたは DMS コンソールのいずれかを使用します。
DTS コンソール
DMS コンソール
手順は、DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
ステップ 2:ソースデータベースとターゲットデータベースの設定
-
[タスクの作成] をクリックして、タスク設定ページを開きます。
-
次の表のパラメーターを使用して、ソースデータベースとターゲットデータベースを設定します。
カテゴリ
パラメーター
説明
N/A
タスク名
DTS タスクの分かりやすい名前を入力します。名前は一意である必要はありません。
ソースデータベース
既存の接続を選択
ドロップダウンから登録済みのデータベースインスタンスを選択すると、以下のフィールドが自動入力されます。インスタンスが登録されていない場合は、手動でフィールドを入力します。
データベースタイプ
[Tair/Redis] を選択します。
[アクセス方法]
[Alibaba Cloud インスタンス] を選択します。
インスタンスリージョン
ソースの Tair (Redis OSS 互換) インスタンスのリージョンを選択します。
Alibaba Cloud アカウント間でのデータレプリケーション
同一アカウント内の移行の場合は、[いいえ] を選択します。
[インスタンス ID]
ソースインスタンスの ID を選択します。
認証方法
認証方法を選択します。この例では、[パスワードログイン] を使用します。[アカウント + パスワードログイン] には Redis 6.0 以降が必要です。[パスワードレスログイン] の場合は、まずインスタンスでパスワードなしのアクセスを有効にする必要があります。詳細については、「パスワードなしのアクセスを有効にする」をご参照ください。
データベースパスワード
ソースインスタンスのパスワードを入力します (読み取り権限が必要です)。デフォルトアカウントの場合は、パスワードのみを入力します。カスタムアカウントの場合は、
<account>:<password>の形式を使用します。例:testaccount:Test1234。パスワードが設定されていない場合は、空のままにします。忘れたパスワードをリセットするには、「パスワードの変更またはリセット」をご参照ください。暗号化
[非暗号化] または [SSL 暗号化] を選択します。SSL を使用するセルフマネージド Redis の場合は、[CA 証明書] をアップロードし、[CA キー] を入力します。
ターゲットデータベース
既存の接続を選択
ソースと同様です。登録済みのインスタンスを選択するか、手動でフィールドを入力します。
データベースタイプ
[Tair/Redis] を選択します。
[アクセス方法]
[Alibaba Cloud インスタンス] を選択します。
インスタンスリージョン
ターゲットの Tair (Redis OSS 互換) インスタンスのリージョンを選択します。
Alibaba Cloud アカウント間でのデータレプリケーション
同一アカウント内の移行の場合は、[いいえ] を選択します。
[インスタンス ID]
ターゲットインスタンスの ID を選択します。
認証方法
ソースと同じオプションです。
データベースパスワード
ターゲットインスタンスのパスワードを入力します (読み取りおよび書き込み権限が必要です)。ソースと同じパスワード形式を使用します。
暗号化
[非暗号化] または [SSL 暗号化] を選択します。
-
[接続テストを実行して続行] をクリックします。
DTS サーバーの CIDR ブロックを、ソースインスタンスとターゲットインスタンスのセキュリティ設定に追加します。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。[Alibaba Cloud インスタンス] アクセスを使用しないセルフマネージドデータベースの場合、[DTS サーバーの CIDR ブロック] ダイアログで [接続テスト] をクリックします。
ステップ 3:オブジェクトの選択と詳細設定
-
[オブジェクトの設定] ページで、次のパラメーターを設定します。
パラメーター
説明
[移行タイプ]
-
Redis Open-Source Edition インスタンス:完全データ移行 + 増分データ移行 または 完全データ移行 を選択します。データ整合性を確保するために、完全データ移行 + 増分データ移行 を選択することを推奨します。DTS アカウントにソースに対する
SYNCまたはPSYNC権限がない場合は、完全データ移行 のみを選択します。 -
Tair (Enterprise Edition) インスタンス:要件に基づいて 完全データ移行 および/または 増分データ移行 を選択します。データ整合性を確保するために、両方を選択することを推奨します。
[競合キーの処理モード]
[事前チェックとエラー報告]:開始前にターゲットが空であることを確認し、空でない場合は事前チェックに失敗します。[エラーを無視して続行]:ターゲットが空であるかのチェックをスキップします。
警告一致するキーについては、ソースデータがターゲットデータを上書きするため、データが失われる可能性があります。
[ソースオブジェクト]
[ソースオブジェクト] リストから 1 つ以上のデータベースを選択し、矢印アイコンをクリックして [選択したオブジェクト] に移動させます。特定のキーを移行するには、[選択したオブジェクト] ボックスの データフィルタリング機能を使用します。
[選択したオブジェクト]
特定のターゲット DB (DB 0–DB 255) にマッピングしたり、キープレフィックスでフィルタリングしたりするには、[選択したオブジェクト] ボックス内のデータベースを右クリックし、[スキーマの編集] ダイアログを設定します。詳細については、「スキーマ マッピング」および「フィルター条件の設定」をご参照ください。
-
-
[次へ:詳細設定] をクリックし、以下を設定します:
パラメーター
説明
[タスクスケジューリング用の専用クラスター]
デフォルトでは、DTS は共有クラスターを使用します。移行の安定性を高めるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。
[接続失敗時の再試行時間]
接続失敗後に DTS が再試行する時間。有効な値:10~1,440 分。デフォルト:720 分。30 分以上に設定してください。この期間内に DTS が再接続した場合、タスクは再開されます。それ以外の場合、タスクは失敗します。
説明複数のタスクが同じソースまたはターゲットを共有する場合、最後に設定された再試行時間が優先されます。DTS は再試行中もインスタンスの課金対象となります。
[その他の問題に対する再試行時間]
DDL または DML の失敗後に DTS が再試行する時間。有効な値:1~1,440 分。デフォルトは 10 分です。10 分を超える値に設定することを推奨します。この値は [接続失敗時の再試行時間] よりも短くする必要があります。
[完全データ移行のスロットリングを有効にする]
完全移行のスループットを制限して、ソースとターゲットの負荷を軽減します。[ソースデータベースへの 1 秒あたりのクエリ数 (QPS)]、[完全データ移行の RPS]、および [完全移行のデータ移行速度 (MB/s)] を設定します。[移行タイプ] に [完全データ移行] が含まれている場合にのみ利用可能です。
[増分データ移行のスロットリングを有効にする]
増分移行のスループットを制限します。[増分データ移行の RPS] と [増分移行のデータ移行速度 (MB/s)] を設定します。[移行タイプ] に [増分データ移行] が含まれている場合にのみ利用可能です。
[ターゲットデータベースキーの有効期限を延長]
ターゲットに移行されたキーに追加の有効期限を設定します。アプリケーションが
expire、pexpire、expireat、またはpexpireatなどのコマンドを使用して、切り替え前にキーが期限切れになるのを防ぐ場合に使用します。説明これにより、分散ロックの解放が遅れる可能性があります。
[環境タグ]
任意。インスタンスにラベルを付けるタグを選択します。
[ETL の設定]
[はい]アラート通知設定を選択して、抽出、変換、ロード (ETL) ルールを設定します。コードエディターにデータ処理ステートメントを入力します。詳細は、「データ移行またはデータ同期タスクでの ETL の設定」をご参照ください。スキップする場合は、[いいえ] を選択します。
[監視とアラート]
タスクが失敗した場合や移行のレイテンシーがしきい値を超えた場合にアラートを受信するには、[はい] を選択します。アラートのしきい値と通知設定を構成します。詳細については、「監視とアラートの設定」をご参照ください。
-
[次のステップ:データ検証] をクリックして、データ検証を設定します (任意)。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 4:事前チェックの実行
-
[次へ:タスク設定を保存して事前チェック] をクリックします。
保存する前に対応する API パラメーターを表示するには、ボタンにカーソルを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
-
事前チェックが完了するのを待ちます。移行タスクを開始するには、事前チェックに合格する必要があります。
-
チェック項目が失敗した場合は、失敗した項目の横にある [詳細の表示] をクリックして問題を修正し、[再度事前チェック] をクリックします。
-
アラートがトリガーされた場合:無視できない場合は、問題を修正して再チェックします。無視できる場合は、[アラート詳細の確認] > [無視] > [OK] > [再度事前チェック] をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
-
ステップ 5:インスタンスの購入と開始
-
[成功率] が [100%] になったら、[次へ:インスタンスの購入] をクリックします。
-
[インスタンスの購入] ページで、以下を設定します:
セクション
パラメーター
説明
[新しいインスタンスクラス]
[リソースグループ]
移行インスタンスのリソースグループです。デフォルト:[デフォルトリソースグループ]。詳細については、「リソース管理とは」をご参照ください。
[インスタンスクラス]
必要な移行速度に基づいてインスタンスクラスを選択します。詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。
-
[Data Transmission Service (従量課金) サービス規約] を読み、チェックボックスにチェックを入れて同意します。
-
[購入して開始] をクリックし、確認ダイアログで [OK] をクリックします。
データ移行ページで進捗状況を確認できます。
タスクに完全データ移行と増分データ移行の両方が含まれている場合、タスクリストには [増分データ移行] として表示されます。
移行後
移行が実行中 (または完全移行のみの場合は完了後) になったら、ソースインスタンスを廃止する前に、次の手順を完了してください。
1. データ整合性の検証
ターゲットインスタンスでキー数を比較し、データをスポットチェックしてください。なお、期限切れのキーにより、ターゲットのキー数がわずかに少なくなる場合があります。
タスクの設定時にデータ検証を設定した場合、DTS コンソールで検証結果を確認してください。
2. アプリケーショントラフィックの切り替え
アプリケーションの接続文字列を、ターゲットインスタンスを指すように更新してください。増分移行の場合、切り替え前に移行遅延がゼロまたはほぼゼロになるまで待機してください。これにより、ターゲットが完全に追いついたことを確認できます。
3. DTS 移行タスクの停止とリリース
アプリケーションがターゲットインスタンスで正常に動作することを確認した後、DTS 移行タスクを停止してください。DTS は失敗したタスクを最大 7 日間再試行するため、タスクをリリースすることで、タスクが再開してターゲット上のデータを上書きするのを防ぎます。