ある Tair (Redis OSS-compatible) インスタンスから別の Tair (Redis OSS-compatible) インスタンスにデータを移行したいが、宛先インスタンスをまだ作成していない場合は、バックアップセットのクローンまたはデータフラッシュバック機能を使用して、新しいインスタンスにデータをクローンすることをお勧めします。宛先インスタンスをすでに作成している場合は、Data Transmission Service (DTS) を使用してインスタンス間で一方向のデータ移行を実行することをお勧めします。ソースインスタンスと宛先インスタンスは、自主管理 Redis データベースまたは Tair (Redis OSS-compatible) インスタンスにすることができます。DTS は、完全データ移行と増分データ移行をサポートしています。データ移行タスクを構成する際に、両方のタイプを選択してサービスの継続性を確保できます。このトピックでは、3 つのデータ移行方法を比較し、DTS を使用して Redis データを移行する方法について説明します。
Tair (Redis OSS-compatible) インスタンス間のデータ移行方法の比較
DTS の特徴
完全移行
DTS は、ソースデータベースからターゲットデータベースにすべての既存データを移行します。完全移行は無料です。
増分移行
完全移行に加えて、DTS はソースデータベースからターゲットデータベースへの増分更新をリアルタイムで同期します。増分移行は、移行されるデータ量に関係なく、タスクの期間に基づいて課金されます。詳細については、「課金項目」をご参照ください。
前提条件
宛先 Tair (Redis OSS-compatible) インスタンスを作成済みであること。宛先インスタンスは、ソースインスタンスが使用するメモリよりも多くのメモリを持つ必要があります。詳細については、「インスタンスの作成」をご参照ください。
ターゲットデータベースの合計メモリは、ソースデータベースが使用するメモリよりも少なくとも 10% 大きくする必要があります。ターゲットデータベースのメモリが不足している場合、データ不整合やタスクの失敗が発生する可能性があります。この場合、ターゲットデータベースをクリアしてタスクを再構成する必要があります。
注意事項
移行中は、インスタンスのスケール、インスタンスタイプの変更、ソースまたはターゲットデータベースのエンドポイントの変更を行わないでください。これらの操作は移行タスクの失敗を引き起こす可能性があり、再構成が必要になります。移行プロセスはソースデータベースとターゲットデータベースの両方でリソースを消費するため、オフピーク時間に移行を実行することをお勧めします。
手順
移行タスクリストページに移動します。
Data Management (DMS) コンソールにログインします。
上部のメニューバーで、 を選択します。
[移行タスク] の右側で、宛先インスタンスが配置されているリージョンを選択します。
[タスクの作成] をクリックします。
ソースデータベースとターゲットデータベースを構成し、ページの下部にある [接続テストと次へ] をクリックします。
カテゴリ
構成
説明
なし
タスク名
DTS タスクの名前。DTS はタスク名を自動的に生成します。タスクを簡単に識別できるような説明的な名前を指定することをお勧めします。一意のタスク名を指定する必要はありません。
ソースデータベース
DMS データベースインスタンスの選択
ソースデータベースを DMS に追加している場合は、ここで選択できます。データベースを選択すると、ソースデータベースの以下のパラメーターを構成する必要はありません。ソースデータベースを DMS に追加していない場合は、このパラメーターをスキップしてください。
データベースタイプ
[Tair/Redis] を選択します。
アクセス方法
ソースデータベースのデプロイメント場所に基づいて接続タイプを選択します。この例では、[クラウドインスタンス] が選択されています。
インスタンスリージョン
インスタンスが存在するリージョンを選択します。
アカウント間の移行
この例では、同じ Alibaba Cloud アカウント内でデータを移行する方法を示します。[いいえ] を選択します。
インスタンス ID
ソースインスタンスの ID を選択します。
認証方法
必要に応じて [パスワードログイン] または [パスワードなしのログイン] を選択します。この例では、[パスワードログイン] が選択されています。
説明インスタンスで VPC 経由のパスワードなしのアクセス が有効になっていない場合は、[パスワードログイン] を選択します。
データベースパスワード
ソースインスタンスへの接続に使用するアカウントのパスワードを入力します。
説明このパラメーターはオプションです。パスワードが設定されていない場合は、空のままにすることができます。
パスワードは <user>:<password> 形式である必要があります。たとえば、ユーザー名が admin でパスワードが Rp829dlwa の場合、admin:Rp829dlwa と入力します。
宛先データベース
既存のDMSデータベースインスタンスの選択
ターゲットデータベースを DMS に追加している場合は、ここで選択できます。データベースを選択すると、ターゲットデータベースの以下のパラメーターを構成する必要はありません。ターゲットデータベースを DMS に追加していない場合は、このパラメーターをスキップしてください。
データベースタイプ
デフォルトで [Tair/Redis] が選択されています。
アクセス方法
[クラウドインスタンス] を選択します。
インスタンスリージョン
宛先インスタンスが存在するリージョンを選択します。
インスタンス ID
宛先インスタンスの ID を選択します。
認証方法
必要に応じて [パスワードログイン] または [パスワードなしのログイン] を選択します。この例では、[パスワードログイン] が選択されています。
説明インスタンスで VPC 経由のパスワードなしのアクセス が有効になっていない場合は、[パスワードログイン] を選択します。
データベースパスワード
ターゲットデータベースに接続するためのパスワードを入力します。
説明パスワードは <user>:<password> 形式である必要があります。たとえば、Redis インスタンスのユーザー名が admin でパスワードが Rp829dlwa の場合、admin:Rp829dlwa と入力します。
タスクオブジェクトを構成し、ページの下部にある [次へ: 高度な設定] をクリックします。
構成
説明
移行タイプ
必要に応じて 移行タイプ を選択します。
[完全移行 + 増分移行] (デフォルト): ネイティブの Redis 同期ロジックを使用して、データをメモリスナップショットとして宛先に書き込みます。これにより、ソースデータベースを停止せずに移行できます。
ソースデータベースに SYNC または PSYNC 権限がない場合は、完全データ移行 を選択します。
完全データ移行: SCAN コマンドを使用してソースデータベース全体を走査し、走査したデータを宛先に書き込みます。データ整合性を確保するため、移行中はソースインスタンスに新しいデータを書き込まないでください。
競合テーブルの処理モード
[事前チェックしてエラー時にブロック] (デフォルト): ターゲットデータベースにキーが存在するかどうかを確認します。
キーが存在する場合、事前チェックフェーズでエラーが報告され、移行タスクは開始されません。キーが存在しない場合、チェックは合格します。
[無視して続行]: [ターゲットデータベース内の既存オブジェクトのチェック] をスキップします。同じ名前のキーがターゲットデータベースにすでに存在する場合、それらは上書きされます。
ソースオブジェクト と 選択中のオブジェクト
ソースオブジェクト ボックスで移行するオブジェクトを選択し、
をクリックして 選択中のオブジェクト ボックスに移動します。選択したオブジェクトを削除するには、選択中のオブジェクト ボックスでそれをクリックし、
をクリックして ソースオブジェクト ボックスに戻します。説明移行の粒度はデータベースレベル (DB 0 から DB 255) です。
高度な設定を構成し、ページの下部にある [次へ: データ検証] をクリックします。
ほとんどの場合、デフォルト設定を維持できます。詳細については、「付録: 高度な設定」をご参照ください。
検証設定を構成し、ページの下部にある [次へ: タスクを保存して事前チェック] をクリックします。
ほとんどの場合、デフォルト設定を維持できます。詳細については、「DTS 同期または移行インスタンスのデータ検証を構成する」をご参照ください。
事前チェックを実行します。事前チェックが完了したら、[次へ: 購入] をクリックします。
事前チェックで [警告] または [失敗] した項目が返された場合は、それらを 1 つずつ対処する必要があります。[詳細の表示] をクリックして、提供された指示に基づいて項目を修正できます。また、[アラート詳細の確認] をクリックして項目を無視することもできますが、これによりデータ不整合が発生し、ビジネスにリスクをもたらす可能性があります。詳細については、「事前チェックの問題」をご参照ください。問題を解決した後、事前チェックを再度実行します。
[購入] ページで設定を構成し、[購入して開始] をクリックします。
(オプション) DTS 移行リンクの [リソースグループ] を選択します。デフォルトでは [デフォルトのリソースグループ] が使用されます。
(オプション) DTS 移行リンクのインスタンスクラスを選択します。インスタンスクラスが高いほど移行速度は速くなりますが、コストも高くなります。デフォルトは large です。詳細については、「データ移行リンクの仕様」をご参照ください。
サービス利用規約を読んで選択します。
購入後、移行タスクが開始されます。データ移行ページでその進捗状況を確認できます。
次のステップ
増分移行を実行した場合、移行完了後にコンソールでタスクを手動で終了またはリリースする必要があります。
移行されたデータを検証できます。詳細については、「移行されたデータの検証」をご参照ください。
リファレンス
既存の Tair (Redis OSS-compatible) インスタンスの完全データを新しい Tair (Redis OSS-compatible) インスタンスにクローンしたい場合は、バックアップと復元機能を使用できます。バックアップと復元機能を使用して新しいインスタンスにデータをクローンする場合と、DTS を使用してデータを移行する場合の違いについては、「Tair (Redis OSS-compatible) インスタンス間のデータ移行方法の比較」をご参照ください。
詳細については、「バックアップセットからの復元」および「特定の時点への復元」をご参照ください。
よくある質問
接続テストが失敗するのはなぜですか?
次の項目を確認してください:
アカウントまたはパスワードが正しくありません。Redis のパスワードの形式は
user:passwordです。詳細については、「インスタンスへのログオン方法」をご参照ください。ソースデータベースがオンプレミスのデータセンターまたはサードパーティのクラウドにある場合、ネットワークファイアウォールが存在する可能性があります。DTS からのアクセスを許可するには、対応するリージョンの DTS サーバーの IP アドレスをファイアウォールの許可リストに手動で追加する必要があります。詳細については、「DTS サーバーの CIDR ブロックを許可リストに追加する」をご参照ください。
タスクが失敗するのはなぜですか?
移行中に、スケーリング、インスタンスタイプの変更、ソースまたはターゲットデータベースのエンドポイントの変更などの操作を行うと、タスクが失敗します。タスクを再構成する必要があります。
宛先インスタンスのメモリが不足している場合、またはクラスターインスタンスでシャードがメモリ制限に達した場合、DTS タスクはメモリ不足 (OOM) エラーで失敗します。
宛先インスタンスで TDE (透過的データ暗号化) が有効になっている場合、DTS を使用したデータ移行はサポートされていません。
データ不整合が発生するのはなぜですか?
ソースデータベースの一部のキーに有効期限ポリシー (Expire) が設定されている場合、宛先データベースのキーの数がソースよりも少なくなることがあります。これは、有効期限が切れたキーがすぐに削除されなかった可能性があるためです。
List オブジェクトの場合、DTS は PSYNC または SYNC を使用してデータを転送する際に、宛先の既存データに対して FLUSH 操作を実行しません。これにより、データが重複する可能性があります。
完全移行中にネットワークが中断された場合、DTS は完全移行を複数回リトライすることがあります。このプロセスでは、同じ名前のキーが自動的に上書きされます。リトライ中にソースデータベースで削除操作が実行された場合、そのコマンドは宛先に同期されません。これにより、宛先データベースのデータがソースよりも多くなる可能性があります。
Q: Tair (Redis OSS-compatible) 2.8 インスタンスを選択できないのはなぜですか?
A: DTS は Tair (Redis OSS-compatible) 2.8 インスタンスをサポートしていません。
事前チェックで 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, and BRPOPLPUSH
DECR, DECRBY, and DEL
EVAL, EVALSHA, EXEC, EXPIRE, and EXPIREAT
FLUSHALL and FLUSHDB
GEOADD and GETSET
HDEL, HINCRBY, HINCRBYFLOAT, HMSET, HSET, and HSETNX
INCR, INCRBY, and INCRBYFLOAT
LINSERT, LPOP, LPUSH, LPUSHX, LREM, LSET, and LTRIM
MOVE, MSET, MSETNX, and MULTI
PERSIST, PEXPIRE, PEXPIREAT, PFADD, PFMERGE, PSETEX, and PUBLISH
RENAME, RENAMENX, RESTORE, RPOP, RPOPLPUSH, RPUSH, and RPUSHX
SADD, SDIFFSTORE, SELECT, SET, SETBIT, SETEX, SETNX, SETRANGE, SINTERSTORE, SMOVE, SPOP, SREM, and SUNIONSTORE
ZADD, ZINCRBY, ZINTERSTORE, ZREM, ZREMRANGEBYLEX, ZUNIONSTORE, ZREMRANGEBYRANK, and ZREMRANGEBYSCORE
XADD, XCLAIM, XDEL, XAUTOCLAIM, XGROUP CREATECONSUMER, and XTRIM
EVAL または EVALSHA によって呼び出される Lua スクリプトの場合、宛先が実行結果を明示的に返さないため、DTS はスクリプトが正常に実行されたかどうかを確認できません。