Rump を使用して、同じ ApsaraDB Redis インスタンス内のデータベース間、または異なる ApsaraDB Redis インスタンス間でデータを移行できます。

始める前に

  • 対象の ApsaraDB for Redis インスタンスが存在する VPC に Linux ベースの ECS (Elastic Compute Service) インスタンスが作成されている必要があります。
  • 作成した ECS インスタンス内に Rump がダウンロードされている必要があります。 Rump のファイルタイプを実行可能ファイルに変更済みです。

このタスクについて

クラウドサービスプロバイダーから Redis データを移行すると、以下の問題が発生します。

  • slaveofbgsave などのデータ取得コマンドはサポートしていません。
  • keys コマンドは、サーバー上で輻輳を引き起こし、運用サービスに影響を与える可能性があります。

Rump の移行メカニズム

Rump は単一の scan コマンドを実行して、ソース ApsaraDB for Redis インスタンスから複数のキーリストを取得します。 Rump は dump コマンドでキーコンテンツを取得し、pttl コマンドによってキーの有効期限を取得します。 次に、Rump は restore コマンドを使用して、パイプラインモードでターゲット ApsaraDB for Redis インスタンスにキーを同期します。

利点

  • keys コマンドを scan コマンドに置き換えて、サーバー上での輻輳を防止します。
  • どのタイプのデータでも同期します。
  • 一時ファイルは使用しません。
  • バッファーを持つチャネルを使用して、ソースサーバーのパフォーマンスを向上させます。
  • パイプラインモードを採用し、ネットワーク帯域幅を節約します。

手順

ECS インスタンスで次のコマンドを実行してデータを同期します。
rump -from source_addr -fromPwd source_pwd -to dest_addr -toPwd dest_pwd [-size size] [-replace]
表 1. パラメーターの説明
パラメーター 説明
source_addr redis://host:port/db の形式のソース ApsaraDB for Redis インスタンスのアドレス。host と port は必須パラメーターで、db はオプションパラメーターです。 db を指定していない場合は、デフォルトで値 0 が使用されます。
source_pwd ソース ApsaraDB for Redis インスタンスのパスワード。
dest_addr source_addr と同じ形式のターゲット ApsaraDB for Redis インスタンスのアドレス。
dest_pwd ターゲット ApsaraDB for Redis インスタンスのパスワード。
size 一度に同期するキー数。 デフォルト値: 10。
-replace 既存のキーが新しいキーと同じ場合、既存のキーを上書きするかどうかを示します。 このパラメーターを指定すると、既存のキーが上書きされます。 このパラメーターを指定していない場合、既存のキーは上書きされず、エラーメッセージが表示されます。

  • 例 1: 同じ ApsaraDB for Redis インスタンス内の db0 から db1 にデータをインポート

    rump -from redis://r-123456789.redis.rds.aliyuncs.com:6379/0 -fromPwd from_pass -to redis://r-123456789.redis.rds.aliyuncs.com:6379/1 -toPwd to_pass -size 100 
    
    						
  • 例 2: Redis インスタンス A の ApsaraDB の db0 から Redis インスタンス B の ApsaraDB の db1 にデータをインポート

    rump -from redis://r-123456789.redis.rds.aliyuncs.com:6379/0 -fromPwd from_pass -to redis://r-999999999.redis.rds.aliyuncs.com:6379/1 -toPwd to_pass -size 100