Percona Toolkit のツールを全て使ってみる 2
(pt-config-diff)

目次

はじめに

本ブログは、「Percona Toolkit のツールを全て使ってみる」シリーズの第 2 弾となります!

Percona 製品は、MySQL と非常に高い互換性を持つ MySQL の派生製品であり、 MySQL ユーザが快適に利用できることを開発コンセプトとしています。また、MySQL と同様 OSS で提供され、ユーザは無償で利用することができます。

本記事で紹介する Percona Toolkit は、Percona 社が開発した MySQL の運用・監視・分析といった、手動で実行するには複雑な作業を簡単に実施することができるコマンドツール群です。
現在 (2024/12/16)、40 ツールが存在する中で、今回は pt-config-diff について紹介します。

Percona Toolkit のツールを全て使ってみるシリーズのブログは以下の表にまとめています。

シリーズ    
第 1 弾 pt-align pt-archiver
第 2 弾 (本ブログ) pt-config-diff  

その他、Percona Toolkit 関連のブログは まとめ で紹介していますので併せてご覧ください。

Percona Toolkit のダウンロード・インストール

ダウンロード・インストールに関しては、以下の公式サイトを参考にしてください。

環境情報

今回利用する環境情報

  • Oracle Linux 8
  • Percona Server for MySQL 8.0.39-30
  • Percona Toolkit 3.6.0

pt-config-diff

pt-config-diff は MySQL の構成ファイルとサーバー変数を比較し、差分を表示することができます。

※ 構成ファイルの比較ができるのはローカルのみとなっています。

実行例① 2 つの構成ファイルを比較

my.cnf1 と my.cnf2 の 2 つの構成ファイルを用意しました。

2 つの違いは key_buffer_size の値と順番です。
また、my.cnf2 の値はバイト単位で記載し、値の手前にあえて空白を入れています。
(17825792 = 17M)

実際に実行してみると

key_buffer_size の値が違うと一目で確認でき、値がバイト単位に統一されています。
1 config difference からも違いが 1 カ所のみとわかり、空白が入っていても問題なく出力結果も綺麗に整列されていて非常に見やすいです。(複数出力された場合、アルファベット順に整列されます)

※ 違いがない場合、何も出力されません

実行例② 複数の構成ファイルとサーバー変数を比較

pt-config-diff は複数の比較にも対応しています。
server_id が異なる 4 つの構成ファイルとローカルのサーバー変数を比較してみます。

このように構成ファイルやサーバー変数が混在している複数の比較も可能です。

しかし、上記の出力結果では文字が詰まっていて見づらいです。
これについては、–report-width オプションを使用することで改善可能です。

例では、ローカルのサーバー変数で比較しましたが、リモートサーバーでも可能です。

実行例③ サーバー変数とサーバー変数の比較

もちろん、サーバー変数とサーバー変数の比較も可能です。

以下は非同期レプリケーションのソースとレプリカのサーバー変数を比較しています。

オプション紹介

pt-config-diff には多くのオプションが存在します。
今回は –report-width–[no]ignore-case の 2 つのオプションをピックアップして紹介したかったのですが、残念なことに –[no]ignore-case オプションにバグがあることが判明したため、–report-width のみ紹介します。
–[no]ignore-case のバグについては 注意点 で詳細をご確認ください。

その他のオプションについては リファレンス をご確認ください。

–report-width

–report-width オプションは、出力結果の幅を変更することができます。
デフォルトでは 78 という数字が設定されているようです。

以下のように文字が詰まって途切れてしまった時に

–report-width オプションに適当な値を追加して実行すると

綺麗に出力することができます。
パス名が長い時や、複数比較する時には重宝しますね。

ほとんど使い道は無さそうですが、短くすることも可能です。

注意点

pt-config-diff には、いくつかの注意点があります。

  1. 値の大文字小文字の区別が付かない (–[no]ignore-case オプションが効かない)
    log_binLog_bin のようにサーバー変数名に大文字小文字が混在している場合は常に同一のものとみなされますが、log_bin=onlog_bin=ON といったように値に大文字小文字が混在している場合は同一とみなされません。こちらは最新のバージョン (Percona Toolkit 3.6.0) でもバグが継続しており、Percona の バグチケット にてバグであることを確認しています。
    本来ならば –[no]ignore-case オプションを使用することで区別されるはずですが、バグの影響でオプションが効きません。そのうちバグ修正が行われるかもしれませんが、値の大文字小文字の区別がつかないのは致命的に感じます…
  1. 構成ファイルで比較されるのは [mysqld] セクションのみ
    [mysql] や [client] セクションは比較されません。
  1. 構成ファイルはローカルのものしか比較できない
    リモート MySQL サーバーで比較できるのはサーバー変数のみになります。リモートの構成ファイルを比較したい場合は、一度ローカルに保存する必要があります。

まとめ

Percona Toolkit は、インストール自体が非常に簡単でインストールしておくだけで 40 個のツールを利用することができます。リファレンスに書かれている通り、これらのツールはプライベートや 1 回しか使用しないような時に非常に便利です。重宝するツールもあれば、使いこなすのに応用が必要そうなツールもありますが、Percona Toolkit 自体無償で提供されているのでぜひインストールしてみてください。

Percona Toolkit のツールを全て使ってみるシリーズはアルファベット順に進めていますので次回、第 3 弾は pt-deadlock-loggerpt-diskstats を紹介します! (ボリュームによっては pt-deadlock-logger のみの紹介となります)

* Percona Toolkit を紹介した SmartStyle TECH BLOG *

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃オープンソースデータベースのサポート業務に従事している有資格者で構成された技術サポートチームがPerconaに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

よかったらシェアしてね!
  • URLをコピーしました!
目次