2011年1月9日

Install MySQL 5.5 on MacOSX

MacOSX に MySQL 5.5 をインストールするメモ

MySQL 5.5 の GA 版 (5.5.8) が登場したので手元で使えるようにします。 もちろんパッケージでインストールするのが簡単ですし普通はそうするべきですが、 文字コードの扱いを確認したくなることがあるかもしれませんので、ソースコードからコンパイルすることにします。 また、デーモンの監視には daemontools を使います。

ということで、そのメモです。 特に文字の扱いを試した、ということではありません。

  1. MySQL のサイトからソースコードをダウンロードする。ログインが必要なので省略。
  2. ソースコードをコンパイルする。
  3. インストールしてパスを通す。
  4. 自動で起動するようにする。

コンパイル

今回のリリースでビルドシステムが autotools から CMake に変更されました。 パッケージを展開してから ./configure && make && make install は通用しなくなります。 configure の代わりに cmake を使うことに加えて、オプションの与え方も異なります。 詳しいことはソースコードに同梱されている INSTALL-SOURCE を読むとして、 手元では最低限のこととして次のオプションを与えました。

$ cmake . \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.5 \
    -DWITH_INNOBASE_STORAGE_ENGINE=1 \
    -DDEFAULT_CHARSET=utf8mb4
$ make

utf8mb4 が大事なところで、これまで3バイトまでの UTF-8 文字列しか扱えなかった問題が解消します。 特にアジア圏の人には嬉しい変更と言えます。

インストール

CMake の -DCMAKE_INSTALL_PREFIX で指定したディレクトリにインストールします。

$ sudo make install

プリフィクスにバージョン番号を付与してあったのは、バージョンが異なる MySQL を複数インストールしてある状態のためです。 とはいえデフォルトのものもあると嬉しいのでシンボリックリンクを張ります。 さらに、コマンドラインクライアントにはパスが通っていると嬉しいのでこれもシンボリックリンクを使います。

$ cd /usr/local
$ sudo ln -s mysql-5.5 mysql
$ sudo ln -s mysql/bin/mysql bin/mysql
$ which mysql

もう一段ディレクトリを掘って mysql の下にバージョン違いを入れて current を使う、という方法もあると思いますが、 これまでの環境の都合もありますので上記のようにしてあります。

自動で起動

マシンを起動する度に MySQL の起動を考えるのは煩雑なので daemontools を使います。 macports で daemontools をインストールした場合には svscan の監視ディレクトリは /opt/local/var/svscan/service だと思いますので、そこに mysql ディレクトリを作成して run スクリプトを置きます。

$ cat /opt/local/var/svscan/service/mysql/run
#!/bin/sh
MYSQL_ROOT=/usr/local/mysql

exec $MYSQL_ROOT/bin/mysqld --basedir=$MYSQL_ROOT --user=mysql

スキャンさせるディレクトリを変更するためには /Library/LaunchDaemons/org.macports.svscan.plist を編集すれば良いはずです。

終わりに

MySQL をソースコードからコンパイルして自動で起動するように設定しました。 前半部分は スクリプト にまとめたのですが、 後半部分、特に daemontools のディレクトリを忘れそうだったのでまとめた、というのが本音。。。

機能の詳しいことは MySQL 5.5新機能徹底解説 [漢字(オトコ)のコンピュータ道] を参照。

  • InnoDBの大幅な改善
  • ロックの改善
  • 準同期レプリケーション
  • レプリケーションのその他の改善
  • FLUSH LOGS
  • 4バイトUTF-8対応
  • COLUMNS PARTITIONING
  • mysqldump
  • LOAD XMLコマンド
  • DTrace対応
  • SIGNAL/RESIGNAL
  • PERFORMANCE_SCHEMA
  • 認証および監査のプラグイン化
  • オプションの変更
  • ビルドシステムの変更
  • まとめ
コメントを投稿