Data Transmission Service (DTS) を使用すると、オンプレミス環境、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'。
前提条件
Tair (Redis OSS-compatible) インスタンスを作成します。ターゲットインスタンスのメモリ容量は、ご利用の自主管理 Redis データベースが使用するメモリ量よりも大きい必要があります。詳細については、「インスタンスの作成」をご参照ください。
ターゲットデータベースの合計メモリは、ソースデータベースのメモリ使用量より少なくとも 10 % 大きくなければなりません。ターゲットデータベースのメモリが不足している場合、データ整合性の不一致やタスクの失敗が発生する可能性があります。そのような場合は、ターゲットデータベースをクリアし、タスクを再構成してください。
注意事項
移行中は、インスタンスのスケールアップ/ダウン、インスタンスタイプの変更、およびソースまたはターゲットデータベースのエンドポイントの変更を行わないでください。これらの操作により、移行タスクが失敗し、タスクを再構成する必要が生じます。移行プロセスでは、ソースおよびターゲットデータベースの両方のリソースが消費されます。移行は、トラフィックが少ない時間帯(オフピーク時)に実行してください。
操作手順
移行タスク一覧ページへ移動します。
まず、 Data Management (DMS) コンソールにログインします。
上部のメニューバーから、 を選択します。
移行タスク の右側で、ターゲットインスタンスが配置されているリージョンを選択します。
タスクの作成 をクリックします。
ソースおよびターゲットデータベースの情報を設定し、ページ下部の 接続テストと続行 をクリックします。
カテゴリ
設定
説明
なし
タスク名
DTS が自動的にタスク名を生成します。識別が容易になるよう、意味のある名前を指定することを推奨します。タスク名は一意である必要はありません。
ソースデータベース
DMS データベースインスタンスの選択
ソースデータベースを DMS に追加済みの場合は、ここで選択できます。選択後は、以下のソースデータベース情報の入力は不要です。未追加の場合は、このオプションは無視してください。
データベースタイプ
Tair/Redis を選択します。
アクセス方法
ソースデータベースのデプロイ先に応じて接続タイプを選択します。オンプレミスデータセンターまたは他社クラウドに配置されている場合は、パブリック IP を選択します。
本例では、ECS 上の自主管理データベース を使用します。
インスタンスリージョン
ECS インスタンスが配置されているリージョンを選択します。オンプレミスデータセンターまたは他社クラウドに配置されている場合は、ソースデータベースに最も近いリージョンを選択します。
Alibaba Cloud アカウント間
本例では、同一 Alibaba Cloud アカウント内での移行を示しています。そのため、いいえ を選択します。
ECS インスタンス ID
ソースデータベースが配置されている ECS インスタンスの ID を選択します。
説明ソースデータベースがクラスタアーキテクチャを使用している場合、マスターノードのいずれかが配置されている ECS インスタンスの ID を選択します。
インスタンスモード
ソースデータベースのアーキテクチャに応じてモードを選択します:
Basic Edition:標準アーキテクチャ(マスター・レプリカ)。
Cluster Edition:クラスタアーキテクチャ。ソースデータベースがクラスタアーキテクチャを使用している場合、ポート パラメーターには、マスターノードのいずれかのポート番号を入力します。
ポート
ソース Redis データベースのポートを入力します。デフォルト値は 6379 です。
認証方法
必要に応じて、パスワードによるログイン または パスワードなしのログイン を選択します。
説明自主管理 Redis データベースにパスワードが設定されていない場合は、パスワードなしのログイン を選択できます。
データベースパスワード
ソース Redis データベースへの接続に使用するパスワードを入力します。
説明このパラメーターは任意です。パスワードが設定されていない場合は、空欄のままにしてください。
カスタムアカウントを使用する場合、そのアカウントには読み取り権限が必要です。アカウントとパスワードの形式は <user>:<password> です。たとえば、Redis インスタンスのカスタムアカウントが admin、パスワードが Rp829dlwa の場合、データベースパスワードとして「admin:Rp829dlwa」を入力します。
接続方法
必要に応じて、暗号化されていない接続 または SSL 暗号化接続 を選択します。
説明ソースの自主管理 Redis データベース(接続タイプ が クラウドインスタンス でない場合)が SSL 暗号化接続 を使用している場合、CA 証明書 をアップロードし、CA キー を入力する必要があります。
宛先データベース
DMS データベースインスタンスの選択
ターゲットデータベースを DMS に追加済みの場合は、ここで選択できます。選択後は、以下のターゲットデータベース情報の入力は不要です。未追加の場合は、このオプションは無視してください。
データベースタイプ
Tair/Redis がデフォルトで選択されています。
アクセス方法
クラウドインスタンス を選択します。
インスタンスリージョン
ターゲットインスタンスが配置されているリージョンを選択します。
インスタンス ID
ターゲットインスタンスの ID を選択します。
認証方法
必要に応じて、パスワードによるログイン または パスワードなしのログイン を選択します。本例では、パスワードによるログイン を使用します。
説明Tair (Redis OSS-compatible) インスタンスで VPC 向けの パスワードなしのアクセス機能 が有効になっていない場合、パスワードによるログイン を選択します。
データベースパスワード
ターゲットデータベースへの接続に使用するパスワードを入力します。
説明カスタムアカウントを使用する場合、そのアカウントには書き込み権限が必要です。アカウントとパスワードの形式は <user>:<password> です。たとえば、Redis インスタンスのカスタムアカウントが admin、パスワードが Rp829dlwa の場合、データベースパスワードとして「admin:Rp829dlwa」を入力します。
接続方法
必要に応じて、暗号化されていない接続 または SSL 暗号化接続 を選択します。
タスクオブジェクトを設定し、ページ下部の 次へ:高度な設定 をクリックします。
設定
説明
移行タイプ
必要に応じて、移行タイプ を選択します。
完全移行+増分移行(デフォルト):ネイティブの Redis 同期ロジックを使用して、メモリスナップショットとしてデータをターゲットへ書き込みます。これにより、ソースデータベースを停止せずに移行が可能です。
ソースデータベースで SYNC または PSYNC の権限がない場合は、完全データ移行 を選択します。
完全データ移行:SCAN コマンドを使用してソースデータベース全体を走査し、走査したデータをターゲットへ書き込みます。データ整合性を保つため、移行中はソースインスタンスへの新規データの書き込みを避けてください。
競合テーブルの処理モード
事前チェックを行い、エラー時にブロック(デフォルト):ターゲットデータベースにキーが存在するかどうかを確認します。
キーが存在する場合、事前チェック段階でエラーが報告され、移行タスクは開始されません。キーが存在しない場合、チェックは通過します。
無視して続行:「ターゲットデータベース内の既存オブジェクトのチェック」をスキップします。同名のキーがターゲットデータベースにすでに存在する場合、それらは上書きされます。
ソースオブジェクト および 選択中のオブジェクト
ソースオブジェクト ボックスで移行対象のオブジェクトを選択し、
をクリックして 選択中のオブジェクト ボックスへ移動します。選択済みオブジェクトを削除するには、選択中のオブジェクト ボックスで該当オブジェクトをクリックし、
をクリックして ソースオブジェクト ボックスへ戻します。説明移行の粒度はデータベース単位(DB 0 ~ DB 255)です。
高度な設定を構成し、ページ下部の 次へ:データ検証 をクリックします。
通常はデフォルト設定のままで問題ありません。詳細については、「付録:高度な設定」をご参照ください。
検証設定を構成し、ページ下部の 次へ:タスクの保存と事前チェック をクリックします。
通常はデフォルト設定のままで問題ありません。詳細については、「DTS 同期または移行インスタンス向けのデータ検証の構成」をご参照ください。
事前チェックを実行します。事前チェックが完了したら、次へ:購入 をクリックします。
事前チェックで 警告 または 失敗 が表示された場合は、それぞれを個別に対処する必要があります。各項目について、詳細の表示 をクリックして、提供された手順に従って修正してください。また、アラートの詳細を確認 をクリックして項目を無視することもできますが、その場合、データ整合性の不一致が発生し、ビジネスにリスクを及ぼす可能性があります。詳細については、「事前チェックの問題点」をご参照ください。問題を解決した後は、再度事前チェックを実行してください。
購入 ページで設定を構成し、購入と開始 をクリックします。
(任意)DTS 移行リンクの リソースグループ を選択します。デフォルトのリソースグループ がデフォルトで使用されます。
(任意)DTS 移行リンクのインスタンスクラスを選択します。より高いインスタンスクラスは、より高速な移行速度を提供しますが、コストも高くなります。デフォルトは large です。詳細については、「データ移行リンクの仕様」をご参照ください。
利用規約を読み込んで選択してください。
購入後、移行タスクが開始されます。進行状況は「データ移行」ページで確認できます。
次のステップ
増分移行を実行した場合、移行完了後にコンソールからタスクを手動で終了またはリリースする必要があります。
移行されたデータの検証が可能です。詳細については、「移行データの検証」をご参照ください。
関連ドキュメント
オンライン移行を必要としないデータベースの場合は、redis-cli などの軽量ツールを使用して AOF ファイルをインポートすることで、データ移行を実行できます。詳細については、「AOF ファイルからのデータ移行」をご参照ください。
よくある質問
接続テストが失敗するのはなぜですか?
以下の項目を確認してください:
アカウントまたはパスワードが正しくありません。Redis パスワードの形式は
user:passwordです。詳細については、「インスタンスのログイン方法」をご参照ください。ソースデータベースがオンプレミスデータセンターまたは他社クラウドにある場合、ネットワークファイアウォールが存在する可能性があります。DTS サーバーの IP アドレスを、対応するリージョンのファイアウォールホワイトリストに手動で追加し、DTS からのアクセスを許可する必要があります。詳細については、「DTS サーバーの CIDR ブロックをホワイトリストに追加」をご参照ください。
タスクが失敗するのはなぜですか?
移行中、インスタンスのスケールアップ/ダウン、インスタンスタイプの変更、およびソースまたはターゲットデータベースのエンドポイントの変更などの操作を行うと、タスクが失敗します。タスクを再構成する必要があります。
ターゲットインスタンスのメモリが不足している場合、またはクラスターインスタンスでシャードのメモリ使用量が上限に達している場合、DTS タスクはメモリ不足(OOM)エラーにより失敗します。
ターゲットインスタンスで透過的データ暗号化(TDE)が有効になっている場合、DTS を使用したデータ移行はサポートされていません。
なぜデータの不整合が発生するのですか?
ソースデータベースの一部のキーに生存時間(TTL)ポリシーが設定されている場合、ターゲットデータベースのキー数がソースより少なくなることがあります。これは、期限切れのキーが即座に削除されないためです。
List オブジェクトの場合、DTS は PSYNC または SYNC を使用してデータを転送する際に、ターゲットの既存データに対して FLUSH 操作を実行しません。これにより、重複データが発生する可能性があります。
完全移行中にネットワークが切断された場合、DTS が完全移行を複数回再試行することがあります。このプロセスでは、同名のキーが自動的に上書きされます。再試行中にソースデータベースで削除操作が実行された場合、そのコマンドはターゲットへ同期されません。これにより、ターゲットデータベースのデータ量がソースより多くなる可能性があります。
事前チェックで Redis の立ち退きポリシーが noeviction に設定されているかを検証するのはなぜですか?
Tair (Redis OSS-compatible) のデフォルトのデータ立ち退きポリシー(maxmemory-policy)は volatile-lru です。ターゲットデータベースのメモリが不足した場合、データ立ち退きがトリガーされ、ソースとターゲットのデータ整合性が不一致になる可能性があります。ただし、タスクの通常の動作には影響しません。この問題を防ぐため、ターゲットデータベースのデータ立ち退きポリシーを noeviction に設定してください。このポリシーを使用した場合、ターゲットデータベースのメモリが不足すると、データ書き込みが失敗し、タスクも失敗します。ただし、立ち退きによるデータ損失は発生しません。データ立ち退きポリシーの詳細については、「Redis データ立ち退きポリシー」をご参照ください。
ソースデータベースに DTS_REDIS_TIMESTAMP_HEARTBEAT キーが存在するのはなぜですか?
移行および同期の品質を確保するため、DTS はソースデータベースに DTS_REDIS_TIMESTAMP_HEARTBEAT をプレフィックスとするキーを挿入し、更新タイムスタンプを記録します。ソースデータベースがクラスタアーキテクチャを使用している場合、DTS はこのキーを各シャードに挿入します。DTS はタスク実行中にこのキーをフィルター処理し、タスク終了後にキーは自動的に有効期限切れになります。
増分移行でサポートされるコマンドはどれですか?
以下のコマンドがサポートされています:
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
EVAL または EVALSHA によって呼び出される Lua スクリプトについては、ターゲットが明示的な実行結果を返さないため、DTS はスクリプトの実行成功を確認できません。
付録:高度な設定
設定 | 説明 |
失敗した接続の再試行時間 | 移行タスクの接続に失敗した場合、DTS は継続的に接続をリトライします。デフォルトのリトライ期間は 720 分であり、有効範囲は 10 ~ 1440 分です。リトライ期間内に接続が復旧した場合、移行タスクは自動的に再開されます。それ以外の場合はタスクが失敗します。ビジネス要件に応じて、リトライ期間をカスタマイズできます。30 分以上を設定することを推奨します。 リトライ期間中も DTS サービスの課金は継続されます。 |
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 | 移行中、ソースまたはターゲットデータベースで接続性以外の問題が発生した場合、DTS はエラーを報告し、継続的にリトライします。デフォルトのリトライ期間は 10 分であり、有効範囲は 10 ~ 1440 分です。リトライ期間内に関連する操作が正常に完了した場合、移行タスクは自動的に再開されます。それ以外の場合はタスクが失敗します。10 分以上を設定することを推奨します。 |
完全なデータ移行のスロットリングを有効化 | 増分データの書き込みは、ターゲットインスタンスの負荷を高める可能性があります。1 秒あたりの行数およびデータ量の上限を設定することで、増分移行の負荷を制御(スロットル)できます。これにより、ターゲットインスタンスの負荷を低減できます。デフォルトは いいえ です。 |
環境タグ | インスタンスを識別するために環境タグを選択できます。 |
ターゲットデータベースにおけるキーの有効期限延長 | この設定により、ターゲットデータベース内のキーの有効期限が延長されます。デフォルトの延長時間は 1800 秒です。移行時点でキーの有効期限が切れている場合、そのキーはターゲットデータベースへ移行されません。 |
スレーブノードの使用 | 自主管理のソース Redis の インスタンスモード が クラスター の場合、スレーブノードからデータを読み取るかどうかを選択できます。デフォルトは いいえ であり、マスターノードからデータを読み取ります。 |
ETL 機能の設定 | 抽出・変換・書き出し(ETL)機能を構成するかどうかを選択します。ETL の詳細については、「ETL とは?」をご参照ください。
|
モニタリングおよびアラート通知 | アラート通知を構成するかどうかを指定します。同期が失敗した場合、または遅延が指定されたしきい値を超えた場合、アラート連絡先へ通知が送信されます。
|