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 』をご参照ください。
手順
- ソースとターゲット ApsaraDB for Redis インスタンスの両方にアクセスできる ECS インスタンスにログインします。
- ECS インスタンスの redis-shake ツールをダウンロードします。
説明 最新バージョンのダウンロードを推奨します。
- 次のコマンドを実行して、ダウンロードした redis-shake.tar.gz パッケージを解凍します。
# tar -xvf redis-shake.tar.gz
説明 解凍されたフォルダーの redis-shake ファイルは、64 ビット Linux オペレーティングシステムで実行できるバイナリファイルです。 redis-shake.conf ファイルは、redis-shake ツールの設定ファイルです。 次の手順でこの設定ファイルを変更する必要があります。 - 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 インスタンスからデータが移行されることを示しています。 - 次のコマンドを実行して、データを移行します。
# ./redis-shake -type=rump -conf=redis-shake.conf
説明 このコマンドは、redis-shake および redis-shake.conf ファイルと同じディレクトリで実行する必要があります。 同じディレクトリでない場合、コマンドで正しいファイルパスを指定する必要があります。説明 前の図で赤で囲まれたメッセージが表示された場合、データが移行されます。 データが移行された後、redis-full-check ツールを使用して、ソースデータベースとターゲットデータベース間でデータに一貫性があるかどうかを確認できます。 詳細については、「移行後のデータ検証」をご参照ください。