Data Transmission Service (DTS) を使用して、オンプレミスのデータセンター、Elastic Compute Service (ECS) インスタンス、またはサードパーティのクラウドプラットフォームにデプロイされている自己管理型RedisデータベースからTair (Redis OSS-compatible) にデータを移行できます。 DTSを使用すると、データベースサービスを中断することなく、既存のRedisデータベースからTair (Redis OSS-compatible) にデータを移行できます。 DTSは、完全および増分データ移行をサポートします。 DTSは、追加専用ファイル (AOF) メソッドよりも高いパフォーマンスとセキュリティを提供します。
概要
完全なデータ移行
DTSを使用すると、既存のすべてのデータをソースデータベースからターゲットデータベースに無料で移行できます。
増分データ移行
完全データ移行を実行した後、DTSは、増分データをソースデータベースからターゲットデータベースにリアルタイムで同期できます。 増分データ移行を実行するには、ソースデータベースで
PSYNC
またはSYNC
コマンドを実行する必要があります。 それ以外の場合は、フルデータ移行のみ実行できます。 増分データ移行は、転送されるデータ量ではなく、移行期間に基づいて課金されます。 詳細については、「請求項目」をご参照ください。説明増分データ移行タスクが期待どおりに実行されるようにするには、ソースデータベースのレプリケーション出力バッファの制限を解除することをお勧めします。 制限を解除するには、ソースデータベースに接続し、次のコマンドを実行します。
CONFIG SET client-output-buffer-limit 'slave 0 0 0'
。
前提条件
Tair (Redis OSS-compatible) インスタンスが作成され、インスタンスに割り当てられているメモリの量が、自己管理Redisデータベースで使用されているメモリの量よりも多くなります。 詳細については、「手順1: インスタンスの作成」をご参照ください。
ターゲットデータベースのメモリの合計量は、ソースデータベースで使用されるメモリの量よりも少なくとも10% 大きくすることをお勧めします。 データ移行タスクの実行時にターゲットデータベースのメモリ量が不足している場合、データの不整合やタスクの失敗などの問題が発生する可能性があります。 この場合、ターゲットデータベースを空にし、データ移行タスクを再設定します。
注意事項
データ移行タスクを実行するときは、ソースデータベースまたはターゲットデータベースの仕様またはエンドポイントをスケーリングまたは変更しないでください。 それ以外の場合、データ移行タスクは失敗します。 データ移行タスクが失敗した場合は、変更を考慮してタスクを再構成します。 さらに、データ移行によって、ソースデータベースとターゲットデータベースのリソースが消費されます。 オフピーク時にデータ移行を実行することを推奨します。
手順
[データ移行タスク] ページに移動します。
データ管理 (DMS) コンソール にログインします。
上部のナビゲーションバーで、データ开発をクリックします。
左側のナビゲーションウィンドウで、を選択します。
タスクの作成をクリックします。
ソースデータベースとターゲットデータベースを設定し、ページ下部の [Test Connectivity and Proceed] をクリックします。 下表に、各パラメーターを説明します。
セクション
パラメーター
説明
非該当
タスク名
DTSタスクの名前。 タスク名は自動生成されます。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を指定する必要はありません。
ソースデータベース
DMSデータベースインスタンスの選択
DMSにソースデータベースを登録した場合は、データベースを選択できます。 ソースデータベースを選択した後、データベースに関する情報を入力する必要はありません。 DMSにソースデータベースを登録しなかった場合は、このオプションを無視してください。
データベースタイプ
移行元ディスクのタイプを設定します。 [Tair/Redis] を選択します。
アクセス方法
ソースデータベースのアクセス方法。 ソースデータベースの配置場所に基づいてアクセス方法を選択します。 ソースデータベースがオンプレミスのデータセンターまたはサードパーティのクラウドプラットフォームにデプロイされている場合は、[パブリックIPアドレス] を選択します。
この例では、ECS上の自己管理データベースを選択します。
インスタンスリージョン
ECSインスタンスが存在するリージョン。 ECSインスタンスがオンプレミスのデータセンターまたはサードパーティのクラウドプラットフォームにデプロイされている場合は、最も近いソースデータベースのリージョンを選択します。
Alibaba Cloudアカウント全体でのデータの複製
Alibaba Cloudアカウント間でデータを移行するかどうかを指定します。 [いいえ] を選択します。
ECSインスタンスID
ソースデータベースがデプロイされているECSインスタンスのID。
説明ソースデータベースがクラスターアーキテクチャを使用している場合は、マスターノードがデプロイされているECSインスタンスのIDを選択します。
インスタンスモード
ソースデータベースのアーキテクチャ。 [スタンドアロン] または [クラスター] を選択します。
ポート番号
ソースデータベースのサービスポート番号。 デフォルトのポート番号は6379です。
説明ソースデータベースがクラスターアーキテクチャを使用している場合は、マスターノードのサービスポート番号を入力します。
認証方法
ビジネス要件に基づいて、[パスワードログイン] または [シークレットフリーログイン] を選択します。
説明自己管理Redisデータベースにパスワードが設定されていない場合は、[Secret-free login] を選択します。
データベースパスワード
ソースデータベースへの接続に使用されるパスワード。
説明このパラメーターはオプションです。 パラメータは空のままにすることができます。
カスタムアカウントを使用する場合は、アカウントに読み取り権限があることを確認してください。 データベースのパスワードを <user >:< password> 形式で指定します。 たとえば、ソースデータベースへのログインに使用するカスタムアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。
暗号化
接続先データベースへの接続を暗号化するかどうかを指定します。 ビジネス要件に基づいて、[非暗号化] または [SSL暗号化] を選択します。
説明アクセス方法をAlibaba Cloudインスタンスに設定し、自己管理RedisデータベースのSSL暗号化を選択した場合、CA証明書をアップロードし、CAキーを入力する必要があります。
宛先データベース
DMSデータベースインスタンスの選択
DMSにターゲットデータベースを登録した場合は、データベースを選択できます。 ターゲットデータベースを選択した後、データベースに関する情報を入力する必要はありません。 DMSにターゲットデータベースを登録しなかった場合は、このオプションを無視してください。
データベースタイプ
ターゲットデータベースのタイプ。 デフォルトでは、Tair/Redisが選択されています。
アクセス方法
ターゲットデータベースのアクセス方法。 [Alibaba Cloudインスタンス] を選択します。
インスタンスリージョン
ターゲットインスタンスが存在するリージョン。
インスタンスID
ターゲットインスタンスの ID。
認証方法
ビジネス要件に基づいて、[パスワードログイン] または [シークレットフリーログイン] を選択します。 この例では、[パスワードログイン] を選択します。
説明Tair (Redis OSS互換) インスタンスでパスワードフリーアクセス機能が有効になっていない場合は、パスワードログインを選択します。
データベースパスワード
接続先データベースへの接続に使用されるパスワード。
説明カスタムアカウントを使用する場合は、そのアカウントに書き込み権限があることを確認してください。 データベースのパスワードを <user >:< password> 形式で指定します。 たとえば、ターゲットデータベースへのログインに使用するカスタムアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。
接続方法
接続先データベースへの接続を暗号化するかどうかを指定します。 ビジネス要件に基づいて、[非暗号化] または [SSL暗号化] を選択します。
タスクオブジェクトを設定し、ページ下部の [次へ: 詳細設定] をクリックします。 下表に、各パラメーターを説明します。
パラメーター
説明
移行タイプ
データ移行タイプ。 ビジネス要件に基づいてデータ移行タイプを選択します。
フルデータ移行と増分データ移行 (デフォルト): Redisのネイティブ同期ロジックを使用して、メモリスナップショットを使用してターゲットデータベースにデータを書き込みます。 これにより、ソースデータベースのデータはダウンタイムなしで移行されます。
ソースデータベースに対するSYNCまたはPSYNC権限がない場合は、完全データ移行 を選択します。
完全データ移行: SCANコマンドを実行してソースデータベースをトラバースし、トラバースされたデータをターゲットデータベースに書き込みます。 データの一貫性を確保するために、移行中に新しいデータをソースデータベースに書き込まないでください。
競合テーブルの処理モード
事前チェックとレポートエラー (デフォルト): ターゲットデータベースにキーが存在するかどうかを確認します。
キーが存在する場合、事前チェック中にエラーが返され、データ移行タスクを開始できません。 キーが存在しない場合、事前チェックはパスされます。
エラーを無視して続行: ターゲットデータベース内のオブジェクトの存在を確認チェック項目をスキップします。 同じ名前のキーがターゲットデータベースにすでに存在する場合、キーは上書きされます。
ソースオブジェクトと選択中のオブジェクト
ソースオブジェクト セクションで移行するオブジェクトを選択し、をクリックして 選択中のオブジェクト セクションに移動します。 選択したオブジェクトを削除するには、選択中のオブジェクト セクションでオブジェクトを選択し、をクリックして ソースオブジェクト セクションに移動します。
説明移行するオブジェクトとして、データベース (DB 0 ~ DB 255) を選択できます。
詳細設定を設定し、ページ下部の [次のステップ: データ検証] をクリックします。
ほとんどの場合、デフォルト設定を保持できます。 詳細については、このトピックの「付録: 詳細設定」セクションを参照してください。
データ検証を設定し、ページ下部の [次へ: タスク設定の保存と事前チェック] をクリックします。
ほとんどの場合、デフォルト設定を保持できます。 詳細については、「データ検証の設定」をご参照ください。
事前チェックを実行し、ページ下部の [次へ: インスタンスの購入] をクリックします。
事前チェック中に [警告] または [失敗] 項目が生成された場合は、項目を個別に確認します。 [詳細の表示] をクリックして、問題のトラブルシューティングを行います。 [アラート詳細の確認] をクリックして、チェック項目を無視することもできます。 ただし、データの不整合などの問題が発生する可能性があり、ビジネスにリスクをもたらす可能性があります。 詳細については、「FAQ」をご参照ください。 上記の操作を完了したら、別の事前チェックを実行します。
[購入] ページでパラメーターを設定し、[購入と開始] をクリックします。
(オプション) DTSデータ移行インスタンスが属するリソースグループを選択します。 デフォルト値はdefault resource groupです。
(オプション) DTSデータ移行インスタンスの仕様を選択します。 より高い仕様は、より速い移行速度およびより高いコストをもたらす。 デフォルト値は大きいです。 詳細については、「データ移行インスタンスの仕様」をご参照ください。
利用規約を読んで選択します。
DTSデータ移行インスタンスを購入すると、データ移行タスクが開始されます。 データ移行ページで、データ移行タスクの進行状況を確認できます。
次に何をすべきか
増分データ移行を実行する場合は、移行完了後にコンソールでデータ移行タスクを手動で終了またはリリースする必要があります。
データを確認できます。 詳細については、「移行されたRedisデータの検証」をご参照ください。
関連ドキュメント
データベースをオンラインに移行したくない場合は、軽量ツールredis-cliを使用して、データ移行用のAOFをインポートできます。 詳細については、「AOFsを使用したデータの移行」をご参照ください。
よくある質問
接続テストが失敗するのはなぜですか?
トラブルシューティングを実行するときは、次の要素に注意してください。
アカウントのパスワードが無効です。 パスワードは
user:password
形式である必要があります。 詳細については、「インスタンスへの接続」をご参照ください。ソースデータベースがオンプレミスのデータセンターまたはサードパーティのクラウドプラットフォームにデプロイされた自己管理型データベースである場合、ネットワークファイアウォールがDTSサーバーからのアクセスをブロックする可能性があります。 この場合、対応するリージョンにDTSサーバーのCIDRブロックを手動で追加して、サーバーからのアクセスを許可します。 詳細については、「DTSサーバーのCIDRブロックの追加」をご参照ください。
移行タスクが実行に失敗するのはなぜですか?
データ移行タスクを実行するときに、ソースデータベースまたはターゲットデータベースの仕様またはエンドポイントをスケーリングまたは変更すると、タスクは失敗します。 この場合、変更を考慮してデータ移行タスクを再設定します。
ターゲットインスタンスに十分な使用可能なメモリがない場合、または特定のシャードがメモリ上限に達しているクラスターインスタンスの場合、DTSデータ移行タスクはメモリ不足 (OOM) エラーにより失敗します。
移行先インスタンスに対して透過データ暗号化 (TDE) が有効になっている場合、DTSを使用してデータを移行することはできません。
ソースデータベースとターゲットデータベースでデータボリュームが異なるのはなぜですか?
ソースデータベースの特定のキーに対して有効期限ポリシーが有効化されている場合、これらのキーは、有効期限が切れた後の最も早い機会に削除されない場合があります。 この場合、宛先データベース内のキーの数は、ソースデータベース内のキーの数よりも少なくてもよい。
PSYNCまたはSYNCコマンドを実行してリストデータを送信する場合、DTSはターゲットデータベースの既存のデータに対してFLUSH操作を実行しません。 その結果、重複データが存在する可能性があります。
フルデータ移行中にネットワークが中断された場合、DTSは接続の再確立後に複数のフルデータ移行を実行できます。 この場合、DTSは、ターゲットデータベース内の同じ名前を持つ既存のキーを自動的に上書きします。 この時点でソースデータベースに対して削除操作を実行すると、コマンドはターゲットデータベースと同期されません。 その結果、宛先データベースは、ソースデータベースよりも多くのキーを有することができる。
立ち退きポリシーがnoevictionであるかどうかを確認する必要があるのはなぜですか?
デフォルトでは、データの削除方法を指定するmaxmemory-policyパラメーターは、Tair (Redis OSS互換) インスタンスのvolatile-lruに設定されています。 ターゲットデータベースに十分なメモリがない場合、データの削除により、ソースデータベースとターゲットデータベースの間でデータの不整合が発生する可能性があります。 この場合、データ移行タスクの実行は停止しません。 データの不整合を防ぐために、ターゲットデータベースのmaxmemory-policyパラメーターをnoevictionに設定することを推奨します。 このように、ターゲットデータベースに十分なメモリがない場合、データ移行タスクは失敗しますが、ターゲットデータベースのデータ損失を防ぐことができます。 データ削除ポリシーの詳細については、Tairのデフォルトの削除ポリシーは何ですか?
プレフィックスがDTS_REDIS_TIMESTAMP_HEARTBEATであるキーがソースデータベースに存在するのはなぜですか。
データの移行と同期の効率を確保するために、DTSはプレフィックスがDTS_REDIS_TIMESTAMP_HEARTBEATであるキーをソースデータベースに挿入して、更新が発生した時点を記録します。 ソースデータベースがクラスターアーキテクチャを使用している場合、DTSは各シャードにキーを挿入します。 DTSは、データ移行中にキーを除外します。 データ移行が完了すると、キーは自動的に期限切れになります。
増分データ移行でサポートされているコマンド
増分データ移行では、次のコマンドがサポートされます。
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
EVALまたはEVALSHAコマンドを実行してLuaスクリプトを呼び出した場合、DTSはこれらのLuaスクリプトがターゲットデータベースで実行されているかどうかを識別できません。 これは、増分データ移行中に、ターゲットデータベースがLuaスクリプトの実行結果を明示的に返さないためです。
付録: 詳細設定
パラメーター | 説明 |
失敗した接続の再試行時間 | 失敗した接続のリトライ時間範囲。 データ移行タスクの開始後にソースデータベースまたはターゲットデータベースの接続に失敗した場合、DTSは指定された時間範囲内で継続的に再試行して接続を確立します。 有効な値: 10 ~ 1440 単位:分 デフォルト値: 720 指定された時間範囲内にDTSがソースデータベースとターゲットデータベースに再接続された場合、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。 ビジネス要件に基づいて [失敗した接続の再試行時間] パラメーターを設定するか、パラメーターを30を超える値に設定することをお勧めします。 DTSが接続を再試行すると、DTSインスタンスに対して課金されます。 |
移行元データベースと移行先データベースで他の問題が発生した場合の、再試行までの待機時間です。 | その他の問題の再試行時間範囲。 データ移行タスクの開始後にソースデータベースまたはターゲットデータベースで非接続の問題が発生した場合、DTSはエラーを報告し、再試行時間範囲内で操作を継続的に再試行します。 有効な値: 10 ~ 1440 単位:分 デフォルト値は 10 です。 指定されたリトライ時間範囲内に操作が完了すると、DTSはデータ移行タスクを再開します。 それ以外の場合、データ移行タスクは失敗します。 パラメーターを10より大きい値に設定することを推奨します。 |
完全なデータ移行のスロットリングを有効化 | DTSが増分データを宛先データベースに移行すると、宛先データベースの負荷が増加する可能性があります。 対象データベースの負荷を軽減するために、ビジネス要件に基づいて1秒あたりに増分移行できる行数とデータ量のスロットリングしきい値を設定できます。 デフォルト値は [任意] です。 |
環境タグ | DTSインスタンスを識別するために使用される環境タグ。 ビジネス要件に基づいて環境タグを選択できます。 |
宛先データベースキーの有効期限の延長 | time-to-live (TTL) 値が指定されているターゲットデータベースのキーの有効期限が延長されました。 デフォルト値: 1800 単位は秒です。 データ移行中に、期限切れのキーがソースデータベースに存在する場合、キーはターゲットデータベースに移行されません。 |
スレーブノードの使用 | ソースデータベースのインスタンスモードパラメーターがクラスターに設定されている場合、レプリカノードからデータを読み取るかどうかを選択できます。 デフォルトでは、[いいえ] が選択され、DTSがマスターノードからデータを読み取ることを指定します。 |
ETL の設定 | 抽出、変換、および読み込み (ETL) 機能を有効にするかどうかを指定します。 詳細については、「」をご参照ください。ETLとは何ですか? 有効な値:
|
モニタリングとアラート | データ同期タスクのアラートを設定するかどうかを指定します。 タスクが失敗するか、同期レイテンシが指定されたしきい値を超えると、アラート送信先は通知を受け取ります。 有効な値:
|