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

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

最終更新日:Jul 22, 2026

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

前提条件

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

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

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

    説明

ユースケース

データ移行中のエラーにより、ソースインスタンスとターゲットインスタンス間でデータの不整合が発生する可能性があります。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.3。

    xxx.db

    --comparetimes

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

    --comparetimes=1

    -m

    検証モード。有効な値:

    • 1:フル検証。

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

    • 3:キーの存在のみを検証。

    • 4:フル検証を実行するが、大きなキーは無視。

    -m 1

    --qps

    QPS (queries-per-second) の制限。デフォルト値は 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 に保存されます。

    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 データベースには、key と field の 2 つのテーブルが含まれています。

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

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