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

Tair (Redis® OSS-Compatible):移行したデータの検証

最終更新日:Jun 22, 2026

Tair (Redis OSS-compatible) インスタンスへのデータ移行が完了したら、redis-full-check ツールを使用してデータ整合性を検証できます。

前提条件

  • データ移行が完了していること。

  • Linux オペレーティングシステムを実行する ECS インスタンスが作成済みであること。 詳細については、「ECS インスタンスの作成」をご参照ください。

  • ECS インスタンスがソースとターゲットの両方の Redis インスタンスにアクセスできること。

    説明
    • ECS インスタンスと Redis インスタンスが同じ VPC およびアベイラビリティーゾーンにある場合は、ECS インスタンスの内部 IP アドレスを Redis の IP ホワイトリストに追加します。 詳細については、「IP ホワイトリストの設定」をご参照ください。

    • ECS インスタンスと Redis インスタンスが同じ VPC およびアベイラビリティーゾーンにない場合は、パブリックエンドポイントを使用して Redis インスタンスに接続できます。 詳細については、「パブリックエンドポイントを使用した Tair (Redis OSS-compatible) インスタンスへの接続」をご参照ください。

ユースケース

データ移行中にエラーが発生すると、ソースインスタンスとターゲットインスタンスの間で不整合が生じる可能性があります。 redis-full-check を使用してこれらの不整合を検出し、データを修正できます。

redis-full-check は、Alibaba Cloud が開発した Redis データ検証ツールです。 ソースとターゲットからデータを抽出し、複数回の比較を実行し、差異を SQLite3 データベースに記録します。

説明

redis-full-check の詳細については、「redis-full-check GitHub リポジトリ」をご参照ください。

操作手順

  1. Tair (Redis OSS-compatible) インスタンスにアクセスできる ECS インスタンスに接続します。 詳細については、「ECS インスタンスに接続する」をご参照ください。

  2. redis-full-check ツールをダウンロードします。

    説明

    最新のリリースをダウンロードすることを推奨します。

  3. redis-full-check.tar.gz ファイルを解凍します。

    tar -xvf redis-full-check.tar.gz
  4. 次のコマンドを実行して、データ検証を行います:

    ./redis-full-check -s "<source_endpoint_1:port;source_endpoint_2:port;...>" -p <source_password> -t <destination_endpoint:port> -a <destination_password> --m=1 --sourcedbfilterlist=0;2 --targetdbfilterlist=0;2

    コマンドの例を次に示します。

    ./redis-full-check -s "10.xx.xx.1:6379" -p SourcePwd233 -t "r-bp1zc********.redis.rds.aliyuncs.com:6379" -a testaccount:Test1234 --m=1 --sourcedbfilterlist=0;2 --targetdbfilterlist=0;2

    パラメーターの完全なリストについては、「redis-full-check 設定ガイド」をご参照ください。

    表 1. redis-full-check の共通パラメーター

    パラメーター

    説明

    -s

    ソース Redis インスタンスのエンドポイントとポート。

    説明
    • ソースがクラスターインスタンスの場合、複数のエンドポイントをセミコロン (;) で区切ります。

    • エンドポイントを二重引用符 ("") で囲みます。

    • このパラメーターは必須です。

    r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379
    "10.xx.xx.1:7000;10.xx.xx.1:7001;10.xx.xx.2:7002;10.xx.xx.2:7003"

    -p

    ソース Redis インスタンスの認証情報。形式は <username>:<password> です。 例: testaccount:Test1234。 インスタンスにユーザー名が必要ない場合は、パスワードのみを指定します。 インスタンスにパスワードが必要ない場合は、このパラメーターを省略できます。

    SourcePwd233 または testaccount:Test1234

    -t

    ターゲット Redis インスタンスのエンドポイントとポート。

    説明
    • ターゲットがクラスターインスタンスの場合、複数のエンドポイントをセミコロン (;) で区切ります。

    • エンドポイントを二重引用符 ("") で囲みます。

    • このパラメーターは必須です。

    r-bp1xxxxxxxxxxxxx.redis.rds.aliyuncs.com:6379
    "10.xx.xx.1:7000;10.xx.xx.1:7001;10.xx.xx.2:7002;10.xx.xx.2:7003"

    -a

    ターゲット Redis インスタンスの認証情報。形式は <username>:<password> です。 例: testaccount:Test1234。 インスタンスにユーザー名が必要ない場合は、パスワードのみを指定します。 インスタンスにパスワードが必要ない場合は、このパラメーターを省略できます。

    TargetPwd233 または testaccount:Test1234

    --sourcedbtype

    ソースインスタンスのタイプ。 有効値:

    • 0 (デフォルト): スタンドアロンまたはスタンダード

    • 1: クラスター (直接接続モード)

    • 2: クラスター (プロキシモード)

    --sourcedbtype=1

    --sourcedbfilterlist

    ソース Redis インスタンスで検証するデータベース。

    説明
    • このパラメーターは Redis OSS クラスターインスタンスには必要ありません。

    • 他のクラスターインスタンスタイプの場合、デフォルトですべてのデータベースが検証されます。

    • 複数のデータベースを指定するには、それらの番号をセミコロン (;) で区切ります。

    --sourcedbfilterlist=0;1;2

    --targetdbtype

    ターゲットインスタンスのタイプ。 有効値:

    • 0 (デフォルト): スタンドアロンまたはスタンダード

    • 1: クラスター (直接接続モード)

    • 2: クラスター (プロキシモード)

    --targetdbtype=0

    --targetdbfilterlist

    ターゲット Redis インスタンスで検証するデータベース。

    説明
    • このパラメーターは Redis OSS クラスターインスタンスには必要ありません。

    • 他のクラスターインスタンスタイプの場合、デフォルトですべてのデータベースが検証されます。

    • 複数のデータベースを指定するには、それらの番号をセミコロン (;) で区切ります。

    --targetdbfilterlist=0;1;2

    -d

    不整合なデータのリストの出力ファイル名。 デフォルトのベース名は result.db です。

    xxx.db

    --comparetimes

    検証回数。 デフォルト: 3。 最小値: 1。 5 以下の値を推奨します。

    --comparetimes=1

    -m

    検証モード。 有効値:

    • 1: 完全検証

    • 2 (デフォルト): 値の長さのみを検証します

    • 3: キーの存在のみを検証します

    • 4: 完全検証を実行しますが、大きいキーは無視します

    -m=1

    --qps

    QPS の上限。 デフォルト値は 15000 です。

    説明
    • 最小値は 1 です。

    • 最大値はサーバーのパフォーマンスに依存します。

    --qps=10

    --filterlist

    比較するキーのリスト。 縦棒 (|) で区切ります。

    説明
    • abc*: 「abc」で始まるすべてのキーに一致します。

    • abc: キー "abc" にのみ一致します。

    --filterlist=abc*|efg|m*

    説明

    コマンドが終了すると、ツールはコマンドラインにサマリーを出力します。 出力例は、2 つの不整合なキーが存在することを示しています。 値が 0 の場合は、データに整合性があることを意味します。

    all finish successfully, totally 2 keys or fields conflict
  5. 不整合なキーを含む SQLite3 データベースを表示します。

    1. sqlite3 result.db.3 を実行します。

      説明

      デフォルトでは、不整合なデータのリストは result.db.3 に保存されます。 これは、検証回数 (comparetimes) のデフォルト値が 3 であり、ファイル名に付加されるためです。

    2. SELECT * FROM key; を実行します。

      図 1. 不整合なデータのリストの表示

      [root@redis-server RedisFullCheck]# sqlite3 result.db.3
      SQLite version 3.7.17 2013-05-20 00:56:22
      Enter ".help" for instructions
      Enter SQL statements terminated with a ";"
      sqlite> SELECT * FROM key;
      1|differentkey1|string|lack_target|0|10|0
      2|differentkey2|list|lack_target|0|4|0
      sqlite>
      説明

      SQLite3 データベースには、keyfield の 2 つのテーブルが含まれています。

      • key テーブルには、不整合なキーが格納されます。

      • hash、set、zset、list のデータ型の場合、field テーブルには不整合なデータの詳細が格納されます。