製品&サポートサービス

pt-upgrade

コマンド

pt-upgrade [オプション] [ログファイル] [DSN1] [DSN2]

【必須項目】

  • ・ [ DSN ] : h=ホスト名,u=ユーザ名,p=パスワード
  • ・ [ログファイル] : 比較するログファイルを指定します

【主なオプション】

  • ・ --no-read-only : ログファイルの全てのクエリを比較するようになります(通常はSELECT,SET文しか比較しません)
  • ・ --type : 比較するログファイルのフォーマットを指定することができます。通常はslowlogになっています
    フォーマット名 ログの内容
    slowlog スロークエリログ
    genlog ジェネラルログ
    binlog バイナリログ
    rowlog 1行に1つSQL文を書いた、オリジナルファイル

目的

異なるサーバ間で、クエリ実行時間の違いや、エラーの有無を比較した結果を出力します

シナリオ

バージョンが異なるサーバを二台用意します

mysql5.6 ホスト名=localhost、DBユーザ名=root、パスワード=password
mysql5.1 ホスト名=192.168.2.222、DBユーザ名=test、パスワード=password

※ デフォルトの設定では、SELECTの権限があればツールは動きます

Slowクエリログは、デフォルトでは10秒以上のクエリが記録されるようになっていますが、0秒以上で記録するように変更します

my.cnf に追記

long_query_time = 0

localhost(mysql5.6)側でいくつかクエリを実行します

SELECT文 10件
INSERT文 5件

※ performance_schemaに対するSELECT文を1件実行しています

コマンドを実行する前に、my.cnfのlong_query_timeオプションを元に戻し、その後ログを比較します

# pt-upgrade /var/lib/mysql/slow_queries.log \
> h=localhost,p=password h=192.168.2.222,u=test,p=password

結果

pt-upgrade01

良い点

環境の異なるサーバ間で、同じクエリを実行した結果を簡単に確かめることができます

バージョンアップを行う前に、移行後のデータの安全・整合性を確かめることができます

その他

クエリの実行結果を一度ファイルに保存しておき、そのファイルと比較することもできます

  • ・ pt-upgrade [オプション] --save-results [保存先ディレクトリ] [ログファイル] [DSN1]
  • ・ pt-upgrade [オプション] [リザルトディレクトリ] [DSN2]
    •   -save-results [保存先ディレクトリ] : ログファイルに書かれたクエリと、その実行結果やレコードを保存します
    •   [リザルトディレクトリ] : リザルトファイルのあるディレクトリを指定します

--save-results を使用すると、保存先のディレクトリに以下のようなファイルが作成されます

query 実行されたクエリ
results クエリの実行結果(エラー結果もしくは、警告や実行時間)
rows 抽出されたレコードの内容

比較結果が出力されるのは、以下のような場合です

Row Count 抽出されたレコードの行数が違う場合
Row Data 抽出されたレコードの内容が違う場合
Warnings 片方のホストで警告が出た場合
Query time クエリの実行時間が大幅に異なる場合
Query errors 片方のホストでエラーが起きた場合
SQL errors 両方のホストでエラーが起きた場合(文法エラー)

MySQLや関連ソリューションに関するお問い合わせ、お見積などがございましたら、ご連絡ください。

お問い合わせ各MySQL保守サービス見積依頼スマートスタイルOSSストア

ページトップへ