このトピックでは、data Transmission Service (DTS) を使用して、自己管理RedisデータベースからApsaraDB for Redisインスタンスにデータを移行する方法について説明します。 DTSは、完全および増分データ移行をサポートします。 セルフマネージドRedisデータベースからAlibaba Cloudにデータを移行する場合、サービスの継続性を確保するために2つの移行タイプを選択できます。
前提条件
自己管理RedisデータベースとApsaraDB for Redisインスタンスが作成されます。 ApsaraDB For Redisインスタンスの作成方法の詳細については、「手順1: ApsaraDB for Redisインスタンスの作成」をご参照ください。
自己管理Redisデータベースのエンジンバージョンは、2.8、3.0、3.2、4.0、5.0、または6.0です。
セルフマネージドRedisデータベースで
PSYNC
またはSYNC
コマンドを実行できます。ターゲットApsaraDB for Redisデータベースの使用可能なストレージ容量は、自己管理Redisデータベースのデータの合計サイズよりも大きくなっています。
使用上の注意
DTSは、完全データ移行中にソースデータベースとターゲットデータベースのリソースを消費します。 これは、データベースサーバの負荷を増加させる可能性がある。 大量のデータを移行したり、サーバーの仕様が要件を満たしていない場合、データベースサービスが利用できなくなることがあります。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。
デフォルトでは、データの削除方法を指定するmaxmemory-policyパラメーターは、ApsaraDB for Redisインスタンスのvolatile-lruに設定されています。 デスティネーションインスタンスのメモリが不十分な場合、データの削除により、ソースインスタンスとデスティネーションインスタンスの間でデータの不整合が発生する可能性があります。 この場合、データ同期タスクは実行を停止しません。
データの不整合を防ぐため、ターゲットインスタンスのmaxmemory-policyをnoevictionに設定することを推奨します。 このように、宛先インスタンスのメモリが不十分な場合、データ同期タスクは失敗しますが、宛先インスタンスのデータ損失を防ぐことができます。
説明データ削除ポリシーの詳細については、ApsaraDB for Redisのデフォルトの削除ポリシーは何ですか?
ソースデータベースの特定のキーに対して有効期限ポリシーが有効化されている場合、これらのキーは、有効期限が切れた後の最も早い機会に削除されない場合があります。 したがって、宛先データベース内のキーの数は、ソースデータベース内のキーの数よりも少なくてもよい。 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を使用してデータを移行することはできません。
課金ルール
移行タイプ | インスタンス設定料金 | インターネットトラフィック料金 |
フルデータ移行 | 無料です。 | この例では無料です。 |
完全なデータ移行と増分データ移行 | 有料。 詳細については、「課金の概要」をご参照ください。 |
移行タイプ
フルデータ移行
Data Transmission Service (DTS) は、オブジェクトの既存のすべてのデータをソース自己管理RedisデータベースからターゲットApsaraDB for Redisインスタンスに移行します。
増分データ移行
完全データ移行が完了すると、DTSは増分データをソースの自己管理RedisデータベースからターゲットApsaraDB for Redisインスタンスに移行します。 増分データ移行は、自己管理型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'
手順
[データ移行タスク] ページに移動します。
データ管理 (DMS) コンソール にログインします。
上部のナビゲーションバーで、DTSポインタを上に移動します。
を選択します。
説明実際の操作は、DMSコンソールのモードとレイアウトによって異なります。 詳細については、「シンプルモード」および「DMSコンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。
に行くこともできます 新しいDTSコンソールのデータ移行ページ。
の右側にあるドロップダウンリストからデータ移行タスク、データ移行インスタンスが存在するリージョンを選択します。
説明新しいDTSコンソールを使用する場合は、左上隅にデータ移行インスタンスが存在するリージョンを選択する必要があります。
[タスクの作成] をクリックします。 タスクの作成ウィザードで、ソースデータベースとターゲットデータベースを設定します。 次の表にパラメーターを示します。
セクション
パラメーター
説明
非該当
タスク名
DTSタスクの名前。 タスク名は自動生成されます。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
ソースデータベース
既存のDMSデータベースインスタンスの選択
使用するデータベースインスタンス。 ビジネス要件に基づいて、既存のインスタンスを使用するかどうかを選択できます。
既存のインスタンスを選択すると、DTSはデータベースのパラメーターを自動的に入力します。
既存のインスタンスを選択しない場合は、次のデータベース情報を設定する必要があります。
データベースタイプ
移行元ディスクのタイプを設定します。 [ApsaraDB for Redis Enhanced Edition (Tair)] を選択します。
アクセス方法
ソースデータベースのアクセス方法。 この例では、ECS上の自己管理データベースが選択されています。
インスタンスリージョン
ソースRedisデータベースが存在するリージョン。
Alibaba Cloudアカウント全体でのデータの複製
Alibaba Cloudアカウント間でデータを移行するかどうかを指定します。 この例では、[いいえ] が選択されています。
ECSインスタンスID
ソースRedisデータベースをホストするElastic Compute Service (ECS) インスタンスのID。
説明ソースRedisデータベースがクラスターアーキテクチャにデプロイされている場合は、マスターノードが存在するECSインスタンスのIDを選択します。
インスタンスモード
ソースRedisデータベースがデプロイされるアーキテクチャ。 [スタンドアロン] または [クラスター] を選択します。
ポート番号
ソースRedisデータベースのサービスポート番号。 デフォルト値: 6379
説明ソースRedisデータベースがクラスターアーキテクチャにデプロイされている場合は、マスターノードのサービスポート番号を入力します。
データベースパスワード
ソースRedisデータベースのパスワード。
説明このパラメーターはオプションで、パスワードが設定されていない場合は空のままにできます。
データベースのパスワードは <user >:< password> 形式です。 たとえば、ソースRedisデータベースへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。
暗号化
ソースデータベースへの接続を暗号化するかどうかを指定します。 ビジネス要件に基づいて、非暗号化 または SSL 暗号化 を選択します。
ソースのセルフマネージドRedisインスタンスでSSL暗号化機能が無効になっている場合は、非暗号化 を選択します。
ソースのセルフマネージドRedisデータベースでSSL暗号化機能が有効になっている場合は、SSL 暗号化を選択します。 この場合、CA 証明書をアップロードし、CA キーパラメーターを設定する必要があります。
宛先データベース
既存のDMSデータベースインスタンスの選択
使用するデータベースインスタンス。 ビジネス要件に基づいて、既存のインスタンスを使用するかどうかを選択できます。
既存のインスタンスを選択すると、DTSはデータベースのパラメーターを自動的に入力します。
既存のインスタンスを選択しない場合は、次のデータベース情報を設定する必要があります。
データベースタイプ
ターゲットデータベースのタイプ。 [ApsaraDB for Redis Enhanced Edition (Tair)] を選択します。
アクセス方法
ターゲットデータベースのアクセス方法。 [Alibaba Cloudインスタンス] を選択します。
インスタンスリージョン
ターゲットApsaraDB for Redisインスタンスが存在するリージョン。
インスタンスID
ターゲットApsaraDB for RedisインスタンスのID。
データベースパスワード
ターゲットApsaraDB for Redisインスタンスのデータベースパスワード。
説明データベースのパスワードは <user >:< password> 形式です。 たとえば、ターゲットApsaraDB For Redisインスタンスへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。
このステップのページの下部で、接続性をテストして続行.
警告ソースまたはターゲットデータベースがAlibaba Cloudデータベースインスタンス (ApsaraDB RDS for MySQLインスタンスやApsaraDB for MongoDBインスタンスなど) の場合、DTSは自動的にDTSサーバーのCIDRブロックをインスタンスのホワイトリストに追加します。 ソースデータベースまたはターゲットデータベースがElastic Compute Service (ECS) インスタンスでホストされている自己管理型データベースである場合、DTSは自動的にDTSサーバーのCIDRブロックをECSインスタンスのセキュリティグループルールに追加します。 詳細については、「DTSサーバーのCIDRブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。 ソースデータベースまたはターゲットデータベースが、データセンターにデプロイされているか、サードパーティのクラウドサービスプロバイダーによって提供される自己管理データベースである場合、DTSサーバーのCIDRブロックをデータベースのホワイトリストに手動で追加して、DTSがデータベースにアクセスできるようにする必要があります。
DTSサーバーのCIDRブロックがデータベース、Alibaba Cloudデータベースインスタンス、またはECSセキュリティグループルールのホワイトリストに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、次の対策を含む予防策を講じる必要があります。VPNゲートウェイ、またはSmart Access Gateway。
DTSタスクが完了またはリリースされた後、追加されたCIDRブロックを手動で検出し、ホワイトリストまたはECSセキュリティグループルールから削除することを推奨します。
移行するオブジェクトと詳細設定を設定します。
パラメーター
説明
移行タイプ
移行タイプ。 ビジネス要件に基づいて移行タイプを選択します。 有効な値: 移行タイプ
完全データ移行: SCANコマンドを実行してソースデータベースをトラバースし、トラバースされたデータをターゲットデータベースに書き込みます。 移行中、移行元データベースのパフォーマンスが影響を受け、移行元データベースと移行先データベース間のデータの一貫性が保証されません。
完全なデータ移行 + 増分データ移行: Redisのネイティブ同期ロジックを使用して、メモリスナップショットを使用してターゲットデータベースにデータを書き込みます。 これにより、ソースデータベースはダウンタイムなしで移行されます。
重要タスクがソースデータベースへのアクセスに使用するアカウントに、ソースデータベースでSYNCまたはPSYNCコマンドを実行する権限がない場合は、完全データ移行 を選択します。
完全データ移行 を選択した場合、データの一貫性を確保するために、データ移行中にソースインスタンスにデータを書き込まないでください。
競合テーブルの処理モード
エラーの事前チェックと報告: ターゲットデータベースが空かどうかを確認します。 ターゲットデータベースが空の場合、事前チェックに合格します。 それ以外の場合、事前チェック中にエラーが返され、データ移行タスクを開始できません。
エラーを無視して続行: ターゲットデータベース内のオブジェクトデータの存在検査 チェックアイテム。
警告エラーを無視して続行 を選択した場合、ソースデータベースのデータは、ソースデータと同じキーを持つターゲットデータベースのデータを上書きします。 これにより、宛先データベースのデータが失われる可能性があります。 作業は慎重に行ってください。
ソースオブジェクト
ソースオブジェクト セクションから1つ以上のオブジェクトを選択します。 アイコンをクリックして、選択中のオブジェクト セクションにオブジェクトを追加します。
説明移行するオブジェクトとしてデータベースのみを選択できます。 移行するオブジェクトとしてキーを選択できません。
選択中のオブジェクト
DB 0からDB 255にデータを移行するデータベースを選択したり、移行するデータをプレフィックスでフィルタリングしたりする場合は、オブジェクト名マッピング機能またはフィルタリング機能を使用できます。 選択中のオブジェクト セクションで、移行するデータベースを右クリックします。 スキーマの編集 ダイアログボックスで、パラメーターを設定します。 詳細については、「オブジェクト名のマップ」および「フィルター条件の設定」をご参照ください。
説明一度に複数のオブジェクト名をマップすることはできません。
[次へ:詳細設定] をクリックして詳細設定を構成します。
データ検証設定
データ検証機能の設定方法の詳細については、「データ検証の設定」をご参照ください。
詳細設定
パラメーター
説明
アラートの設定
データ移行タスクのアラートを設定するかどうかを指定します。 タスクが失敗するか、移行の待ち時間が指定されたしきい値を超えると、アラート送信先は通知を受け取ります。 有効な値:
No: アラートを設定しません。
Yes: アラートを設定します。 この場合、アラートしきい値と アラート通知設定 詳細については、「モニタリングとアラートの設定」トピックの「DTSタスクを作成するときのモニタリングとアラートの設定」をご参照ください。
失敗した接続の再試行時間
失敗した接続のリトライ時間範囲。 データ移行タスクの開始後にソースデータベースまたはターゲットデータベースの接続に失敗した場合、DTSはその時間範囲内ですぐに接続を再試行します。 有効な値: 10 ~ 1440 単位は分です。 デフォルト値: 120 パラメーターを30より大きい値に設定することを推奨します。 DTSが指定された時間範囲内にソースデータベースとターゲットデータベースに再接続すると、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。
説明同じソースまたはターゲットデータベースを共有する複数のデータ移行タスクに対して異なるリトライ時間範囲を設定した場合、後で設定された値が優先されます。
DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 業務要件に基づいて再試行時間範囲を指定することを推奨します。 ソースデータベースとターゲットインスタンスがリリースされた後、できるだけ早くDTSインスタンスをリリースすることもできます。
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。
その他の問題の再試行時間範囲。 たとえば、データ移行タスクの開始後にDDLまたはDML操作の実行に失敗した場合、DTSは再試行時間範囲内ですぐに操作を再試行します。 有効な値: 1 ~ 1440 単位は分です。 デフォルト値は 10 です。 パラメーターを10より大きい値に設定することを推奨します。 指定された再試行時間内に失敗した操作が正常に実行された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。
重要移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 パラメーターの値は、失敗した接続の再試行時間 パラメーターの値よりも小さくする必要があります。
完全なデータ移行のスロットリングを有効化
DTSが増分データを宛先インスタンスに移行すると、宛先インスタンスの負荷が増加する可能性があります。 ビジネス要件に基づいて、1秒あたりに増分移行できる行数とデータ量のスロットリングしきい値を設定できます。 これにより、ターゲットインスタンスの負荷を軽減できます。
環境タグ
DTSインスタンスを識別するために使用される環境タグ。 ビジネス要件に基づいて環境タグを選択できます。 この例では、環境タグは選択されていません。
宛先データベースキーの有効期限の延長
移行元データベースから移行先インスタンスに移行されたキーの有効期間。 単位は秒です。 次のコマンドなど、特定のコマンドを使用する場合は、データの一貫性を確保するためにパラメーターを600に設定することを推奨します。
expire key seconds pexpire key milliseconds expireat key timestamp pexpireat key timestampMs
スレーブノードの使用
ソースの自己管理型Redisデータベースのインスタンスモードパラメーターがクラスターに設定されている場合、マスターノードまたはスレーブノードからデータをプルできます。 デフォルト値は [いいえ] です。 デフォルト値を使用すると、データはマスターノードからプルされます。
ETL の設定
抽出、変換、および読み込み (ETL) 機能を有効にするかどうかを指定します。 詳細については、「」をご参照ください。ETLとは何ですか? 有効な値:
Yes: ETL機能を設定します。 コードエディターでデータ処理ステートメントを入力できます。 詳細については、「データ移行またはデータ同期タスクでのETLの設定」をご参照ください。
No: ETL機能を設定しません。
クリック次条: タスク設定と事前チェックを保存するページの下部にあります。
説明データ移行タスクを開始する前に、DTSは事前チェックを実行します。 データ移行タスクは、タスクが事前チェックに合格した後にのみ開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある [詳細の表示] をクリックします。 原因に基づいて問題をトラブルシューティングした後、再度事前チェックを実行します。 詳細については、「FAQ」トピックの「事前チェックに関するFAQ」セクションをご参照ください。
事前チェック中にアイテムに対してアラートがトリガーされた場合:
アラートアイテムを無視できない場合は、失敗したアイテムの横にある [詳細の表示] をクリックして問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。
アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。 次に、[再度事前チェック] をクリックして、事前チェックを再度実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。
成功率が100% になるまで待ちます。 次に、[次へ: インスタンスの購入] をクリックします。
[インスタンスの購入] ページで、データ移行インスタンスのインスタンスクラスパラメーターを設定します。 下表にパラメーターを示します。
読み取りと選択データ伝送サービス (従量課金) サービス規約.
[購入して開始] をクリックします。 表示されるメッセージで、 [OK] をクリックします。
[データ移行] ページでタスクの進行状況を確認できます。