$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

mysqlenvの管理配下にデバッグオプション付きのMySQLをインストールする

【2022/09/09追記】もっと簡単な方法があったみたい!

最近アルゴリズムの勉強をしていて、MySQLの挙動を追う機会があった。そこでMySQLデバッグを出来るようにと、MySQL :: MySQL 5.6 リファレンスマニュアル :: 24.4.1.1 デバッグのための MySQL のコンパイル に書いてあるように、MySQLデバッグオプション付きでコンパイルしてインストールしたかった。

また、自分はmysqlenvを普段使っているので、mysqlenvでデバッグオプションがついたMySQLにすぐに切り替えられるようにもしておきたい。

ただ一つ問題があった。それはmysqlenv installコマンドにはデバッグ付きでインストールできる方法がないことだった。

そこでmysqlenvの管理配下にデバッグオプション付きのMySQLをインストールする方法が何かないか試したのでメモ。

mysqlenvが裏側で何を使っているか

以下のコマンドを実行してみたら結局は裏側はmysql-buildであるということが分かる。

$ mysqlenv install --as 5.6.35-debug 5.6.35
run: mysql-build 5.6.35 /Users/shibayu36/.mysqlenv/mysqls/5.6.35-debug

mysql-buildのオプションを調べる

$ mysql-build --help
mysql-build, Compile and Install MySQL
usage: mysql-build [-v|--verbose] [--with-debug] [--sudo] definition prefix [plugin[,...]]
       mysql-build --definitions
       mysql-build --plugins

  -v/--verbose     Verbose mode: print compilation status to stdout
  --with-debug     Debug build
  --definitions    List all built-in definitions
  --plugins        List all built-in plugins
  --sudo           Run install as superuser

正に必要な--with-debugオプションがあった。しかしmysqlenvからこのオプションを渡す方法はコードを見る限りなさそうだった。

mysql-buildで直接mysqlenvの管理配下にインストールする

mysql-build 5.6.35 /Users/shibayu36/.mysqlenv/mysqls/5.6.35-debugをよく見ると、結局はmysqlenvは~/.mysqlenv/mysqls/以下にmysql-buildでインストールしているだけである。そこで以下のコマンドを実行すればmysqlenvの管理配下にインストールできる。

$ mysql-build --with-debug 5.6.35 /Users/shibayu36/.mysqlenv/mysqls/5.6.35-debug

mysql-install-dbを実行する

mysqlenvのコードを見てみると、mysqlenv installは自動でmysql_install_dbを発行してくれている。そこで最後にそれを実行する。

$ cd /Users/shibayu36/.mysqlenv/mysqls/5.6.35-debug
$ find . | grep mysql_install_db
./man/man1/mysql_install_db.1
./scripts/mysql_install_db
$ ./scripts/mysql_install_db
...

mysqlenvで確認する

$ mysqlenv list
  5.5.49
* 5.6.27
  5.6.35-debug
$ mysqlenv local 5.6.35-debug
$ mysqlenv list
  5.5.49
  5.6.27
* 5.6.35-debug
$ mysql --help
# --debugオプションがあれば成功

ということで成功してそう。実際にdebugオプションで起動はまだしていないので、もうちょっと確認する必要はあるが...

まとめ

今回はmysqlenvの管理配下にデバッグオプション付きのMySQLをインストールする方法についてメモしておいた。