Data Transmission Service (DTS) は、オンプレミスのデータセンター、Elastic Compute Service (ECS) インスタンス、またはサードパーティクラウド上の Redis データベースを、最小限のダウンタイムで Tair (Redis OSS-compatible) へ移行します。DTS は、Tair (Redis OSS-compatible) への完全データ移行と増分データ移行の両方をサポートしています。AOF ベースの移行よりも優れたパフォーマンスとセキュリティを提供します。
概要
完全データ移行
DTS は、ソースデータベースから移行先データベースにすべての既存データを移行します。完全データ移行は無料です。
増分データ移行
全量データ移行が完了すると、DTS はソースから宛先にデータの変更をリアルタイムで同期します。増分移行では、ソースデータベースで
PSYNCまたはSYNCコマンドを実行できる必要があります。そうでない場合は、全量データ移行のみが利用可能です。増分移行は、データ量ではなく、期間に応じて課金されます。詳細については、「課金項目」をご参照ください。説明増分データ移行を確実に行うには、
CONFIG SET client-output-buffer-limit 'slave 0 0 0'コマンドを実行して、ソースデータベースのレプリケーション出力バッファ制限を無効にします。
前提条件
セルフマネージド Redis データベースが使用するメモリよりも多くのメモリを持つ Tair (Redis OSS-compatible) インスタンスが作成されていること。詳細については、「インスタンスの作成」をご参照ください。
移行先データベースには、ソースデータベースよりも少なくとも 10% 多くのメモリを確保することを推奨します。メモリが不足すると、データの不整合やタスクの失敗を引き起こす可能性があります。この問題が発生した場合は、移行先データベースをクリアし、移行タスクを再設定してください。
注意事項
移行中は、ソースデータベースまたは移行先データベースの設定を変更しないでください。リソースのスケーリング、仕様の変更、または接続エンドポイントの変更を行うとタスクが失敗し、再設定が必要になります。移行は両方のデータベースのリソースを消費するため、オフピーク時に実行してください。
操作手順
データ移行タスクページに移動します。
Data Management (DMS) コンソールにログインします。
上部メニューで、 を選択します。
データ移行タスク の右側で、移行先インスタンスがあるリージョンを選択します。
タスクの作成 をクリックします。
ソースデータベースと移行先データベースを設定し、接続をテストして続行 をクリックします。
セクション
パラメーター
説明
N/A
[タスク名]
タスクの名前。 DTSはタスクに名前を自動的に割り当てます。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
[ソースデータベース]
[DMS データベースインスタンスの選択]
ソースデータベースが DMS に登録されている場合は、ドロップダウンリストから選択すると接続情報が自動的に入力されます。そうでない場合は、このオプションをスキップしてください。
[データベースタイプ]
Tair/Redis を選択します。
[アクセス方法]
ソースデータベースがデプロイされている場所に基づいて接続タイプを選択します。インスタンスがオンプレミスのデータセンターまたは他のクラウドにある場合は、パブリック IP アドレス を選択します。
この例では、ECS 上の自己管理型データベース を使用します。
[インスタンスリージョン]
ECS インスタンスがあるリージョンを選択します。インスタンスがオンプレミスのデータセンターまたは他のクラウドにある場合は、ソースデータベースに最も近いリージョンを選択します。
[Alibaba Cloud アカウント間でデータを複製]
この例では、同じ Alibaba Cloud アカウント内での移行を示します。× を選択します。
[ECS インスタンス ID]
ソースデータベースがある ECS インスタンスの ID を選択します。
説明ソースデータベースがクラスターの場合、いずれかのマスターノードの ECS インスタンス ID を選択します。
[インスタンスモード]
ソースデータベースのアーキテクチャを選択します。
スタンドアロン:標準アーキテクチャ (マスター/レプリカ)。
クラスター:クラスターアーキテクチャ。ソースデータベースがクラスターの場合、ポート パラメーターにいずれかのマスターノードのポート番号を入力します。
[ポート]
ソース Redis データベースのポートを入力します。デフォルトのポートは 6379 です。
[認証方法]
パスワードログイン または ログイン時パスワード入力の省略 を選択します。
説明セルフマネージド Redis データベースにパスワードがない場合は、ログイン時パスワード入力の省略 を選択できます。
[データベースパスワード]
ソース Redis データベースに接続するためのパスワードを入力します。
説明このパラメーターはオプションです。パスワードが設定されていない場合、このフィールドは空のままにできます。
カスタムアカウントを使用する場合、そのアカウントには読み取り権限が必要です。アカウントとパスワードは
<user>:<password>形式で指定する必要があります。たとえば、Redis インスタンスのカスタムアカウントがadminで、パスワードがRp829dlwaの場合、データベースパスワードとしてadmin:Rp829dlwaと入力します。
[暗号化]
非暗号化 または SSL 暗号化 を選択します。
説明セルフマネージド Redis (アクセス方法 が クラウドインスタンス ではない) が SSL 暗号化 を使用している場合、CA 証明書 をアップロードし、[CA Key] を入力する必要もあります。
[宛先データベース]
[DMS データベースインスタンスの選択]
移行先データベースが DMS に登録されている場合は、ドロップダウンリストから選択すると接続情報が自動的に入力されます。そうでない場合は、このオプションをスキップしてください。
[データベースタイプ]
デフォルトで Tair/Redis が選択されています。
[アクセス方法]
クラウドインスタンス を選択します。
[インスタンスリージョン]
移行先インスタンスのリージョンを選択します。
[インスタンス ID]
移行先インスタンスの ID を選択します。
[認証方法]
パスワードログイン または ログイン時パスワード入力の省略 を選択します。この例では、パスワードログイン を使用します。
説明Tair (Redis OSS-compatible) インスタンスで VPC パスワードフリーアクセス機能が有効になっていない場合は、パスワードログイン を選択します。
[データベースパスワード]
移行先データベースに接続するためのパスワードを入力します。
説明カスタムアカウントを使用する場合、書き込み権限が必要です。アカウントとパスワードは、
<user>:<password>の形式である必要があります。たとえば、Redis インスタンスのカスタムアカウントがadminで、パスワードがRp829dlwaの場合、データベースパスワードとしてadmin:Rp829dlwaを入力します。[暗号化]
非暗号化 または SSL 暗号化 を選択します。
移行オブジェクトを設定し、詳細設定へ をクリックします。
パラメーター
説明
[移行タイプ]
移行タイプ を選択します。
[Full + Incremental] (デフォルト):Redis のネイティブ同期を使用してデータをメモリスナップショットとして移行先に書き込み、最小限のダウンタイムでの移行を可能にします。
ソースデータベースで SYNC または PSYNC の権限がない場合は、完全データ移行 を選択します。
完全データ移行:SCAN コマンドを使用してソース全体を反復処理し、データを移行先に書き込みます。データの一貫性を確保するため、移行中はソースインスタンスに新しいデータを書き込まないでください。
[競合テーブルの処理モード]
エラーの事前チェックと報告 (デフォルト):移行先データベースにデータ (キー) が存在するかどうかをチェックします。
キーが存在する場合、事前チェックはエラーを報告し、移行タスクは開始されません。キーが存在しない場合、事前チェックは合格します。
エラーを無視して続行:ターゲットデータベース内のオブジェクトデータの存在検査 項目をスキップします。移行先データベースに同じ名前のキーがすでに存在する場合、そのキーは上書きされます。
[ソースオブジェクト]と[選択中のオブジェクト]
ソースオブジェクト ボックスで移行するオブジェクトを選択し、右矢印
をクリックして 選択中のオブジェクト ボックスに移動します。オブジェクトを削除するには、選択中のオブジェクト ボックスでそれを選択し、左矢印
をクリックして ソースオブジェクト ボックスに戻します。説明移行オブジェクトはデータベースレベル (DB 0 から DB 255) で選択されます。
高度な設定を行い、[Next: Data Verification] をクリックします。
ほとんどの場合、デフォルト設定のままにできます。詳細については、「付録:高度な設定」をご参照ください。
データ検証を設定し、次:タスク設定の保存と事前チェック をクリックします。
ほとんどの場合、デフォルト設定のままにできます。詳細については、「DTS 同期または移行インスタンスでのデータ検証の設定」をご参照ください。
事前チェックが完了したら、次:インスタンスの購入 をクリックします。
警告 または 失敗 の項目が報告された場合は、個別に解決してください。 詳細の表示 をクリックして問題を表示し、提示された提案に基づいて解決できます。 また、アラートの詳細を確認 をクリックしてチェック項目を無視することもできますが、データ不整合の原因となる可能性があるため、この操作は推奨されません。 詳細については、「事前チェックの問題」をご参照ください。 問題を解決したら、事前チェックを再実行してください。
購入 ページで設定を行い、購入して起動 をクリックします。
(オプション) DTS 移行リンクの リソースグループの設定 を選択します。デフォルトは [default resource group] です。
(オプション) DTS 移行リンクの仕様を選択します。仕様が高いほど移行速度は速くなりますが、コストも高くなります。デフォルトは [large] です。詳細については、「データ移行リンクの仕様」をご参照ください。
サービス利用規約を読み、同意します。
購入後、移行タスクが開始されます。進行状況はデータ移行ページで確認できます。
次のステップ
増分データ移行を使用した場合、移行完了後にコンソールでタスクを手動で終了または解放する必要があります。
移行されたデータを検証できます。詳細については、「移行されたデータの検証」をご参照ください。
関連ドキュメント
オンライン移行が不要な場合は、redis-cli を使用して AOF ファイルをインポートすることもできます。詳細については、「AOF ファイルからのデータ移行」をご参照ください。
よくある質問
接続テストが失敗するのはなぜですか?
以下を確認してください:
無効なアカウントまたはパスワード。Redis のパスワード形式は
user:passwordです。詳細については、「インスタンスへの接続方法」をご参照ください。ソースがオンプレミスのデータセンターまたは他のクラウド上のセルフマネージドデータベースである場合、ファイアウォールがアクセスをブロックしている可能性があります。アクセスを許可するには、対応するリージョンの DTS サーバーの IP アドレスを許可リストに追加する必要があります。詳細については、「DTS サーバーの CIDR ブロックをデータベースの許可リストに追加」をご参照ください。
移行タスクが失敗するのはなぜですか?
ソースまたは移行先データベースの構成 (リソース、仕様、接続エンドポイントなど) を変更すると、移行タスクは失敗します。この場合、タスクを再設定する必要があります。
移行先インスタンスのメモリが不足している場合、またはクラスターインスタンスでシャードがメモリ制限に達した場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。
移行先インスタンスで透過的データ暗号化 (TDE) が有効になっている場合、DTS によるデータ移行はサポートされません。
データに差異が生じるのはなぜですか?
ソースデータベースの一部のキーが有効期限 (Expire) ポリシーを使用している場合、有効期限が切れてもすぐには削除されない可能性があり、その結果、移行先データベースのキー数がソースデータベースよりも少なくなることがあります。
List データ型の場合、DTS は PSYNC または SYNC を使用してデータを転送する際に、移行先の既存データに対して FLUSH 操作を実行しません。これにより、データが重複する可能性があります。
完全データ移行中にネットワーク中断が発生した場合、DTS は複数回の完全移行を実行する可能性があり、同じ名前のキーは自動的に上書きされます。この間にソースデータベースで削除操作が実行されると、そのコマンドは移行先に同期されず、結果として移行先データベースのデータがソースよりも多くなることがあります。
事前チェックで Redis の eviction ポリシーが noeviction であることを確認するのはなぜですか?
Tair (Redis OSS-compatible) インスタンスのデフォルトの eviction ポリシー (maxmemory-policy) は volatile-lru です。移行先がメモリ不足になると、eviction がトリガーされ、タスクを失敗させることなくデータの不整合を引き起こします。これを防ぐため、移行先の eviction ポリシーを noeviction に設定してください。このポリシーでは、メモリが満杯になると書き込みが失敗し、移行タスクは失敗しますが、eviction によるデータ損失を防ぐことができます。詳細については、「Redis のデータ eviction ポリシー」をご参照ください。
ソースデータベースに DTS_REDIS_TIMESTAMP_HEARTBEAT という名前のキーがあるのはなぜですか?
DTS は、更新タイムスタンプを記録するために、プレフィックス DTS_REDIS_TIMESTAMP_HEARTBEAT を持つキーをソースデータベースに挿入します。クラスターソースの場合、キーは各シャードに挿入されます。DTS は移行中にこのキーを除外し、タスクが完了すると自動的に期限切れになります。
増分データ移行でサポートされているコマンドは何ですか?
以下のコマンドがサポートされています:
APPENDBITOP、BLPOP、BRPOP、BRPOPLPUSHDECR、DECRBY、DELEVAL、EVALSHA、EXEC、EXPIRE、EXPIREATFLUSHALL、FLUSHDBGEOADD、GETSETHDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、HSETNXINCR、INCRBY、INCRBYFLOATLINSERT、LPOP、LPUSH、LPUSHX、LREM、LSET、LTRIMMOVE、MSET、MSETNX、MULTIPERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、PSETEX、PUBLISHRENAME、RENAMENX、RESTORE、RPOP、RPOPLPUSH、RPUSH、RPUSHXSADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、SUNIONSTOREZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNIONSTORE、ZREMRANGEBYRANK、ZREMRANGEBYSCOREXADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、XTRIM
EVAL または EVALSHA を使用して Lua スクリプトを呼び出す場合、移行先データベースが実行結果を明示的に返さないため、DTS はスクリプトが正常に実行されたかどうかを確認できません。
付録:高度な設定
パラメーター | 説明 |
[失敗した接続の再試行時間] | 移行中にソースまたは移行先データベースへの接続が失敗した場合、DTS は指定された期間 (デフォルト: 720 分、範囲:10〜1440 分) 再試行します。この期間内に接続が回復すればタスクは再開されますが、そうでなければ失敗します。再試行時間は少なくとも 30 分に設定してください。 再試行期間中も課金は継続します。 |
[移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。] | 移行中にソースまたは移行先データベースで接続以外のエラーが発生した場合、DTS は指定された期間 (デフォルト: 10 分、範囲:10〜1440 分) 再試行します。この期間内に操作が成功すればタスクは再開されますが、そうでなければ失敗します。再試行時間は少なくとも 10 分に設定してください。 |
[完全なデータ移行のスロットリングを有効化] | 増分データの書き込みは、移行先データベースの負荷を増加させる可能性があります。負荷を軽減するため、1 秒あたりの行数またはデータ量で移行レートを制限します。デフォルトは × です。 |
[環境タグ] | インスタンスを識別するための環境タグを選択します。 |
[移行先データベースキーの有効期限を延長する] | 移行先データベースで有効期限が設定されているキーの TTL を延長します。デフォルトの延長時間: 1800 秒。移行前にソースで期限切れになったキーは、移行先に転送されません。 |
[スレーブノードの使用] | ソースのセルフマネージド Redis の インスタンスモード が クラスター の場合、レプリカノードからデータを読み取るかどうかを選択できます。デフォルトは × で、これは、データがマスターノードから読み取られることを意味します。 |
[ETL 機能の設定] | ETL 機能を有効にするかどうかを選択します。詳細については、「ETL とは何か?」をご参照ください。
|
[モニタリングとアラート] | データ同期タスクのアラートを設定するかどうかを指定します。 タスクが失敗するか、同期レイテンシが指定されたしきい値を超えると、アラート送信先は通知を受け取ります。 有効な値:
|