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

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

最終更新日:Nov 09, 2025

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

前提条件

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

  • Linux を実行する ECS インスタンスが作成されていること。 詳細については、「ECS インスタンスの作成」をご参照ください。

  • ECS インスタンスがソースおよび宛先の Redis インスタンスにアクセスできること。

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

    • ECS インスタンスと Redis インスタンスが同じ VPC またはゾーンにない場合、Redis インスタンスのパブリックエンドポイントを使用して接続します。 詳細については、「パブリックエンドポイントを使用したインスタンスへの接続」をご参照ください。

シナリオ

データ移行中に例外が発生した場合、ソースインスタンスと宛先インスタンス間でデータが不整合になる可能性があります。 redis-full-check ツールを使用して、不整合なデータを見つけることができます。 このツールは、データアライメントのための信頼できる基盤を提供します。

redis-full-check は、Alibaba Cloud が Redis 向けに開発したデータ検証ツールです。 ソースインスタンスと宛先インスタンスからデータを抽出し、比較します。 このツールは、複数の比較ラウンドを実行し、結果を SQLite3 データベースに記録して、完全なデータセットを検証します。

説明

redis-full-check ツールの詳細については、「Git の redis-full-check ホームページ」をご参照ください。

手順

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

  2. ECS インスタンスで、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

    次の表に、一般的なオプションを示します。 詳細については、「RedisFullCheck の設定」をご参照ください。

    表 1. redis-full-check の一般的なオプション

    オプション

    説明

    値の例

    -s

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

    説明
    • ソース 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 インスタンスのエンドポイントとポート。

    説明
    • 宛先 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 (デフォルト): シングルノード版または Standard Edition

    • 1: 直接接続モードのクラスター版

    • 2: プロキシモードのクラスター版

    --sourcedbtype=1

    --sourcedbfilterlist

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

    説明
    • このオプションは、オープンソースの Redis クラスターでは必須ではありません。

    • 他のクラスタータイプの場合、このオプションを指定しないと、すべての DB が検証されます。

    • 複数の DB はセミコロン (;) で区切ります。

    --sourcedbfilterlist=0;1;2

    --targetdbtype

    宛先データベースのタイプ。

    • 0 (デフォルト): シングルノード版または Standard Edition

    • 1: 直接接続モードのクラスター版

    • 2: プロキシモードのクラスター版

    --targetdbtype=0

    --targetdbfilterlist

    宛先 Redis インスタンスで検証する DB。

    説明
    • このオプションは、オープンソースの Redis クラスターでは必須ではありません。

    • 他のクラスタータイプの場合、このオプションを指定しないと、すべての DB が検証されます。

    • 複数の DB はセミコロン (;) で区切ります。

    --targetdbfilterlist=0;1;2

    -d

    不整合なデータのリストを格納するファイルの名前。 デフォルト名は result.db です。

    xxx.db

    --comparetimes

    検証ラウンドの数。 デフォルト値は 3 です。 最小値は 1 です。 最大値はありませんが、推奨される最大値は 5 です。

    --comparetimes=1

    -m

    検証モード。

    • 1: 完全なデータを検証します。

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

    • 3: キーが存在するかどうかのみをチェックします。

    • 4: 完全なデータを検証しますが、大きなキーは無視します。

    -m=1

    --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 ファイルに保存されます。

    2. SELECT * FROM key; コマンドを実行します。

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

      説明

      SQLite3 データベースには `key` テーブルと `field` テーブルが含まれています。

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

      • `field` テーブルには、hash、set、zset、および list データ型の不整合に関する詳細が格納されます。