Data Transmission Service (DTS) を使用して、ある Alibaba Cloud アカウントから別のアカウントに Tair (Redis OSS-compatible) インスタンスを移行します。完全移行と増分移行の両方をサポートしており、移行中もサービスを継続して実行できます。
前提条件
開始する前に、以下を確認してください。
-
宛先となる Tair (Redis OSS-compatible) インスタンスが存在すること。その利用可能なストレージ容量は、ソースインスタンスの使用済みストレージ容量を超えている必要があります。
-
ソースインスタンスと宛先インスタンスで実行されている Redis のバージョンに互換性があること。下位バージョンから上位バージョンへの移行はサポートされています。上位バージョンから下位バージョンへの移行は、互換性の問題を引き起こす可能性があります。
-
サポートされているバージョンの組み合わせについては、「データ移行シナリオの概要」をご参照ください。
仕組み
アカウント間の移行には、2 つの Alibaba Cloud アカウントからの操作が必要です。
-
ソースアカウントのオーナー:Alibaba Cloud 管理コンソールにログインし、RAM ロールを作成して、宛先アカウントにソース Redis インスタンスへのアクセス権限を付与します。詳細については、「アカウント間タスクの RAM 認可の設定」をご参照ください。
-
宛先アカウントのオーナー:Alibaba Cloud 管理コンソールにログインし、DTS 移行タスクを設定します (下記「操作手順」セクションで説明)。
課金
| 移行タイプ | インスタンス構成料金 | インターネットトラフィック料金 |
|---|---|---|
| 完全データ移行 | 無料 | 送信先の [アクセス方法] が [パブリック IP アドレス] の場合に課金されます。「課金概要」をご参照ください。 |
| 増分データ移行 | 課金されます。「課金概要」をご参照ください。 |
移行タイプ
| 移行タイプ | 説明 |
|---|---|
| 完全移行 | DTS は、ソースから宛先に既存のすべてのデータをコピーします。 |
| 増分移行 | 完全移行が完了した後、DTS はソースからの新しい書き込みを継続的に宛先にレプリケーションします。これを使用して、アプリケーションを中断することなく移行できます。 |
可能な場合は、両方を同時に実行してください。DTS アカウントがソースに対して SYNC/PSYNC 権限を持っていない場合は、完全移行のみを実行してください。
注意事項
移行を開始する前に、これらの制約を確認してください。
ソースデータベースの制限
-
帯域幅要件:ソースデータベースをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。そうでない場合、データ移行の速度に影響が出ます。
-
バージョン 2.8 の Tair (Redis OSS-compatible) はソースとしてサポートされていません。
-
完全移行のみを実行する場合 (増分移行なし)、データの不整合を防ぐために、移行中はソースへの書き込みを停止してください。
-
Basic Edition のソースからクラスタアーキテクチャの宛先に移行する場合、単一キーの操作のみを使用してください。スロットをまたぐ複数キーのコマンドは、以下を返します。
CROSSSLOT Keys in request don't hash to the same slot -
DTS は、更新タイムスタンプを追跡するために、プレフィックス
DTS_REDIS_TIMESTAMP_HEARTBEATを持つキーをソースに挿入します。ソースがクラスタアーキテクチャを使用している場合、このキーはすべてのシャードに挿入されます。このキーは移行中にフィルターされ、タスク終了後に期限切れになります。 -
ソースが読み取り専用インスタンスであるか、DTS アカウントに SETEX 権限がない場合、報告されるレイテンシが不正確になることがあります。
-
移行の安定性を向上させるために、
redis.confのrepl-backlog-sizeパラメーターの値を大きくしてください。 -
ソースの Tair Enterprise Edition インスタンスで [ストレージメディア] が [永続メモリ] に設定されている場合は、
appendonlyパラメーターをyesに設定してください。 詳細については、「手順」をご参照ください。 -
ソースがRedis グローバル分散キャッシュのサブインスタンスである場合、DTS はそのサブインスタンスのみを移行します。他のサブインスタンスはサポートされていません。
その他の制限
-
ソースも宛先も、Tair (Redis OSS-compatible) Enterprise Edition の容量ストレージインスタンスをサポートしていません。
-
どちらかのインスタンスで TDE (透過的データ暗号化) が有効になっている場合、DTS は移行を実行できません。
-
送信先がメモリ不足になると、デフォルトの立ち退きポリシー (
maxmemory-policy) はvolatile-lruとなり、データの不整合が発生する可能性があります。サイレントなデータ損失を防ぐには、送信先の立ち退きポリシーをnoevictionに設定します。noevictionでは、メモリが満杯になると書き込み操作は失敗してタスクが停止しますが、データがサイレントに削除されることはありません。ポリシーの詳細については、「Redis データエビクションポリシーの概要」をご参照ください。 -
宛先インスタンスがクラスタアーキテクチャを使用しており、いずれかのシャードがメモリ制限に達した場合、またはインスタンスのストレージ容量が不足した場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。
-
移行中にどちらかのインスタンスでスケーリング操作 (シャードの追加または削除)、仕様変更、またはエンドポイントやポートの変更を行うと、タスクが中断されます。この場合、宛先から同期されたすべてのデータをクリアし、タスクを再設定してください。
-
宛先でのフェールオーバーイベント (Master/スタンバイスイッチオーバーを含む) の後、データがセカンダリへのレプリケーションなしにメモリにのみ書き込まれ、データ損失を引き起こす可能性があります。
-
移行インスタンスに完全タスクと増分タスクの両方が含まれている場合、インスタンスを再起動すると、DTS が両方のタスクを再実行する可能性があります。
-
移行インスタンスを再起動すると、
INCRBYやLPUSHなどの非べき等コマンドが繰り返し実行され、データの不整合につながる可能性があります。 -
EVALまたはEVALSHAを介して呼び出される Lua スクリプトについて、DTS は増分移行中の実行成功を確認できません。 -
List データ構造の場合、DTS は
psyncまたはsyncを使用する際に既存の宛先データをフラッシュしないため、エントリが重複する可能性があります。 -
ソースのキーに有効期限ポリシーがある場合、宛先で見えるキーの数 (例えば
INFO経由) がソースよりも少なくなることがあります。有効期限ポリシーのないキーや有効期限が切れていないキーは、ソースと宛先で一貫しています。 -
[アクセス方法] が [パブリック IP アドレス] の場合、[インスタンスモード] は [クラスター] をサポートしません。
-
移行はオフピーク時に実行してください。完全移行は、両方のインスタンスで読み取りおよび書き込みリソースを消費します。
-
完全移行後、同時 INSERT 操作のため、宛先のストレージ容量はソースよりも大きくなります。
-
DTS は、失敗したタスクを最大 7 日間自動回復しようとします。トラフィックを宛先に切り替える前に、タスクを停止またはリリースするか、
REVOKEを使用して DTS アカウントの書き込み権限を取り消し、回復したタスクが宛先データを上書きするのを防いでください。 -
TLS で暗号化された Tair (Redis OSS-compatible) インスタンスが関与する場合、[SSL 暗号化] を使用して DTS に接続してください (TLSv1.3 はサポートされていません)。現在、[SSL 暗号化] を使用して [Alibaba Cloud インスタンス] のソースに接続することはサポートされていません。
-
タスクが失敗した場合、DTS のサポート担当者が 8 時間以内に復旧を試みます。復旧には、タスクの再起動やタスクパラメーターの調整が含まれる場合があります。変更されるのは DTS タスクパラメーターのみであり、データベースパラメーターは変更されません。調整可能なパラメーターの詳細については、「インスタンスパラメーターの変更」をご参照ください。
自己管理 Redis ソースの特殊なケース
ソースの [アクセス方法] が [Alibaba Cloud インスタンス] でない場合:
-
ソースでの Master/スタンバイスイッチオーバーはタスクの失敗を引き起こします。
-
DTS は、最後に移行されたレコードのタイムスタンプと現在時刻を比較してレイテンシを計算します。ソースで長期間 DML アクティビティがない場合、表示されるレイテンシは不正確になる可能性があります。ソースで DML 操作を実行してレイテンシをリフレッシュしてください。データベース全体を移行する場合は、1 秒ごとにデータを書き込むハートビートテーブルを使用してください。
-
移行中に Redis エンドポイントが変更されると (例えば、インスタンス移行や Master/スタンバイスイッチオーバーによる)、リトライ、遅延、失敗、またはデータの不整合が発生する可能性があります。タスクのステータスを監視し、異常な動作が見られた場合は再設定してください。
増分移行でサポートされるコマンド
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
事前準備
ソースアカウントを使用して Alibaba Cloud 管理コンソールにログインします。RAM ロールを作成し、宛先アカウントにソース Redis インスタンスへのアクセス権限を付与します。手順については、「アカウント間タスクの RAM 認可の設定」をご参照ください。
以下の移行タスクを設定する前に、このステップを完了してください。
操作手順
以下の手順では、宛先アカウントを使用して DTS 移行タスクを設定します。
アカウント間の RAM 設定の完全なウォークスルーについては、「アカウント間タスクの RAM 認可の設定」をご参照ください。
ステップ 1: 移行タスクリストを開く
宛先アカウントを使用してログインし、以下のいずれかの方法でデータ移行タスクリストに移動します。
DTS コンソールから
-
Data Transmission Service (DTS) コンソールにログインします。Data Transmission Service (DTS) コンソール
-
左側のナビゲーションウィンドウで、[データ移行] をクリックします。
-
左上隅で、移行インスタンスが配置されるリージョンを選択します。
DMS コンソールから
手順は、お使いの DMS コンソールのモードとレイアウトによって異なる場合があります。詳細については、「シンプルモードコンソール」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
-
Data Management (DMS) コンソールにログインします。Data Management (DMS) コンソール
-
トップメニューバーで、を選択します。
-
[データ移行タスク] の右側で、移行インスタンスが配置されるリージョンを選択します。
ステップ 2: タスクの作成
[タスクの作成] をクリックして、タスク設定ページを開きます。
ステップ 3: ソースデータベースとターゲットデータベースの設定
インスタンスを選択する前に、設定ページの上部に表示される制限を注意深くお読みください。このステップをスキップすると、タスクの失敗やデータの不整合を引き起こす可能性があります。
ソースデータベースとターゲットデータベースの両方のパラメーターを設定します。
タスク名
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS は自動的に名前を生成します。簡単に識別できるように、わかりやすい名前を指定してください。名前は一意である必要はありません。 |
ソースデータベース
| パラメーター | 説明 |
|---|---|
| 既存の接続を選択 | 以前に登録したデータベースインスタンスをリストから選択するか、手動で設定する場合は空のままにします。DMS コンソールでは、このパラメーターは [DMS データベースインスタンスを選択] という名前です。 |
| データベースタイプ | [Tair/Redis] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | ソースインスタンスが存在するリージョンを選択します。 |
| Alibaba Cloud アカウント間でデータをレプリケート | [はい] を選択します。これにより、以下のアカウント間フィールドが有効になります。 |
| Alibaba Cloud アカウント | ソース Tair (Redis OSS-compatible) インスタンスを所有する Alibaba Cloud アカウントの ID を入力します。この ID を取得するには、「ソースデータベースを所有する Alibaba Cloud アカウントの ID の取得」をご参照ください。 |
| RAM ロール名 | ソースアカウントで作成した RAM ロールの名前を入力します。例:ram-for-dts。このロールを作成するには、「ステップ 1: RAM ロールの作成」をご参照ください。 |
| インスタンス ID | ソースインスタンスの ID を選択します。 |
| 認証方式 | 認証方式を選択します。この例では [パスワードログイン] を使用します。[アカウント + パスワードログイン] は Redis 6.0 以降でのみ利用可能です。[パスワードなしのログイン]VPC 経由でのパスワードなしアクセスの有効化 の場合は、まずパスワードなしのアクセスを有効にする必要があります。詳細については、「」をご参照ください。 |
| データベースパスワード | ソースインスタンスのパスワードを入力します。アカウントには読み取り権限が必要です。カスタムアカウントの場合、<account>:<password> の形式を使用します。例:testaccount:Test1234。パスワードが設定されていない場合は空のままにします。忘れたパスワードをリセットするには、「パスワードの変更またはリセット」をご参照ください。 |
| 暗号化 | [非暗号化] または [SSL 暗号化] を選択します。SSL を使用する自己管理 Redis の場合は、[CA 証明書] をアップロードし、[CA キー] を入力する必要もあります。 |
ターゲットデータベース
| パラメーター | 説明 |
|---|---|
| 既存の接続を選択 | 以前に登録したデータベースインスタンスをリストから選択するか、手動で設定する場合は空のままにします。DMS コンソールでは、このパラメーターは [DMS データベースインスタンスを選択] という名前です。 |
| データベースタイプ | [Tair/Redis] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | 宛先インスタンスが存在するリージョンを選択します。 |
| Alibaba Cloud アカウント間でデータをレプリケート | [いいえ] を選択します。宛先インスタンスは現在のアカウントに属します。 |
| インスタンス ID | 宛先インスタンスの ID を選択します。 |
| 認証方式 | 認証方式を選択します。この例では [パスワードログイン] を使用します。[アカウント + パスワードログイン] は Redis 6.0 以降でのみ使用できます。[シークレットなしのログイン] の場合は、まずパスワードなしのアクセスを有効にします。「VPC 経由でのパスワードなしのアクセスを有効にする」をご参照ください。 |
| データベースパスワード | 宛先インスタンスのパスワードを入力します。アカウントには読み取りおよび書き込み権限が必要です。カスタムアカウントの場合、<account>:<password> の形式を使用します。例:testaccount:Test1234。忘れたパスワードをリセットするには、「パスワードの変更またはリセット」をご参照ください。 |
| 暗号化 | [非暗号化] または [SSL 暗号化] を選択します。SSL を使用する自己管理 Redis の場合は、[CA 証明書] をアップロードし、[CA キー] を入力する必要もあります。 |
ステップ 4: 接続性のテスト
ページ下部の [接続をテストして続行] をクリックします。
両方のインスタンスのセキュリティ設定に、DTS サービスの IP アドレス範囲を追加してください。 詳細については、「DTS サーバーの IP アドレスをホワイトリストに追加する」をご参照ください。
どちらかのインスタンスが自己管理型 (アクセス方法が [Alibaba Cloud インスタンス] ではない) の場合、[DTS サーバーの CIDR ブロック] ダイアログで [接続テスト] をクリックします。
ステップ 5: 移行オブジェクトの設定
[オブジェクトの設定] ページで、以下のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| 移行タイプ | ゼロダウンタイム移行のために [完全データ移行] と [増分データ移行] の両方を選択します。DTS アカウントがソースに対して SYNC/PSYNC 権限を持っていない場合は、[完全データ移行] のみを選択します。 |
| 競合するテーブルの処理モード | [事前チェックしてエラーを報告]:事前チェックで宛先が空であることを確認します。空でない場合、タスクは開始されません。[エラーを無視して続行]:宛先が空であるかのチェックをスキップします。宛先のキーがソースのキーと同じ名前を持つ場合、ソースデータが宛先を上書きします。これによりデータが失われる可能性があるため、注意して進めてください。 |
| ソースオブジェクト | [ソースオブジェクト] ボックスでオブジェクトをクリックし、 |
| 選択されたオブジェクト | データベース (DB 0–255) をマッピングする、またはキープレフィックスでフィルターするには、[選択されたオブジェクト] 内のデータベースを右クリックし、[スキーマの編集] ダイアログで設定します。「スキーマのマッピング」および「フィルター条件の設定」をご参照ください。 |
[次へ: 詳細設定] をクリックし、以下を設定します。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング用の専用クラスター | DTS はデフォルトで共有クラスターを使用します。より安定したタスク実行のためには、専用クラスターをご購入ください。 |
| 接続失敗時のリトライ時間 | デフォルト:720 分。範囲:10~1,440 分。少なくとも 30 分に設定してください。DTS がこの時間内に再接続した場合、タスクは自動的に再開されます。そうでない場合、タスクは失敗します。注:リトライ期間中も課金されます。 |
| その他の問題のリトライ時間 | デフォルト:10 分。範囲:1~1,440 分。少なくとも 10 分に設定してください。この値は [接続失敗時のリトライ時間] より小さくする必要があります。 |
| 完全データ移行のスロットリングを有効にする | [ソースデータベースへの秒間クエリ数 (QPS)]、[完全データ移行の RPS]、および [完全データ移行のデータ移行速度 (MB/s)] を設定して、完全移行中の読み取りおよび書き込み負荷を制限します。[完全データ移行] が選択されている場合のみ利用可能です。 |
| 増分データ移行のスロットリングを有効にする | [増分データ移行の RPS] と [増分データ移行のデータ移行速度 (MB/s)] を設定して、増分移行中の負荷を制限します。[増分データ移行] が選択されている場合のみ利用可能です。 |
| 宛先データベースキーの有効期限を延長 | 移行されたキーに追加の有効期限時間を加えます。分散ロックなど、アプリケーションがキーの有効期限に依存する場合に便利です。対象:expire、pexpire、expireat、pexpireat。 |
| 環境タグ | 任意。インスタンスにタグを付けて、その環境を識別します。 |
| ETL の設定 | ETL (抽出·変換·書き出し) 機能を有効または無効にします。「ETL とは」および「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。 |
| モニタリングとアラート機能 | 移行の失敗やレイテンシーがしきい値を超えた場合に通知を受信するには、アラートを設定します。 「アラートのしきい値アラート通知」をご参照ください。 |
[次へ: データ検証] をクリックしてデータ検証を設定します。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 6: 事前チェックの実行
[次へ: タスク設定を保存して事前チェック] をクリックします。
この設定の API パラメーターをプレビューするには、ボタンにカーソルを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
DTS は移行を開始する前に事前チェックを実行します。タスクは事前チェックに合格した後にのみ開始されます。
事前チェックが失敗した場合、失敗した項目の横にある [詳細を表示] をクリックし、問題を修正して再度事前チェックを実行してください。
警告が表示された場合:スキップできない項目については、問題を修正して再実行してください。スキップできる項目については、[アラート詳細の確認] > [無視] > [OK] > [再度事前チェック] をクリックします。警告を無視すると、データの不整合を引き起こす可能性があります。
ステップ 7: 購入と開始
-
[成功率] が 100% に達したら、[次へ: インスタンスの購入] をクリックします。
-
[購入] ページで、インスタンスクラスを選択します。
パラメーター 説明 リソースグループ設定項目 このインスタンスのリソースグループを選択します。 デフォルト:デフォルトのリソースグループ。 詳細については、「Resource Management とは」をご参照ください。 インスタンスクラス 移行のボリュームと速度の要件に基づいて仕様を選択します。 詳細については、「データ移行リンクの仕様」をご参照ください。 -
[Data Transmission Service (従量課金) サービス規約] を読み、同意します。
-
[購入して開始] をクリックし、確認ダイアログで [OK] をクリックします。
データ移行ページで移行の進捗を監視します。
タスクに完全移行と増分移行の両方が含まれている場合、移行タスクリストページでは [増分データ移行] として表示されます。
次のステップ
-
移行後のデータ整合性を検証するには、「データ検証タスクの設定」をご参照ください。
-
アプリケーションのトラフィックを宛先インスタンスに切り替える前に、DTS タスクを停止またはリリースして、自動回復したタスクが宛先データを上書きするのを防いでください。
-
その他の移行シナリオについては、「データ移行シナリオの概要」をご参照ください。
移行後
宛先インスタンスは、ソースインスタンスとは異なる接続エンドポイントを持つ、独立した新しいインスタンスです。データが正しいことを確認した後、アプリケーションの接続設定を宛先インスタンスのエンドポイントに切り替え、新しいクライアント (例えば、移行されたサーバー) の IP アドレスを宛先インスタンスのホワイトリストに追加してください。そうしないと、ビジネスからの書き込みは引き続きソースインスタンスに行われます。