すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:自己管理型RedisデータベースからTairインスタンスへのデータの移行

最終更新日:Nov 01, 2024

このトピックでは、data Transmission Service (DTS) を使用して、セルフマネージドRedisデータベースからTairインスタンスにデータを移行する方法について説明します。 DTS はフルデータ移行と増分データ移行をサポートします。 セルフマネージドRedisデータベースからAlibaba Cloudにデータを移行する場合、サービスの継続性を確保するために2つの移行タイプを選択できます。

前提条件

  • 自己管理RedisデータベースとTairインスタンスが作成されます。 Tairインスタンスの作成方法の詳細については、「手順1: Tairインスタンスの作成」をご参照ください。

    説明
    • DTSは、直接接続モードが有効になっているTairインスタンスのみをサポートします。

    • DTSでは、ApsaraDB for RedisインスタンスからTairインスタンスへ、またはTairインスタンス間でデータを移行することもできます。 移行タスクを設定するには、このトピックで説明されている手順を参照してください。

  • 自己管理Redisデータベースのエンジンバージョンは、2.8、3.0、3.2、4.0、5.0、または6.0です。

  • PSYNCまたはSYNCコマンドは、自己管理Redisデータベースで実行できます。

  • 移行先のTairインスタンスの使用可能なストレージ容量が、移行元の自己管理型Redisデータベースのデータの合計サイズよりも大きいこと。

制限事項

カテゴリ

説明

ソースデータベースの制限

  • 帯域幅の要件: ソースデータベースがデプロイされるサーバーには、十分なアウトバウンド帯域幅が必要です。 そうしないと、データ移行速度が低下します。

  • ソースデータベースのデータログ機能と追加専用ファイル (AOF) 機能を有効にする必要があります。

  • 操作の制限: フルデータ移行のみを実行する場合、データ移行中にソースデータベースにデータを書き込まないでください。 そうしないと、ソースデータベースとターゲットデータベース間でデータが一致しない可能性があります。 データの一貫性を確保するために、移行タイプとして完全データ移行と増分データ移行を選択することを推奨します。

  • スタンドアロンRedisデータベースからクラスターアーキテクチャにデプロイされたデータベースへのデータ移行の制限: 各コマンドは、クラスターアーキテクチャにデプロイされたデータベースの1つのスロットでのみ実行できます。 ソースデータベース内の複数のキーに対して操作を実行し、キーが異なるスロットに属している場合、エラーが発生します。

    CROSSSLOT Keys in request don't hash to the same slot

    データ移行中は、1つのキーに対してのみ操作を実行することを推奨します。 これにより、データ移行タスクの中断が防止されます。

  • ソースデータベースの特定のキーに対して有効期限ポリシーが有効になっている場合、これらのキーは有効期限が切れた後すぐには削除されません。 したがって、ターゲットインスタンス内のキーの数は、ソースデータベース内のキーの数よりも少ない可能性があります。 INFOコマンドを実行して、ターゲットデータベース内のキーの数を表示できます。

    説明

    有効期限ポリシーが無効になっているキーまたは有効なキーの数は、ソースデータベースとターゲットデータベースで同じです。

  • データ移行の安定性を確保するために、DTSは、データが更新されたときに記録するキーをソースデータベースに挿入します。 ソースデータベースがクラスターアーキテクチャにデプロイされている場合、DTSはクラスターの各シャードにキーを挿入します。 キーはデータ移行中に除外されます。 データ移行タスクが完了すると、キーは期限切れになります。

  • ソースデータベースが読み取り専用データベースである場合、またはデータ移行タスクの実行に使用されるソースデータベースアカウントにSETEXコマンドを実行する権限がない場合、報告されるレイテンシが不正確になる可能性があります。

その他の制限

  • DTSは、完全データ移行中にソースデータベースとターゲットデータベースのリソースを消費します。 これにより、データベースサーバーの負荷が増加する可能性があります。 大量のデータを移行したり、サーバーの仕様がビジネス要件を満たしていない場合、データベースサービスが利用できなくなることがあります。 データを移行する前に、移行元データベースと移行先データベースのパフォーマンスに対するデータ移行の影響を評価します。 オフピーク時にデータを移行することを推奨します。

  • ターゲットデータベースのメモリが不足しているためにデータの削除がトリガーされた場合、ソースデータベースとターゲットデータベースの間でデータの不整合が発生する可能性があります。 これは、ターゲットデータベースのデフォルトのデータ削除ポリシー (maxmemory-policy) がvolatile-lruであるためです。 ただし、これは移行タスクには影響しません。

    この場合、ターゲットデータベースのデータ削除ポリシーをnoevictionに設定することを推奨します。 移行先データベースのメモリが不十分な場合、DTSは移行先データベースへのデータの書き込みに失敗し、移行タスクは失敗しますが、データの削除によって移行先データベースのデータが失われることはありません。

    説明

    データ削除ポリシーの詳細については、「ApsaraDB for Redisのデフォルトの削除ポリシーは何ですか? 」をご参照ください。

  • EVALまたはEVALSHAコマンドを実行してLuaスクリプトを呼び出した場合、DTSはこれらのLuaスクリプトがターゲットデータベースで実行されているかどうかを識別できません。 これは、増分データ移行中に、ターゲットデータベースがLuaスクリプトの実行結果を明示的に返さないためです。

  • DTSがPSYNCまたはSYNCコマンドを実行してLISTタイプのデータを転送する場合、DTSはターゲットインスタンスの既存のデータに対してFLUSH操作を実行しません。 その結果、宛先インスタンスは重複するデータレコードを含むことがある。

  • データ移行中に、自己管理Redisデータベース内のシャードの数が増減した場合、またはメモリ容量のスケールアップなどのデータベース仕様を変更した場合、データ移行タスクを再構成する必要があります。 データの整合性を確保するため、データ移行タスクを再構成する前に、移行先データベースに移行されたデータを削除することを推奨します。

  • データ移行中に、自己管理Redisデータベースのエンドポイントが変更された場合、データ移行タスクを再構成する必要があります。

  • データ移行タスクが失敗した場合、DTSは自動的にタスクを再開します。 ワークロードをターゲットデータベースに切り替える前に、データ移行タスクを停止またはリリースしてください。 これにより、タスクの再開後にソースデータベースのデータがターゲットデータベースのデータに上書きされるのを防ぎます。

  • ターゲットインスタンスがクラスターアーキテクチャにデプロイされ、ターゲットインスタンスのシャードが使用するメモリ量が上限に達した場合、またはターゲットインスタンスの使用可能なストレージスペースが不十分な場合、メモリ不足 (OOM) によりデータ同期タスクが失敗します。

  • ターゲットデータベースに対して透過的データ暗号化 (TDE) 機能が有効になっている場合、DTSを使用してデータを移行することはできません。

課金ルール

移行タイプ

タスク設定料金

インターネットトラフィック料金

スキーマ移行とフルデータ移行

無料です。

インターネット経由でAlibaba Cloudからデータが移行された場合にのみ課金されます。 詳細については、「課金の概要」をご参照ください。

増分データ移行

有料。 詳細については、「課金の概要」をご参照ください。

移行タイプ

  • フルデータ移行

    DTSは、オブジェクトの既存のデータをソースの自己管理RedisデータベースからターゲットのTairインスタンスに移行します。

    説明

    フルデータ移行のみを実行する場合は、フルデータ移行中に自己管理型Redisデータベースにデータを書き込まないことを推奨します。 これによりデータの整合性が保証されます。

  • 増分データ移行

    完全データ移行が完了すると、DTSは自己管理型RedisデータベースからTairインスタンスに増分データを移行します。 増分データ移行により、データ移行中に自己管理型アプリケーションのサービスを中断することなく、データをスムーズに移行できます。

増分移行可能なコマンド

  • 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で実行されるサーバーを使用します。

説明

フルデータ移行のみを実行する場合は、次の手順をスキップしてください。

  1. 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
  2. 次のコマンドを実行して、レプリケーション出力バッファの制限を解除します。

    config set client-output-buffer-limit 'slave 0 0 0'

手順

  1. [データ移行タスク] ページに移動します。

    1. データ管理 (DMS) コンソールにログインします。

    2. 上部のナビゲーションバーで、ポインタをDTS上に移動します。

    3. DTS (DTS) > データ移行を選択します。

    説明
  2. データ移行タスクの右側にあるドロップダウンリストから、データ移行インスタンスが存在するリージョンを選択します。

    説明

    新しいDTSコンソールを使用する場合は、左上隅にデータ移行インスタンスが存在するリージョンを選択する必要があります。

  3. [タスクの作成] をクリックします。 [タスクの作成] ページで、ソースデータベースとターゲットデータベースを設定します。 次の表にパラメーターを示します。

    セクション

    パラメーター

    説明

    N/A

    タスク名

    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インスタンス] を選択します。

    インスタンスリージョン

    宛先のTairインスタンスが存在するリージョン。

    インスタンスID

    移行先のTairインスタンスのID。

    データベースパスワード

    移行先のTairインスタンスのデータベースパスワード。

    説明

    データベースのパスワードは <user >:< password> 形式です。 たとえば、ターゲットTairインスタンスへのログインに使用するアカウントのユーザー名がadminで、パスワードがRp829dlwaの場合、データベースのパスワードはadmin:Rp829dlwaです。

  4. このステップのページの下部で、接続性をテストして続行をクリックします。

    警告
    • ソースまたはターゲットデータベースが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セキュリティグループルールから削除することを推奨します。

  5. 移行するオブジェクトと詳細設定を設定します。

    パラメーター

    説明

    移行タイプ

    移行タイプ。 フルデータ移行と増分データ移行を選択します。

    説明

    ソースデータベースでSYNCまたはPSYNCコマンドを実行する権限がない場合は、完全データ移行 を選択します。

    競合テーブルの処理モード

    • エラーの事前チェックと報告: ターゲットデータベースが空かどうかを確認します。 ターゲットデータベースが空の場合、事前チェックに合格します。 それ以外の場合、事前チェック中にエラーが返され、データ移行タスクを開始できません。

    • エラーを無視して続行: ターゲットデータベース内のオブジェクトデータの存在検査 チェックアイテム。

      警告

      エラーを無視して続行 を選択した場合、ソースデータベースのデータは、ソースデータと同じキーを持つターゲットデータベースのデータを上書きします。 これにより、宛先データベースのデータが失われる可能性があります。 作業は慎重に行ってください。

    ソースオブジェクト

    [ソースオブジェクト] セクションから1つ以上のオブジェクトを選択します。 向右小箭头アイコンをクリックして、[選択済みオブジェクト] セクションにオブジェクトを追加します。

    説明

    移行するオブジェクトとしてデータベースのみを選択できます。 移行するオブジェクトとしてキーを選択することはできません。

    [選択済みオブジェクト]

    DB 0からDB 255にデータを移行するデータベースを選択したり、移行するデータをプレフィックスでフィルタリングしたりする場合は、オブジェクト名マッピング機能またはフィルタリング機能を使用できます。 選択中のオブジェクト セクションで、移行するデータベースを右クリックします。 スキーマの編集 ダイアログボックスで、パラメーターを設定します。 詳細については、「オブジェクト名のマップ」および「フィルター条件の設定」をご参照ください。

    説明

    一度に複数のオブジェクト名をマップすることはできません。

  6. [次へ: 詳細設定] をクリックして詳細設定を構成します。

    • データ検証設定

      データ検証機能の設定方法の詳細については、「データ検証タスクの設定」をご参照ください。

    • 詳細設定

      パラメーター

      説明

      Set Alerts

      データ移行タスクのアラートを設定するかどうかを指定します。 タスクが失敗するか、移行の待ち時間が指定されたしきい値を超えると、アラート送信先は通知を受け取ります。 有効な値:

      失敗した接続のリトライ時間範囲の指定

      失敗した接続のリトライ時間範囲。 データ移行タスクの開始後にソースデータベースまたはターゲットデータベースの接続に失敗した場合、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データベースのインスタンスモードパラメーターがクラスターに設定されている場合、レプリカノードからデータを読み取るかどうかを指定できます。 デフォルトでは、[いいえ] が選択されています。これは、DTSがマスターノードからデータを読み取ることを示します。

      ETLの設定

      抽出、変換、および読み込み (ETL) 機能を有効にするかどうかを指定します。 詳細については、「ETLとは何ですか? 」をご参照ください。有効な値:

  7. ページの下部で、[次へ: タスク設定の保存と事前チェック] をクリックします。

    説明
    • データ移行タスクを開始する前に、DTSは事前チェックを実行します。 データ移行タスクは、タスクが事前チェックに合格した後にのみ開始できます。

    • タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある [詳細の表示] をクリックします。 チェック結果に基づいて原因を分析した後、問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。

    • 事前チェック中にアイテムに対してアラートがトリガーされた場合:

      • アラートアイテムを無視できない場合は、失敗したアイテムの横にある [詳細の表示] をクリックして問題のトラブルシューティングを行います。 次に、もう一度プレチェックを実行します。

      • アラート項目を無視できる場合は、[アラート詳細の確認] をクリックします。 [詳細の表示] ダイアログボックスで、[無視] をクリックします。 表示されたメッセージボックスで、[OK] をクリックします。 次に、[再度事前チェック] をクリックして、事前チェックを再度実行します。 アラート項目を無視すると、データの不整合が発生し、ビジネスが潜在的なリスクにさらされる可能性があります。

  8. 成功率100% になるまで待ちます。 次に、[次へ: インスタンスの購入] をクリックします。

  9. [インスタンスの購入] ページで、データ移行インスタンスのインスタンスクラスパラメーターを設定します。 下表にパラメーターを示します。

    セクション

    パラメーター

    説明

    新しいインスタンスクラス

    リソースグループ

    データ移行インスタンスが属するリソースグループ。 デフォルト値: Default resource group 詳細については、「リソース管理とは 」をご参照ください。

    インスタンスクラス

    DTSは、移行速度が異なるインスタンスクラスを提供します。 ビジネスシナリオに基づいてインスタンスクラスを選択できます。 詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。

  10. 読み取りと選択データ伝送サービス (従量課金) サービス規約.

  11. [購入して開始] をクリックします。 表示されるメッセージで、 [OK] をクリックします。

    [データ移行] ページでタスクの進行状況を確認できます。