MySQLのクライアントプログラム
MySQLのパッケージにはMySQLサーバーであるmysqldの他に、
今回はついに50回を超えたにもかかわらずなかなか触れることのなかった、
デモ用の環境はCentOS 7.
$ yum install https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm $ yum install mysql-community-server $ rpm -qa | grep mysql mysql57-community-release-el7-11.noarch mysql-community-common-5.7.19-1.el7.x86_64 mysql-community-client-5.7.19-1.el7.x86_64 mysql-community-server-5.7.19-1.el7.x86_64 mysql-community-libs-5.7.19-1.el7.x86_64
これらのパッケージによってインストールされたファイルの一覧は、
$ rpm -ql $(rpm -qa | grep mysql)
クライアントプログラム群は、/usr/にインストールされています。
mysql
まずはmysqlコマンドラインクライアントです。いわゆるmysqlコマンドはこれのことを指します。
ちょっと通なユーザーであれば、MySQLと大文字小文字混じりで書く時は製品名としてのmysqlと書く場合はこのmysqlコマンドラインクライアントのことを指す場合もあります。
対話式のコマンドラインクライアントとして利用する他、-eオプションや標準入力からSQLを与えることでシェルスクリプトの良いおともになります。
$ mysql -uroot mysql>
$ mysql -uroot -e "SELECT COUNT(*) FROM mysql.user" +----------+ | COUNT(*) | +----------+ | 4 | +----------+
シェルスクリプトなどでSQLの結果を更に再利用する場合には、-sオプションや-nオプションが便利です。
$ mysql -uroot -sse "SHOW DATABASES" | egrep -v "performance_schema|information_schema|sys|mysql" | while read db ; do mysql -uroot -e "SHOW CREATE DATABASE $db" ; done d1 CREATE DATABASE `d1` /*!40100 DEFAULT CHARACTER SET utf8mb4 */
mysqladmin
mysqladminはMySQLサーバーの管理を行うためのクライアントです。管理を行うためにいくつかのサブコマンドが用意されています。
以下の表ではその一部を紹介しています。サブコマンドの完全なリストはmysqladminのリファレンスマニュアルに載っています。
| サブコマンド | 用途 | 対応するSQL |
|---|---|---|
| create | スキーマの作成 | CREATE DATABASE |
| debug | デバッグ情報をエラーログに出力 | なし |
| drop | スキーマの削除 | DROP DATABASE |
| extended-status | ステータス変数の表示 | SHOW GLOBAL STATUS |
| flush-hosts | ホストキャッシュのフラッシュ | FLUSH HOSTS |
| flush-logs | ログファイルのフラッシュ | FLUSH LOGS |
| ping | MySQLサーバーの起動確認 | なし |
| shutdown | MySQLサーバーのシャットダウン | SHUTDOWN (※) |
※)
mysqladmin pingは第12回 MySQLのヘルスチェックをする
mysqladminのサブコマンドはSQLで代替が効くものがほとんどでありSHUTDOWNステートメントも実装されました)、mysql -eに置き換えることが可能です。
しかしながら、-iオプション、-rオプションと組み合わせたextended-statusサブコマンドは、SHOW GLOBAL STATUSの差分を出力してくれるため、
$ mysqladmin -uroot -i 1 -r extended-status | grep "Com_update " | Com_update | 47993676 | | Com_update | 2 | | Com_update | 6 | | Com_update | 1 | | Com_update | 2 |
最初の出力は累計値がそのまま出力されますが、-iオプションで指定した秒数だけスリープして前回値との差分のみを出力してくれます。
mysqlbinlog
mysqlbnlogはバイナリーログファイルをパースしてSQLを表示するための独立したプログラムであると同時に、
$ mysqlbinlog -uroot -R --stop-never バイナリーログファイル名
$ mysqlbinlog -uroot --read-from-remote-master=BINLOG-DUMP-GTIDS --stop-never --raw バイナリーログファイル名
mysqlbinlogがクライアントプログラムとして振る舞う場合、
また、CHANGE MASTER TOステートメントのmaster_にパスが不要であるのと同じです)。
mysqlslap
mysqlslapはMySQLの簡易ベンチマークプログラムです。
オールインワンで綺麗に負荷をかけられるわけでもなく、mysqlslapですが、
mysqlcheck
mysqlcheckはテーブルに異常がないかを確認するためのクライアントです。内部的にCHECK TABLEステートメントにマップされています。そのためmysqlコマンドラインクライアントで代替することも可能ですが、mysqlcheckには--all-databasesオプションがあり便利です。
$ mysqlcheck -uroot --all-databases
mysqlcheckには--analyze、--repair、--optimizeオプションがあり、ANALYZE TABLE、REPAIR TABLE、OPTIMIZE TABLEにマップされています。
まとめ
今回はmysql、mysqladmin、mysqlbinlog、mysqlslap、mysqlcheckの紹介をしました。
あれ? みなさんの良く知っているあのクライアントプログラムがありませんね? それについては次回解説しますmysqldumpのことです!)。
