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
のことです!)。