Data Transmission Service(DTS)は、ダウンタイムを最小限に抑えながら、自主管理 Redis データベースから Tair(Redis OSS-compatible)インスタンスへデータを移行します。完全なデータ移行と増分データ移行を併用することで、移行中もアプリケーションをオンラインのまま維持できます。
前提条件
開始する前に、以下の点をご確認ください。
ソースとなる自主管理 Redis データベースおよび宛先の Tair(Redis OSS-compatible)インスタンスが作成済みである必要があります。Tair インスタンスの作成手順については、「ステップ 1:Tair インスタンスの作成」をご参照ください。
宛先の Tair(Redis OSS-compatible)インスタンスは、直接接続モードを使用している必要があります。DTS はその他の接続モードをサポートしていません。
ソースデータベースで
PSYNCコマンドまたはSYNCコマンドを実行できる必要があります。増分データ移行を行う場合、ソースデータベースのアカウントにはPSYNCおよびSYNC権限も必要です。宛先インスタンスの利用可能なストレージ容量が、ソースデータベースの合計データサイズより大きい必要があります。
対応するソースおよび宛先データベースのバージョンについては、「データ移行シナリオの概要」をご参照ください。
移行タイプ
DTS では、本シナリオ向けに以下の 2 種類の移行タイプをサポートしています。
| 移行タイプ | DTS が移行する内容 | 課金対象 |
|---|---|---|
| 完全なデータ移行 | タスク開始時のソースデータベース内の既存のすべてのデータ | 無料 |
| 増分データ移行 | 移行中に発生するデータ変更。ほぼゼロダウンタイムでの切り替えを可能にします | 課金概要 |
既存のデータを移行し、切り替え準備が整うまで宛先を同期状態に保つには、完全なデータ移行 + 増分データ移行 を併用してください。
完全なデータ移行のみを実行する場合、データ不整合を防ぐため、移行中にソースデータベースへの書き込みを停止してください。
宛先の アクセス方法 を パブリック IP アドレス に設定した場合、インターネットトラフィック料金が発生します。
増分データ移行でサポートされるコマンド
増分データ移行では、以下の 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
注意事項
移行を開始する前に、以下の制約事項をご確認ください。
ソースデータベースの制約事項
| 制約事項 | 詳細 |
|---|---|
| 帯域幅 | ソースデータベースをホストするサーバーには、十分なアウトバウンド帯域幅が必要です。帯域幅が不足すると、移行速度が低下します。 |
| 完全移行中の書き込み | 完全移行のみを実行する場合、ソースデータベースへの書き込みを停止してください。同時書き込みにより、ソースと宛先の間でデータ不整合が発生する可能性があります。 |
| クラスタにおけるクロススロット操作 | スタンドアロン Redis データベースからクラスタアーキテクチャへ移行する場合、各コマンドは単一のスロットに対してのみ実行する必要があります。クロススロットコマンドを実行すると、以下のエラーが発生し、移行が中断されます:CROSSSLOT Keys in request don't hash to the same slot。移行中は、単一キー操作を行ってください。 |
| キーの有効期限 | 有効期限ポリシーが設定されたキーは、有効期限切れ後すぐに削除されない場合があります。このため、宛先のキー数がソースより少なくなることがあります。宛先で INFO コマンドを実行し、キー数を確認してください。有効期限が無効化されたキー、または TTL 内にあるキーについては、ソースと宛先で整合性が保たれます。 |
| ハートビートキー | DTS は、データ更新を追跡するために、ソースデータベースに DTS_REDIS_TIMESTAMP_HEARTBEAT で始まるキーを挿入します。クラスターモードでは、DTS はこのキーを各シャードに挿入します。このキーは移行時に除外され、タスク完了後に有効期限が切れます。 |
| 遅延精度 | ソースデータベースが読み取り専用である場合、またはソースアカウントに SETEX 権限がない場合、報告される移行遅延が不正確になる可能性があります。 |
その他の制約事項
| 制約事項 | 詳細 |
|---|---|
| パフォーマンスへの影響 | 完全なデータ移行は、ソースおよび宛先の両方でリソースを消費します。大規模なデータセットやリソースが不足しているサーバーでは、非ピーク時間帯に移行を実行してください。 |
| メモリの立ち退き | 送信先の Tair インスタンスのデフォルトの立ち退きポリシー (maxmemory-policy) は volatile-lru です。送信先のメモリが不足した場合、タスクが失敗することなくデータの不整合が発生する可能性があります。静かなデータ損失を防ぐには、立ち退きポリシーを noeviction に設定してください — この場合、メモリが不足していると DTS は書き込みを明示的に失敗させます(データを静かに立ち退かせることはありません)。立ち退きポリシーの詳細については、「Tair のデフォルトの立ち退きポリシーとは? |
| Lua スクリプト | DTS は、EVAL または EVALSHA を介して呼び出された Lua スクリプトが、増分移行中に宛先で実行されたかどうかを確認できません。これは、宛先がこれらのコマンドの実行結果を明示的に返さないためです。 |
| LIST 型の重複 | DTS が PSYNC または SYNC を使用して LIST データを転送する場合、宛先インスタンス内の既存データはフラッシュされません。このため、宛先に重複レコードが発生する可能性があります。 |
| 再構成のトリガー | 移行中に以下のいずれかが発生した場合、移行タスクを再構成する必要があります:ソースクラスターのシャード数の変更、ソースデータベースの仕様変更(例:メモリのスケールアップ)、またはソースエンドポイントの変更。データ整合性を確保するため、再構成前に宛先から既に移行済みのデータを削除してください。 |
| タスク再開のリスク | 失敗したタスクが自動的に再開された場合、ソースからのデータが宛先のデータを上書きする可能性があります。ワークロードを宛先に切り替える前に、タスクを停止またはリリースしてください。 |
| 宛先のメモリ不足(OOM) | 宛先クラスターのシャードがメモリ制限に達した場合、または利用可能なストレージが不足した場合、タスクは「メモリ不足(OOM)」エラーで失敗します。 |
| TDE | 宛先データベースで透過的データ暗号化(TDE)が有効になっている場合、DTS はデータを移行できません。 |
| 完全再移行のトリガー | 一時的な切断エラーによる再開可能なアップロードの失敗、プライマリ/セカンダリ スイッチオーバーまたはフェールオーバーの発生、またはいずれかのエンドポイントの変更が原因で、完全なデータが再移行される場合があります。これにより、データ不整合が発生する可能性があります。 |
| TLS | 宛先 Tair インスタンスで TLS(Transport Layer Security)が有効になっている場合、SSL 暗号化接続(TLSv1.3 はサポートされていません)で接続してください。TLS が有効な Tair インスタンスは、Alibaba Cloud インスタンスとして DTS に接続できません。 |
| タスクの再起動 | 完全移行と増分移行の両方を含むタスクを再起動した場合、DTS は両方のサブタスクを再起動する可能性があります。 |
| DTS サポートによる復旧 | DTS タスクが失敗した場合、DTS テクニカルサポートが 8 時間以内に復旧を試みます。復旧中、タスクが再起動されたり、タスクパラメーターが変更されたりすることがあります。ただし、データベースパラメーターは変更されません。 |
競合するキーに対して エラーを無視して続行 を選択した場合、ソースデータが同じキーを持つ宛先データを上書きします。これにより、宛先でデータ損失が発生する可能性があります。ご注意ください。
増分データ移行の準備
完全なデータ移行のみを実行する場合は、本セクションはスキップしてください。
増分移行タスクが中断されないように、ソースデータベースのレプリケーション出力バッファー制限を解除してください。
redis-cli を使用してソース Redis データベースに接続します。必要に応じて、Redis クライアントを事前にインストールしてください。「Redis 公式ウェブサイト」をご参照ください。
プレースホルダー 説明 例 <host>ソースデータベースのエンドポイント 127.0.0.1<port>ソースデータベースのサービスポート 6379(デフォルト)<password>ソースデータベースのパスワード Test123456redis-cli -h <host> -p <port> -a <password>以下を置き換えてください。
以下のコマンドを実行して、レプリケーション出力バッファー制限を解除します。
config set client-output-buffer-limit 'slave 0 0 0'
移行タスクの作成
ステップ 1:データ移行ページを開く
以下のいずれかのコンソールを使用してください。
DTS コンソール
DMS コンソール
ステップ 2:ソースおよび宛先データベースの構成
タスクの作成 をクリックし、以下のパラメーターを構成します。
タスク名
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS タスクの名前です。DTS が自動的に生成します。識別しやすい名前を指定することを推奨します(一意である必要はありません)。 |
ソースデータベース
| パラメーター | 説明 |
|---|---|
| 既存の接続を選択 | DTS に既に登録済みのデータベースインスタンスを選択して、接続パラメーターを自動入力してください。詳細については、「データベース接続の管理」をご参照ください。インスタンスが登録されていない場合は、パラメーターを手動で設定してください。 |
| データベースタイプ | <Tair/Redis> を選択します。 |
| アクセス方法 | <ECS 上の自主管理データベース> を選択します。その他のアクセス方法については、「事前準備の概要」をご参照ください。 |
| インスタンスリージョン | ソース Redis データベースをホストする Elastic Compute Service(ECS)インスタンスが存在するリージョンです。 |
| Alibaba Cloud アカウント間でのデータ複製 | 同一アカウント内での移行の場合は、<いいえ> を選択します。 |
| ECS インスタンス ID | ソース Redis データベースをホストする ECS インスタンスの ID です。クラスターモードのソースの場合は、マスターノードを実行する ECS インスタンスの ID を選択し、各 ECS インスタンスのセキュリティグループルールに DTS サーバーの CIDR ブロックを追加してください。「セキュリティグループの作成」でセキュリティグループを作成し、「インスタンス(プライマリ ENI)へのセキュリティグループの関連付け」で関連付け、「DTS サーバーの CIDR ブロックの追加」で CIDR ブロックの一覧を確認してください。 |
| インスタンスモード | ソース Redis データベースのデプロイメントアーキテクチャ:<スタンドアロン> または <クラスター>。<アクセス方法> を <パブリック IP アドレス> に設定した場合、<クラスター> はサポートされません。 |
| ポート | ソースデータベースのサービスポートです。デフォルト値:<6379>。クラスターモードのソースの場合は、マスターノードのポートを入力します。 |
| 認証方法 | ご使用の環境に応じて選択してください。<アカウント+パスワードログイン> の場合は、Redis 6.0 以降が必要です。<シークレットなしログイン> の場合は、事前にソースデータベースでパスワードなしのアクセスを有効化してください。 |
| データベースパスワード | ソースデータベースのパスワードです。パスワードが設定されていない場合は、空白のままにしてください。形式:<<user>:<password>>(例:<admin:Rp829dlwa>)。 |
| 暗号化 | <暗号化なし> または <SSL 暗号化> を選択します。<アクセス方法> が <Alibaba Cloud インスタンス> でなく、かつ <SSL 暗号化> を選択した場合、<CA 証明書> をアップロードし、<CA キー> を入力してください。 |
宛先データベース
| パラメーター | 説明 |
|---|---|
| 既存の接続を選択 | 登録済みの DTS インスタンスを選択すると、接続パラメーターが自動的に入力されます。手動で構成することも可能です。 |
| データベースタイプ | <Tair/Redis> を選択します。 |
| アクセス方法 | <Alibaba Cloud インスタンス> を選択します。 |
| インスタンスリージョン | 宛先の Tair(Redis OSS-compatible)インスタンスが存在するリージョンです。 |
| Alibaba Cloud アカウント間でのデータ複製 | 同一アカウント内での移行の場合は、<いいえ> を選択します。 |
| インスタンス ID | 宛先の Tair(Redis OSS-compatible)インスタンスの ID です。 |
| 認証方法 | ご使用の環境に応じて選択してください。<アカウント+パスワードログイン> の場合は、Redis 6.0 以降が必要です。<シークレットなしログイン> の場合は、事前に宛先インスタンスでパスワードなしのアクセスを有効化してください。「パスワードなしのアクセスの有効化」をご参照ください。 |
| データベースパスワード | 宛先インスタンスのパスワード。形式:<user>:<password>(例:admin:Rp829dlwa)。 |
| 暗号化 | <暗号化なし> または <SSL 暗号化> を選択します。 |
ステップ 3:接続性のテストと続行
ページ下部の <接続性のテストと続行> をクリックします。
DTS サーバーは、ソースおよびターゲットデータベースにアクセスできる必要があります。続行する前に、DTS サーバーの CIDR ブロックを両方のデータベースのセキュリティ設定に追加してください — 手順については、「DTS サーバーの CIDR ブロックの追加」をご参照ください。ソースまたはターゲットが[Alibaba Cloud インスタンス]以外のアクセス方法を使用している場合は、[DTS サーバーの CIDR ブロック]ダイアログボックスで[接続性のテスト]をクリックします。
ステップ 4:移行対象のオブジェクトの構成
<オブジェクトの構成> ページで、以下のパラメーターを設定します。
パラメーター 説明 移行タイプ <完全なデータ移行 + 増分データ移行> を選択します。ソースアカウントに SYNCまたはPSYNC権限がない場合は、<完全なデータ移行> のみを選択してください。競合テーブルの処理モード 事前チェックとエラー報告>:移行開始前に宛先データベースが空であることを確認します。宛先が空でない場合、エラーが返されます。<エラーを無視して続行>:空の宛先チェックをスキップします。ソースデータが同じキーを持つ宛先データを上書きします。 ソースオブジェクト 「[ソース オブジェクト]」から 1 つ以上のデータベースを選択し、
をクリックして、「[選択済みオブジェクト]」に追加します。データベースは選択できますが、個別のキーは選択できません。選択済みオブジェクト データベース (DB 0~DB 255) をマッピングするか、キープレフィックスでフィルターするには、[選択されたオブジェクト] でデータベースを右クリックし、[スキーマの編集] ダイアログボックスでオプションを設定します。手順については、「オブジェクト名のマッピング」(データベースの名前変更について) および「フィルター条件の設定」(プレフィックスフィルタリングについて) をご参照ください。オブジェクト名のマッピングは、1 つずつ行う必要があります。 <次へ:高度な設定> をクリックし、以下のパラメーターを構成します。
パラメーター 説明 タスクスケジューリング用の専用クラスター デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。より高い安定性を得るには、専用クラスターをご購入ください。詳細については、「DTS 専用クラスターとは」をご参照ください。 接続失敗時の再試行時間 接続失敗後の DTS の再試行時間です。有効範囲:10 ~ 1,440 分。デフォルト値:720 分。最低でも 30 分以上に設定してください。複数のタスクが同じソースまたは宛先を共有する場合、最後に設定された値が優先されます。再試行期間中は、DTS インスタンスに対して課金されます。 その他の問題発生時の再試行時間 DDL または DML 失敗後の DTS の再試行時間です。有効範囲:1 ~ 1,440 分。デフォルト値:10 分。最低でも 10 分以上に設定してください。この値は、<接続失敗時の再試行時間> よりも短くする必要があります。 完全なデータ移行の負荷制御を有効化 完全移行中のソースおよび宛先への読み取り/書き込み負荷を制限します。<ソースデータベースへのクエリ数(QPS)>、<完全なデータ移行の RPS>、<完全なデータ移行のデータ移行速度(MB/s)> を構成します。<完全なデータ移行> が選択されている場合にのみ利用可能です。 増分データ移行の負荷制御を有効化 増分移行中の宛先への負荷を制限します。<増分データ移行の RPS>、<増分データ移行のデータ移行速度(MB/s)> を構成します。<増分データ移行> が選択されている場合にのみ利用可能です。 宛先データベースキーの有効期限の延長 移行されたキーの TTL を指定した秒数だけ延長します。< expire key seconds>、<pexpire key milliseconds>、<expireat key timestamp>、または <pexpireat key timestampMs> などのコマンドを使用する場合、データ整合性を維持するためにこの設定を適用してください。ただし、分散ロックの解放が遅れる可能性があることにご注意ください。スレーブノードの使用 ソースの<インスタンスモード> が<クラスター> の場合に利用可能です。スレーブ(レプリカ)ノードからデータを読み取るかどうかを指定します。デフォルト値:<いいえ>(マスターノードから読み取り)。 環境タグ DTS インスタンスを識別するための任意のタグです。 ETL の構成 ETL 機能を有効化します。「[はい]アラート通知設定」を選択して、データ処理文を入力できるようにします。詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。 モニタリングとアラート タスクの失敗時または移行遅延がしきい値を超過した場合に通知を受け取るには、[はい] を選択します。アラートのしきい値と通知連絡先を設定します。詳細については、「DTS タスクの作成時にモニタリングとアラートを設定する」をご参照ください。 「[データ検証へ進む]」をクリックして、データ検証を設定します。詳細については、「データ検証タスクの設定」をご参照ください。
ステップ 5:設定の保存と事前チェックの実行
このタスクの API パラメーターをプレビューするには、<次へ:タスク設定の保存と事前チェック> の上にカーソルを合わせ、<OpenAPI パラメーターのプレビュー> をクリックします。
<次へ:タスク設定の保存と事前チェック> をクリックして、設定を保存し、事前チェックを開始します。
事前チェックに合格した場合にのみ、タスクを開始できます。
事前チェックが失敗した場合、各失敗項目の横にある <詳細の表示> をクリックします。問題を修正した後、<再び事前チェック> をクリックしてください。
事前チェックのアラートが表示された場合:
スキップできないアラートの場合は、問題を修正して事前チェックを再実行してください。
スキップ可能なアラートの場合は、<アラートの詳細の確認> > <無視> > <OK> の順にクリックし、その後 <再び事前チェック> をクリックしてください。アラートをスキップすると、データ不整合が発生する可能性があります。
ステップ 6:移行インスタンスの購入
<成功率> が <100%> に達したら、<次へ:インスタンスの購入> をクリックします。
<インスタンスの購入> ページで、インスタンスクラスを構成します。
セクション パラメーター 説明 新しいインスタンスクラス リソースグループ 移行インスタンスのリソースグループ。デフォルト: [デフォルトリソースグループ]。詳細については、「Resource Management とは インスタンスクラス 移行速度を決定します。要件に基づいて選択してください。詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。 <Data Transmission Service(従量課金)利用規約> をお読みになり、同意した上で、<購入して開始> > <OK> をクリックします。
<データ移行> ページで進捗状況を確認できます。
完全なデータ移行と増分データ移行の両方を選択したタスクの場合、<データ移行> ページには、アクティブなステータスとして <増分データ移行> が表示されます。
次のステップ
増分データ移行が完了したら、アプリケーションを宛先に切り替える前に、移行タスクを停止またはリリースしてください。これにより、切り替え後に宛先に書き込まれたデータがソースによって上書きされるのを防ぎます。