このトピックでは、data Transmission Service (DTS) を使用して、自己管理RedisデータベースからTair (Redis OSS-Compatible)インスタンスにデータを移行する方法について説明します。 DTSは、完全および増分データ移行をサポートします。 セルフマネージドRedisデータベースからAlibaba Cloudにデータを移行する場合、サービスの継続性を確保するために2つの移行タイプを選択できます。
前提条件
自己管理Redisデータベースのエンジンバージョンは、2.8、3.0、3.2、4.0、5.0、または6.0です。
自己管理Redisデータベースは、クラスターアーキテクチャではなくスタンドアロンアーキテクチャで展開されます。
説明自己管理Redisデータベースがクラスターアーキテクチャにデプロイされている場合、データ同期機能を使用してデータを移行できます。 詳細については、「セルフマネージドRedisクラスターからTair (Redis OSS-Compatible)クラスターインスタンスへのデータの同期」をご参照ください。
PSYNCまたはSYNCコマンドは、自己管理Redisデータベースで実行できます。ターゲットTair (Redis OSS-Compatible)データベースの使用可能なストレージ容量は、自己管理Redisデータベースのデータの合計サイズよりも大きくなっています。
使用上の注意
DTSは、完全データ移行中にソースデータベースとターゲットデータベースのリソースを消費します。 これは、データベースサーバの負荷を増加させる可能性がある。 大量のデータを移行したり、サーバーの仕様が要件を満たしていない場合、データベースサービスが利用できなくなることがあります。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。
デフォルトでは、データの削除方法を指定するmaxmemory-policyパラメーターは、Tair (Redis OSS-Compatible)インスタンスのvolatile-lruに設定されています。 デスティネーションインスタンスのメモリが不十分な場合、データの削除により、ソースインスタンスとデスティネーションインスタンスの間でデータの不整合が発生する可能性があります。 この場合、データ同期タスクは実行を停止しません。
データの不整合を防ぐため、ターゲットインスタンスのmaxmemory-policyをnoevictionに設定することを推奨します。 このように、宛先インスタンスのメモリが不十分な場合、データ同期タスクは失敗しますが、宛先インスタンスのデータ損失を防ぐことができます。
説明データ削除ポリシーの詳細については、「Tair (Redis OSS-Compatible)のデフォルトの削除ポリシーは何ですか?」をご参照ください。
ソースデータベースの特定のキーに対して有効期限ポリシーが有効化されている場合、これらのキーは、有効期限が切れた後の最も早い機会に削除されない場合があります。 したがって、宛先データベース内のキーの数は、ソースデータベース内のキーの数よりも少なくてもよい。 INFOコマンドを実行して、ターゲットデータベース内のキーの数を表示できます。
説明有効期限ポリシーが有効になっていない、または有効期限が切れていないキーの数は、ソースデータベースとターゲットデータベースで同じです。
EVALまたはEVALSHAコマンドを実行してLuaスクリプトを呼び出した場合、DTSはこれらのLuaスクリプトがターゲットデータベースで実行されているかどうかを識別できません。 これは、増分データ移行中に、ターゲットデータベースがLuaスクリプトの実行結果を明示的に返さないためです。
PSYNCまたはSYNCコマンドを実行してLISTタイプのデータを転送する場合、DTSはターゲットデータベースの既存のデータに対してFLUSH操作を実行しません。 結果として、宛先データベースは、重複するデータレコードを含み得る。データ移行中に、自己管理型Redisデータベースのシャード数が変更された場合、またはメモリ容量などのデータベースの仕様が変更された場合、タスクを再構成する必要があります。 データの一貫性を確保するために、データ移行タスクを再構成する前に、移行先Redisデータベースに移行されたデータをクリアすることをお勧めします。
データ移行中に、自己管理Redisデータベースのエンドポイントが変更された場合、データ移行タスクを再構成する必要があります。
データ移行タスクが失敗して停止すると、DTSは自動的にタスクを再開します。 ワークロードをターゲットインスタンスに切り替える前に、データ移行タスクを停止またはリリースします。 それ以外の場合、タスクの再開後、ソースデータベースのデータはターゲットインスタンスのデータを上書きします。
スタンドアロンRedisデータベースからクラスターアーキテクチャにデプロイされたRedisデータベースへのデータ移行の制限: 各コマンドは、クラスターアーキテクチャにデプロイされたRedisデータベースの1つのスロットでのみ実行できます。 ソースデータベース内の複数のキーに対して操作を実行し、キーが異なるスロットに属している場合、次のエラーが発生します。
CROSSSLOT Keys in request don't hash to the same slotデータ移行中は、1つのキーに対してのみ操作を実行することを推奨します。 それ以外の場合、移行タスクは中断されます。
ターゲットインスタンスがクラスターアーキテクチャにデプロイされ、ターゲットインスタンスのシャードが使用するメモリ量が上限に達した場合、またはターゲットインスタンスの使用可能なストレージスペースが不十分な場合、メモリ不足 (OOM) によりデータ同期タスクが失敗します。
データ移行の安定性を確保するために、DTSは、データが更新されたときに記録するキーをソースデータベースに挿入します。 ソースデータベースがクラスターアーキテクチャにデプロイされている場合、DTSはクラスターの各シャードにキーを挿入します。 キーはデータ移行中に除外されます。 データ移行タスクが完了すると、キーは期限切れになります。
ソースデータベースが読み取り専用データベースである場合、またはデータ移行タスクの実行に使用されるソースデータベースアカウントにSETEXコマンドを実行する権限がない場合、報告されるレイテンシが不正確になる可能性があります。
ターゲットインスタンスに対して透過的データ暗号化 (TDE) が有効になっている場合、DTSを使用してデータを移行することはできません。
課金ルール
移行タイプ | タスク設定料金 | インターネットトラフィック料金 |
スキーマ移行とフルデータ移行 | 無料です。 | インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、「課金の概要」をご参照ください。 |
増分データ移行 | 有料。 詳細については、「課金の概要」をご参照ください。 |
移行タイプ
フルデータ移行
DTSは、選択したオブジェクトの既存のデータを自己管理RedisデータベースからターゲットTair (Redis OSS-Compatible)インスタンスに移行します。
説明フルデータ移行のみを実行する場合は、フルデータ移行中に自己管理型RedisデータベースでDDLステートメントを実行しないことをお勧めします。 これによりデータの整合性が保証されます。
増分データ移行
フルデータ移行が完了すると、DTSは自己管理RedisデータベースからターゲットTair (Redis OSS-Compatible)インスタンスに増分データを同期します。 増分データ移行により、自己管理RedisデータベースからAlibaba Cloudにデータを移行する際に、サービスの継続性を確保できます。
増分移行可能なコマンド
APPEND
BITOP、BLPOP、BRPOP、およびBRPOPLPUSH
DECR、DECRFY、およびDEL
EVAL、EVALSHA、EXEC、EXPIRE、EXPIREAT
FLUSHALLおよびFLUSHDB
GEOADDとGETSET
HDEL、HINCRBY、HINCRBYFLOAT、HMSET、HSET、およびHSETNX
INCR、INCRBY、およびINCRBYFLOAT
LINSERT、LPOP、LPUSH、LUSHX、LREM、LSET、およびLTRIM
移動、MSET、MSETNX、およびマルチ
PERSIST、PEXPIRE、PEXPIREAT、PFADD、PFMERGE、PSETEX、および出版物
RENAME、RENAMENX、RESTORE、RPOP、RPOPLPUSH、RPUSH、およびRPUSHX
SADD、SDIFFSTORE、SELECT、SET、SETBIT、SETEX、SETNX、SETRANGE、SINTERSTORE、SMOVE、SPOP、SREM、およびSUUNIONSTORE
ZADD、ZINCRBY、ZINTERSTORE、ZREM、ZREMRANGEBYLEX、ZUNION STORE、ZREMRANGEBYRANK、およびZREMRANGEBYSCORE
XADD、XCLAIM、XDEL、XAUTOCLAIM、XGROUP CREATECONSUMER、およびXTRIM
増分データ移行前の準備
増分データ移行タスクが期待どおりに実行されるようにするには、レプリケーション出力バッファの制限を解除することを推奨します。 このトピックでは、例ではLinuxで実行されるサーバーを使用します。
フルデータ移行のみを実行する場合は、次の手順をスキップしてください。
redis-cliプログラムを使用して、自己管理Redisデータベースに接続します。
説明redisクライアントをインストールした後、Redis-cliプログラムを使用できます。 詳細については、Redisコミュニティの公式Webサイトをご覧ください。
redis-cli -h <host> -p <port> -a <password>説明<host>: 自己管理Redisデータベースへの接続に使用されるエンドポイント。 この例では127.0.0.1を使用できます。
<port>: 自己管理Redisデータベースへの接続に使用されるサービスポート番号。 既定のポート番号は 6379 です。
<password>: 自己管理Redisデータベースへの接続に使用されるパスワード。
例:
redis-cli -h 127.0.0.1 -p 6379 -a Test123456次のコマンドを実行して、レプリケーション出力バッファの制限を解除します。
config set client-output-buffer-limit 'slave 0 0 0'
手順
最初にDTSコンソールにログインします。
説明データ管理 (DMS) コンソールにリダイレクトされている場合は、
の
アイコンをクリックして、以前のバージョンのDTSコンソールに移動します。左側のナビゲーションウィンドウで、データ移行 をクリックします。
[移行タスク] ページの上部で、RDSインスタンスが存在するリージョンを選択します。
ページの右上隅にある [移行タスクの作成] をクリックします。
データ移行タスクのソースデータベースとターゲットデータベースを設定します。

セクション
パラメーター
説明
非該当
タスク名
DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
移行元データベース
インスタンスタイプ
ソースデータベースのアクセス方法。 この例では、パブリックIPアドレスを持つユーザー作成データベースが選択されています。
説明別のインスタンスタイプを選択した場合は、自己管理データベースに必要な環境を設定する必要があります。 詳細については、「準備の概要」をご参照ください。
インスタンスリージョン
[インスタンスタイプ] パラメーターに [パブリックIPアドレスを持つユーザー作成データベース] を選択した場合、[インスタンスリージョン] パラメーターを設定する必要はありません。
説明セルフマネージドRedisデータベースにホワイトリストが設定されている場合は、DTSサーバーのCIDRブロックをデータベースのホワイトリストに追加する必要があります。 [インスタンスリージョン] の横にある [DTS IP を取得する] をクリックして、DTS サーバーの CIDR ブロックを取得します。
データベースエンジン
移行元ディスクのタイプを設定します。 [Redis] を選択します。
インスタンスモード
このパラメーターの値はスタンドアロンに設定されており、クラスターに変更することはできません。
Hostname or IP Address
自己管理Redisデータベースへの接続に使用されるアドレス。 この例では、パブリックIPアドレスが使用されます。
ポート番号
セルフマネージドRedisデータベースへの接続に使用されるサービスポート番号。 デフォルト値: 6379
説明自己管理Redisデータベースのサービスポートは、インターネット経由でアクセスできる必要があります。
データベースパスワード
自己管理Redisデータベースへの接続に使用されるパスワード。
説明ソースデータベースに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
ターゲットデータベース
インスタンスタイプ
ターゲットデータベースのタイプ。 [Redisインスタンス] を選択します。
インスタンスリージョン
ターゲットTair (Redis OSS-Compatible)インスタンスが存在するリージョン。
RedisインスタンスID
ターゲットTair (Redis OSS-Compatible)インスタンスのID。
データベースパスワード
ターゲットTair (Redis OSS-Compatible)インスタンスへの接続に使用されるデータベースパスワード。
説明RDSインスタンスに関する情報を指定した後、[データベースパスワード] の横にある [接続のテスト] をクリックして、情報が有効かどうかを確認できます。 情報が有効な場合は、[合格] メッセージが表示されます。 [失敗] メッセージが表示されたら、[失敗] の横にある [チェック] をクリックします。 次に、チェック結果に基づいて情報を変更します。
ページの右下隅にある [ホワイトリストの設定] および [次へ] をクリックします。
警告DTSサーバーのCIDRブロックがデータベースまたはインスタンスのホワイトリスト、またはECSセキュリティグループルールに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
移行するオブジェクトと移行タイプを選択します。

パラメーター
説明
移行タイプの選択
フルデータ移行のみを実行するには、[フルデータ移行] のみを選択します。
データ移行中のサービスの継続性を確保するには、[フルデータ移行] および [増分データ移行] を選択します。
説明増分データ移行が選択されていない場合、データ移行中に自己管理Redisデータベースにデータを書き込まないことを推奨します。 これにより、ソースデータベースとターゲットデータベース間のデータの整合性が確保されます。
移行するオブジェクトの選択
[使用可能] セクションから1つ以上のオブジェクトを選択し、
アイコンをクリックして、オブジェクトを [選択済み] セクションに追加します。 説明移行するオブジェクトとしてデータベースのみを選択できます。
オブジェクトの名前を変更するかどうかを指定する
移行するオブジェクト。 このシナリオでは、オブジェクトの名前を変更することはできません。
ソースデータベースとターゲットデータベースへの接続が失敗した場合のリトライ時間範囲の指定
デフォルトでは、DTSがソースデータベースまたはターゲットデータベースへの接続に失敗した場合、DTSは次の12時間以内に再試行します。 業務要件に基づいて再試行時間範囲を指定できます。 指定された時間範囲内にDTSがソースデータベースとターゲットデータベースに再接続された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。
説明DTSがソースデータベースとターゲットデータベースへの再接続を試行する再試行時間内に、DTSインスタンスの料金が請求されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースインスタンスとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
[事前チェック] をクリックします。
説明移行タスクが開始される前にプリチェックが実行されます。 移行タスクは、事前チェックが成功した後にのみ開始されます。
事前チェックが失敗した場合は、失敗した各チェック項目の横にある
アイコンをクリックして、関連する詳細を表示します。 指示に従って問題を修正し、事前チェックを再度実行します。
[次へ] をクリックします。
[設定の確認] ダイアログボックスで、[チャネル仕様] パラメーターを設定します。 次に、[データ送信サービス (従量課金) サービス規約] を読み、選択します。
[今すぐ購入してスタート] をクリックして、移行タスクを開始します。
フルデータ移行
フルデータ移行タスクを手動で停止しないでください。 フルデータ移行タスクを手動で停止すると、RDSインスタンスに移行されたデータが不完全になる可能性があります。 データ移行タスクが自動的に停止するまで待つことができます。
増分データ移行
増分データ移行タスクは自動的に停止しません。 タスクを手動で停止する必要があります。
説明増分データ移行タスクを適切な時点で手動で停止することを推奨します。 たとえば、オフピーク時やワークロードをApsaraDB RDS For MySQLインスタンスに切り替える前にタスクを停止できます。
増分データ移行とデータ移行タスクが遅延しませんがデータ移行タスクのプログレスバーに表示されるまで待ちます。 その後、ソースデータベースへのデータの書き込みを数分間停止します。 増分データ移行のレイテンシは、プログレスバーに表示され得る。
増分データ移行のステータスが [データ移行タスクは遅延なし] に変わるまで待ちます。 次に、移行タスクを手動で停止します。
ワークロードをターゲットTair (Redis OSS-Compatible)インスタンスに切り替えます。
次のステップ
データ移行に使用されるデータベースアカウントには、読み取りおよび書き込み権限があります。 データベースのセキュリティを確保するには、データ移行タスクの完了後に、自己管理RedisデータベースとTair (Redis OSS-Compatible)インスタンスのパスワードを変更する必要があります。