redis-shake ツールの rump モードを使用して、同じAlibaba Cloud アカウントで、ApsaraDB for Redis インスタンスから別の ApsaraDB for Redis インスタンスにデータを移行できます。

前提条件

  • ApsaraDB for Redis インスタンスがデータ移行のターゲットとして作成されていること。
  • ECS (Elastic Compute Service) インスタンスが、redis-shake ツールを実行するために作成されていること。
  • ECS インスタンスの IP アドレスが、ApsaraDB for Redis インスタンスのソースとターゲットの両方のホワイトリストに追加されていること。
  • Linux オペレーティングシステムが ECS インスタンスで実行されていること。

背景

redis-shake ツールは、Alibaba Cloud によって開発されたオープンソースのツールです。 これを使用して、Redis データを解析 (decode モード)、復元 (restore モード)、バックアップ (dump モード)、同期 (sync/rump モード) できます。 rump モードでは、redis-shake ツールはソース Redis をスキャンして完全なデータを取得し、データを移行先の Redis に書き込んでデータを移行できます。 この移行ソリューションは SYNC または PSYNC コマンドを使用しないため、Redis のサービスパフォーマンスにはほとんど影響しません。 また、Redis クラスターに適用され、オンプレミスの Redis と ApsaraDB for Redis の間でデータを移行するために広く使用できます。 このドキュメントでは、同じ Alibaba Cloud アカウントで、ApsaraDB for Redis インスタンスから別の ApsaraDB for Redis インスタンスにデータを移行する方法について説明します。

説明
  • rump モードは増分移行をサポートしていません。 データの不整合を防ぐために、移行前にソース Redis へのデータの書き込みを停止することを推奨します。
  • rump モードは、Redis 2.8から Redis 4.0 へなど、異なる Redis バージョン間のデータ移行をサポートします。
  • rump モードは、異なるクラウドプロダクト間のデータ移行をサポートします。 この場合、ソースまたはターゲットのいずれかが、インターネットアクセスに対応している必要があります。
  • redis-shake ツールの詳細については、 『redis-shake on GitHub 』または『FAQ 』をご参照ください。

手順

  1. ソースとターゲット ApsaraDB for Redis インスタンスの両方にアクセスできる ECS インスタンスにログインします。
  2. ECS インスタンスの redis-shake ツールをダウンロードします。
    説明 最新バージョンのダウンロードを推奨します。
  3. 次のコマンドを実行して、ダウンロードした redis-shake.tar.gz パッケージを解凍します。
    # tar -xvf redis-shake.tar.gz
    説明 解凍されたフォルダーの redis-shake ファイルは、64 ビット Linux オペレーティングシステムで実行できるバイナリファイルです。 redis-shake.conf ファイルは、redis-shake ツールの設定ファイルです。 次の手順でこの設定ファイルを変更する必要があります。
  4. redis-shake.conf ファイルを変更します。 次の表に、redis-shake ツールの rump モードのパラメーターを示します。
    表 1. redis-shake の rump モードのパラメーター
    パラメーター 説明 例:
    source.address ソース ApsaraDB for Redis インスタンスの接続アドレスとサービスポートです。 r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com
    source.password_raw ソース ApsaraDB for Redis インスタンスのパスワードです。 SourcePass233
    説明 デフォルトのデータベースアカウント以外のデータベースアカウントを使用して ApisaraDB for Redis インスタンスに接続する場合は、このパラメーターを次の形式で設定します。 account:password
    target.address ターゲット ApsaraDB for Redis インスタンスの接続アドレスとサービスポートです。 r-j6cxxxxxxxxxxxxx.redis.rds.aliyuncs.com
    target.password_raw ターゲット ApsaraDB for Redis インスタンスのパスワードです。 TargetPass233
    rewrite RDB ファイルのキーと同じApsaraDB for Redis インスタンスの既存のキーを上書きするかどうかを指定します。 有効値:
    • true
    • false
    説明 デフォルト値 : true 。 移行前に、ターゲット ApsaraDB for Redis インスタンスの有効なデータをバックアップすることを推奨します。 このパラメーターを false に設定し、ソースデータベースとターゲットデータベースでキーが重複している場合、エラーメッセージが返されます。
    true
    scan.key_number redis-shake ツールがソース ApsaraDB for Redis インスタンスをスキャンするたびに取得するキーの数です。 このパラメーターを設定しない場合、デフォルト値 100 が使用されます。 100
    scan.special_cloud ソース Redis インスタンスのクラウドです。 aliyun_cluster
    説明 この例は、Cluster Edition のソース ApsaraDB for Redis インスタンスからデータが移行されることを示しています。
  5. 次のコマンドを実行して、データを移行します。
    # ./redis-shake -type=rump -conf=redis-shake.conf
    説明 このコマンドは、redis-shake および redis-shake.conf ファイルと同じディレクトリで実行する必要があります。 同じディレクトリでない場合、コマンドで正しいファイルパスを指定する必要があります。
    図 1. 移行例
    redis-shake を使用して、同じアカウントでデータを移行する
    説明 前の図で赤で囲まれたメッセージが表示された場合、データが移行されます。 データが移行された後、redis-full-check ツールを使用して、ソースデータベースとターゲットデータベース間でデータに一貫性があるかどうかを確認できます。 詳細については、「移行後のデータ検証」をご参照ください。