製品

Percona

Percona Toolkit

[2019/1/9] 掲載内容を更新し、PDF版日本語マニュアルのダウンロードが可能になりました

Percona Toolkit とは

「Percona Toolkit」は、PERCONA社が開発した、MySQLの“運用”、“監視”、“分析”といった複雑な作業を簡単に実施することができるコマンドツール群です。全部で34ツール存在します。(2017年3月31日現在)

PERCONA社は、MySQLのコンサルティング・保守サービス分野において、世界で最も高い評価の得ている企業です。2006年の創業以来、世界各国で1200件以上のコンサルティングおよびサポートの実績をもち、シスコシステムズ、グルーポン、BBCなどはPERCONA社の顧客となっています。

Percona製品は、MySQLと非常に高い互換性を持つ(drop-in replacement)MySQLの派生製品で、 MySQLユーザが快適に利用いただけることを開発コンセプトとしております。また、MySQLと同様、オープンソースで提供され、ユーザは無償で利用することができます。そのため、当ツールは日常の業務の中でMySQLを利用しているエンジニアの方は勿論、データベース全般に関するコンサルタントの方にもご活用いただけるツールとなっております。

Percona Toolkitを使うことで以下の作業を行うことができます。

  • MySQLを停止することなく、マスターとスレーブのデータの整合性を確認する
  • 2つのMySQL間のデータを同期する
  • 問題となっているSQLを検出する
  • スレーブを意図的に遅延させる
  • バージョン間の互換性を確認する

Percona Toolkitは外部の管理用サーバー、データベースサーバーのどちらにでも配置できます。

ただしデータベースサーバー以外に配置した場合には、一部の機能が利用できなくなります。

「Percona Toolkit」の日本語版の利用マニュアルを公開

Percona Toolkit 日本語版利用ガイド

Percona Toolkitの日本語版利用ガイドのダウンロード版となります。無料でダウンロードいただけますので、ご活用下さい。

Percona Toolkit構成

管理サーバーにインストールする構成

マスターサーバーにインストールする構成

スレーブサーバーにインストールする構成

Percona Toolkitの各種ツールと概要

ツール名概要
pt-align[機能概要]
指定のファイルもしくは、標準入力内容を、スペース区切りの単語に分割して見やすいように列幅を調整し、標準出力します。

[用途/備考]
vmstat や iostat コマンドの出力結果等を見やすい形式で表示する事ができます。

pt-archiver[機能概要]
指定したデータベース、テーブル、条件の行データを、他のデータベースサーバや、「LOAD DATA INFILE」で取り込める形式のファイルにアーカイブする事ができます。

[用途/備考]
行レベルでの指定条件のデータをファイル又は、別データベースへバックアップする場合等に有効です。

pt-config-diff[機能概要]
MySQLの設定ファイルもしくは、データベースサーバの指定により、サーバ変数の差分を出力します。

[用途/備考]
異なるMySQL設定ファイルの差異や、異なるデータベース間でのサーバ変数の設定値の違いを簡単に検出する事ができます。

pt-deadlock-logger[機能概要]
データベースのデッドロック情報をダンプします。

[用途/備考]
期間を指定してバックグラウンドで起動させ、指定のデータベーステーブルへデッドロック情報を保存したりする事が可能なので、デッドロックの監視を行う際等に有効です。

pt-diskstats[機能概要]
ディスクIOの統計情報を出力します。iostat コマンドに比べて、より汎用的に情報を出力する事ができます。

[用途/備考]
出力結果に実行時の日時情報を含めたり、デバイスや、出力項目を絞り込んで出力する事が可能である為、不要な情報を出力させない事が可能です。

pt-duplicate-key-checker[機能概要]
テーブルのインデックスや外部キーの重複チェックをします。

[用途/備考]
インデックス及び、外部キーに重複がないかを確認する際に、容易に確認する事ができます。

pt-fifo-split[機能概要]
ファイルサイズの大きいファイルから指定した行範囲の内容を表示します。

[用途/備考]
ログファイルのサイズが肥大化して、エディタ等でオープンするのに時間がかかる場合等でも、指定した行範囲の内容を時間をかけずに表示する事ができます。

pt-find[機能概要]
MySQLのテーブルを指定したアクションに基づいて検索を行い、該当のデータベース名、テーブル名を出力したり、指定条件に基づくテーブルに対して、SQLを実行する事ができます。

[用途/備考]
指定のテーブルサイズを超過しているテーブルを確認したり、engineがInnoDBであるテーブル全てに対して、MyISAM engineへ変更するALTER文を実行したりする事が可能です。

pt-fingerprint[機能概要]
クエリの抽象化を行います。改行や、複数スペースを省略、リテラル値を置換する事により、類似するクエリを正規化した同一のクエリになるよう変換して出力します。

[用途/備考]
このツールを使用する事により、パラメータ値の違いやスペース、改行の存在等の違いのみである、同一のクエリと判断できるクエリを収集する事ができます。

pt-fk-error-logger[機能概要]
外部キー制約に関するエラー情報を表示します。エラー情報を指定のテーブルに格納する事も可能です。

[用途/備考]
外部キー制約に関するエラーを監視する事ができます。

pt-heartbeat[機能概要]
MySQLサーバ、PostgreSQLサーバのレプリケーションの遅延を測定します。

[用途/備考]
レプリケーションの遅延を確認する事ができます。

pt-index-usage[機能概要]
Slowクエリログからクエリを読み込み、使用されていないINDEXを調査して、削除する為のクエリを出力します。

[用途/備考]
Slowクエリログ内のSQLから使用されていないINDEXを確認する事ができます。

pt-ioprofile[機能概要]
mysqldプロセスによるファイルのIO状況を監視します。

[用途/備考]
ファイルごとにIO情報が出力される為、ディスクIOの負荷が高い際には、どのファイルに対する負荷が高いのか等を確認する事ができます。

pt-kill[機能概要]
「SHOW PROCESSLIST」の情報を基に、条件に一致するクエリを終了させたり、接続を切断したりする事ができます。
また、クエリを終了、接続を切断せずに、指定条件に一致する情報のみを表示する事もできます。

[用途/備考]
指定時間以上の実行時間がかかるクエリを確認したり、該当のクエリを終了させる場合等に有効です。

pt-mext[機能概要]
「SHOW GLOBAL STATUS」を指定した間隔での差分を表示します。

[用途/備考]
接続数やクエリの実行回数、キャッシュの使用状況等を、指定間隔での変動を確認する事ができます。

pt-mongodb-query-digest[機能概要]
MongoDB query profilerからのクエリを集約することによって、クエリ使用状況の統計情報をレポートします。

[用途/備考]
クエリ使用状況の統計情報をレポートすることが可能です

pt-mongodb-summary[機能概要]
MongoDBから収集した情報をサマリして出力します

[用途/備考]
MongoDBから収集した情報をサマリして出力します。pt-mysql-summaryと同等のツールであり、MongoDBクラスタに関する情報も収集できます。

pt-mysql-summary[機能概要]
MySQLのステータス変数を用途ごとにサマリして出力します。

[用途/備考]
テーブルキャッシュの使用率やクエリキャッシュの使用率の確認したり、10秒間にカウントされた接続数やクエリ数のステータス変数を元に、1日でどの位になるのか計算された値を確認する事が可能です。

pt-online-schema-change[機能概要]
ロックをせずにテーブルの構造を変更する事ができます。

[用途/備考]
データ量が多いテーブルでは、通常のALTERクエリ実行により、長時間ロックされる可能性がある為、サービスの停止が必要となるケースも考えられますが、本ツールの使用により、サービスを止める事無く、テーブルへの列追加等が可能となります。

pt-pmp[機能概要]
LINUX上のスタックトレースを表示します。

[用途/備考]
OSレベルでの障害の原因究明や、プロセスが何故待ち状態となっているのか等を調べるのに有効です。

pt-query-digest[機能概要]
Slowクエリログの集計結果を表示します。

[用途/備考]
Slowクエリログより、ユーザや接続元ごとの、時間帯指定による集計を行う事ができるので、Slowクエリログを分析するのに最適です。

pt-show-grants[機能概要]
全ユーザのGRANT情報を出力します。

[用途/備考]
ユーザの権限情報等を参照するのに有効です。

pt-sift[機能概要]
「pt-stalk」によって作成されたファイルを閲覧します。

[用途/備考]
「pt-stalk」の出力情報を参照する際に使用します。

pt-slave-delay[機能概要]
マスターより遅れさせるために、必要に応じて従属サーバーを起動して、停止します。
レプリケーションの Slave を Master から意図的に遅延させます。

[用途/備考]
Master サーバでオペレーションミス等によるデータの反映を遅延させる事により、Slave への反映前にレプリケーションを切り離し、被害を最小に抑える事ができます。

pt-slave-find[機能概要]
Master に対してレプリケーションをしている Slave をツリー表示します。

[用途/備考]
指定のMaster に対してレプリケーションを行っている Slave を確認する事ができます。

pt-slave-restart[機能概要]
レプリケーションの Slave を監視して、エラー等により停止した場合に自動的に再起動を試みます。

[用途/備考]
Slave でエラー等によって停止された場合に、自動的に再起動してレプリケーションを同期させる事ができます。

pt-stalk[機能概要]
指定した条件に達した時点の netstat や vmstat、 iostat 等の様々な情報を出力します。

[用途/備考]
例えば、コネクションが指定数を超えた時点の、netstat の情報を確認する事等ができます。
この結果情報は、「pt-sift」ツールにより、閲覧する事が可能です。

pt-summary[機能概要]
サーバホストのOSやメモリ、ボリューム等の物理的な情報と、メモリ使用状況やプロセス情報、ネットワーク接続情報等の状況を出力します。

[用途/備考]
サーバホストに関する物理的な情報を参照する際に有効です。

pt-table-checksum[機能概要]
レプリケーションでのマスタとスレーブ間のテーブルの整合性をチェックします。

[用途/備考]
レプリケーション間のデータの整合性を確認する事ができます。

pt-table-sync[機能概要]
レプリケーションでのマスタとスレーブ間のテーブルを同期させます。

[用途/備考]
データベースを指定して全テーブルを同期させたり、個々のテーブルを指定して同期させる事も可能です。

pt-table-usage[機能概要]
Slowクエリログからクエリを読み込み、どのテーブルへアクセスするのかを分析表示します。

[用途/備考]
どのテーブルアクセスにおいて、Slowクエリログが多発しているか等を簡単に確認する事ができます。

pt-upgrade[機能概要]
複数のサーバへクエリを送って、実行時間やエラー、結果などの違いを出力します。
異なるバージョン間でのクエリ実行に関する違いを確認する事ができます。

[用途/備考]
MySQLのバージョンアップを行う際に、事前にクエリレベルでの実行を確認する事ができます。

pt-variable-advisor[機能概要]
MySQL変数を分析して、問題の可能性がある設定について出力します。

[用途/備考]
サーバ設定において一般的な問題がないかを確認する際等に有効です。

pt-visual-explain[機能概要]
EXPLAINの結果を元に、クエリの構成をツリー構造で出力します。

[用途/備考]
EXPLAINの結果を視覚的に分かりやすく表示する際に使用します。