Pythonで作られた便利なコマンドラインツール MySQL Utilities

2014年2月11日(火)
木村 明治(きむらめいじ)

「MySQL Utilities」とは?

MySQL UtilitiesはPython言語により作成された便利なコマンドラインツール群です。MySQL Workbenchに付属する形で公開され、現在はMySQL Workbenchから独立する形で配布されています。そしてMySQLサーバーへの接続にはConnector/Pythonが利用されています。
LinuxをはじめとするPythonの環境が整っているプラットフォームではPythonスクリプトがそのまま提供され、Windowsのように標準的なPython環境を持たないプラットフォームではPythonのスクリプトをネイティブの実行形式(*.exe)に変換された形で配布されています。

MySQL Utilities自体はコマンドラインのツール群ですので、Workbenchの実行に必要な、比較的新しめのGUI環境は必要ありません。そのため、Workbenchがサポートするよりも、より多くのプラットフォームで単独利用が可能です。

MySQL Utilitiesコマンドラインツール一覧

MySQL Utilitiesは原稿執筆時点(2014-01)で、以下の20ユーティリティ+実行環境(mysqluc: MySQL Utilities Client)の21ユーティリティから構成されています。

ユーティリティ 記述
mysqlauditadmin 監査ログメンテナンスユーティリティ
mysqlauditgrep 監査ログ検索ユーティリティ
mysqldbcompare データベース比較
mysqldbcopy サーバー間でのデータベースのコピー
mysqldbexport データベースからメタデータとデータのエキスポート
mysqldbimport データベースからメタデータとデータのインポート
mysqldiff データベースオブジェクト定義の比較
mysqldiskusage データベースのディスク仕様量の表示
mysqlfailover レプリケーションの自動モニタリングとフェイルオーバー
mysqlfrm .frmファイルからテーブル定義を表示
mysqlindexcheck 重複、もしくは冗長なインデックスをチェック
mysqlmetagrep メタデータの検索
mysqlprocgrep プロセス情報の検索
mysqlreplicate マスターとのレプリケーション確立
mysqlrpladmin レプリケーション管理ユーティリティ
mysqlrplcheck レプリケーションのチェック
mysqlrplshow マスターに接続されているスレーブの表示
mysqlserverclone 動作中のMySQLを元に別インスタンスを開始
mysqlserverinfo MySQLサーバーの情報を表示
mysqluserclone 既存のMySQLユーザから新しいユーザを作成

MySQL Utilitiesならではの注意点

MySQL Utilitiesは従来のコマンドラインツール群とは違い、以下のような記述で接続先を指定します。
これは、従来のコマンドラインツール群が主に1つのMySQLサーバーを対象として動作するものなのに対して、MySQL Utilitiesは2つ以上のMySQLサーバーを対象として動作するものが多いため、このような記法になっています。

[MySQL Utilitiesの記法]

--server=ユーザ名:パスワード@ホスト名:ポート番号

[MySQL コマンドラインツール群の記法]

--user=ユーザ名 --password=パスワード --host=ホスト名 --port=ポート番号

なおWindows環境ではローカルホストとしてlocalhostと127.0.0.1のどちらを指定しても同じですが、LinuxやUNIXではホスト名に対してlocalhostを指定するとUNIXドメインソケットを利用して接続を行います。そのため、localhostを指定する場合にはポート番号の代わりにソケット名を指定してください(例: --server=root:root@localhost:/var/lib/mysql/mysql.sock)。

コマンドがうまく動作しない場合、多くのコマンドでは-vオプションが使えますので、-vを追加のうえ再実行して動作の詳細を表示してください。またWindows環境のようにmysqlucから実行している場合には、show last errorにてエラーメッセージを調べることも可能です。

MySQL Utilitiesのインストール

MySQL UtilitiesはWorkbenchホーム画面右上(図1)のMySQL Utilitiesからクリック(もしくはメニューのTools-Start Shell for MySQL Utilitiesから)して起動します。

図1:MySQL Utilitiesの起動(クリックで拡大)

まだインストールされていなければインストールのガイダンスがエラーメッセージにて表示されるので、それに従ってインストールしてください。Windowsの場合はMSI形式のインストーラになります。

またLinuxではプラットフォーム別、もしくは一般的なLinuxに利用できるGeneric Linuxのパッケージを利用することになります。RHEL/Oracle Linuxにインストールする場合はrpmパッケージを以下のコマンドでインストールします。

shell> yum install mysql-utilities-1.3.6-1.el6.noarch.rpm

通常はデフォルトで入っているPythonで事足りるため、Connector/Pythonパッケージの追加インストールだけで利用できるようになります。

実際に利用してみよう

MySQLサーバーの情報を表示するmysqlserverinfoを実際に利用してみましょう。指定するオプションは--server=での接続先の指定と、表示を垂直に表示する--format=verticalの二つです(MySQLコマンドラインツールの\Gに相当します)。

mysqluc> mysqlserverinfo --server=root:root@localhost:3306 --format=vertical
  # Source on localhost: ... connected.
  *************************       1. row *************************
  server: localhost:3306
  config_file:
  binary_log:
  binary_log_pos:
  relay_log:
  relay_log_pos:
  version: 5.6.14-log
  datadir: C:\ProgramData\MySQL\MySQL Server 5.6\data\
  basedir: C:\Program Files\MySQL\MySQL Server 5.6\
  plugin_dir: C:\Program Files\MySQL\MySQL Server 5.6\lib\plugin\
  general_log: ON
  general_log_file: MEIJI-ACER-PC.log
  general_log_file_size:
  log_error: .\MEIJI-ACER-PC.err
  log_error_file_size:
  slow_query_log: OFF
  slow_query_log_file:
  slow_query_log_file_size:
  1 row.
著者
木村 明治(きむらめいじ)
日本オラクル株式会社
日本オラクル株式会社MySQLサポートエンジニア。
MySQL以外にもFirebirdをはじめとするオープンソースデータベースの世界で活動している。
著書に「Firebird徹底入門」(共著)、「プロになるためのデータベース技術入門〜MySQL For Windows〜」

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています