MySQLの管理・ユーティリティプログラム徹底解説:各ツールの役割と使い方
MySQLには、データベースの保守やトラブルシューティングに役立つ多彩な管理・ユーティリティプログラムが付属しています。この記事では、代表的なツールそれぞれの役割と基本的な使い方を、実行コマンド例とあわせてわかりやすく解説します。
ibd2sdi
ibd2sdiは、InnoDBテーブルスペースファイルからシリアライズディクショナリ情報(SDI)を抽出するためのユーティリティです。SDIデータは、すべての永続的なInnoDBテーブルスペースファイルに格納されています。ibd2sdiは、サーバー稼働中はもちろん、サーバーがオフラインの状態でも利用できる点が特徴です。
innochecksum
innochecksumは、InnoDBファイルのチェックサムを出力するツールです。InnoDBテーブルスペースファイルを読み込み、各ページのチェックサムを計算して、保存済みのチェックサムと照合します。両者に不一致があれば破損したページとしてレポートされるため、データ破損の早期発見に役立ちます。
もともとは停電などの障害発生後にテーブルスペースファイルの整合性を素早く検証する目的で開発されましたが、ファイルコピー後の確認などにも活用できます。
実行方法は以下のとおりです。
shell> innochecksum [options] file_name
myisam_ftdump
myisam_ftdumpは、MyISAMテーブルのFULLTEXTインデックスに関する情報を表示するツールです。MyISAMのインデックスファイルを直接読み込む仕組みのため、対象テーブルが存在するサーバーホスト上で実行する必要があります。
また、サーバーが稼働中の場合は、myisam_ftdumpを使用する前に必ずFLUSH TABLESステートメントを実行しておきましょう。これにより、最新の状態のインデックス情報を取得できます。
実行方法は以下のとおりです。
shell> myisam_ftdump [options] tbl_name index_num
myisamchk
myisamchkは、データベーステーブルの情報を取得したり、テーブルのチェック・修復・最適化を行ったりできる多機能なツールです。対象となるのはMyISAMテーブル、すなわちデータ用の.MYDファイルとインデックス用の.MYIファイルを持つテーブルです。
なお、パーティション化されたテーブルに対してmyisamchkを使用することはサポートされていないので注意してください。
実行方法は以下のとおりです。
shell> myisamchk [options] tbl_name ...
myisamlog
myisamlogは、MyISAMログファイルの内容を処理するツールです。この種のログファイルを作成するには、--log-isam=log_fileオプションを指定してサーバーを起動します。
実行方法は以下のとおりです。
shell> myisamlog [options] [file_name [tbl_name] ...]
myisampack
myisampackは、MyISAMテーブルを圧縮するユーティリティです。テーブル内の各カラムを個別に圧縮することで動作し、一般的にはデータファイルのサイズを40%~70%削減できます。ディスク容量を節約したい場合に有効なツールです。
実行方法は以下のとおりです。
shell> myisampack [options] file_name ...
mysqlbinlog
サーバーのバイナリログは、データベースの内容に対して行われた変更を記述する「イベント」を含むファイル群です。サーバーはこれらのファイルをバイナリ形式で書き込むため、そのままでは人間が読むことができません。
そこで登場するのがmysqlbinlogユーティリティです。これを使えば、バイナリログの内容をテキスト形式で表示でき、レプリケーションの調査やポイントインタイムリカバリの準備などに活用できます。
実行方法は以下のとおりです。
shell> mysqlbinlog [options] log_file ...
mysqldumpslow
MySQLのスロークエリログには、実行に長時間かかったクエリの情報が記録されています。mysqldumpslowは、このスロークエリログファイルを解析し、内容を集約・要約してくれるツールです。どのクエリがボトルネックになっているかを把握し、パフォーマンスチューニングの糸口を見つけるのに便利です。
実行方法は以下のとおりです。
shell> mysqldumpslow [options] [log_file ...]
-
MySQLでシーケンス(連番)を作成・使用する方法をわかりやすく解説
MySQLにはOracleやPostgreSQLのような独立したシーケンスオブジェクトは存在しませんが、カラムにAUTO_INCREMENT属性を設定することで、同じ機能を簡単に実現できます。レコードを挿入するたびに、初期値1から始まり、1ずつ自動的に増加する連番が割り当てられます。 1. シーケンス用テーブルの作成 まず、CREATE TABLE文を使って、AUTO_INCREMENT属性を持つカラムを含むテーブルを作成します。主キーとして設定するのが一般的です。 mysql> CREATE table SequenceDemo -> ( -> SequenceId in
-
MySQLのデータベースファイルはどこに保存される?保存場所の確認方法
MySQLがデータベースファイルを実際にどのディレクトリへ保存しているのかを確認したい場合は、システム変数 @@datadir を参照するのが最も簡単な方法です。この記事では、その確認手順と、取得したパスにデータベースが正しく存在することを検証する方法までを解説します。 @@datadirでデータディレクトリを確認する まず、以下のようにSELECT文で@@datadirの値を取得します。 mysql> SELECT @@datadir; 実行結果の例 +---------------------------------------------+ | @@datadir