― Web Technology and Life ―

UbuntuのMySQLにHandlerSocketプラグインをインストール

2011-06-04
Yokohama.pm#7でnekokakさんが紹介していたDeNA社の秘伝のタレ(だった)を試しに使うべく、このブログを運用しているSakuraVPS(LinuxはUbuntuに変更)のMySQLにHandlerSocketプラグインを入れてみました。

参考URL

以下のURLを参考に入れてみました。

インストール手順

  • インストールしたMySQLのソースを取得する
  • apparmorに追加
  • MySQLにHandlerSocketプラグインのインストール
  • PerlのHandlerSocketクライアントのインストール

インストールしたMySQLのソースを取得する

MySQLのインストールから始める場合は、「sudo aptitude install mysql-server-5.1」でインストール,「sudo apt-cache showpkg mysql-server-5.1」でソースがとれます。

一方で、aptitudeでいれたパッケージはそこそこの頻度でバージョンアップされていくので、過去にいれたMySQLにHandlerSocketプラグインを導入しようとする場合は、入れてあるMySQLのバージョンと最新のaptパッケージのバージョンその場合は『Ubuntuのaptitudeでいれたパッケージのソースと取得する方法』にまとめましたのでこちらを御覧ください。

ここでは、一般的な慣習に習って「/usr/local/src/mysql-dfsg-5.1-5.1.41」にMySQLソースディレクトリを構築しました。

apparmorに追加

「Ubuntuの場合は、apparmorの設定に下記を追加しないと、インストールできない。」ということで以下のようにします。apparmorというのは何かよく知らないので触れません。。。

$ sudo vi /etc/apparmor.d/usr.sbin.mysqld

#下記追加
/usr/lib/mysql/plugin/* mr,

$ sudo service apparmor restart

MySQLにHandlerSocketプラグインのインストール

ここからが本番ですが、いろいろ足りなさ気なライブラリで出てくることもあるのでその際は都度調べながらaptitudeでゴリゴリ入れていきます。 とりあえず、結果的に、私がいれたパッケージの一覧は以下の通りです。

#$ sudo ./autogen.sh 時に使用
$ sudo aptitude install libtool
$ sudo aptitude install autoconf
#MySQLのソースに追記をするときに使用
$ sudo aptitude install dpatch

早くHandlerSocketをインストールしたいところですが、先ほど落としたMySQLのソースをいじる必要があるようですので以下のように修正します。

$ cd /usr/local/src/mysql-dfsg-5.1-5.1.41 
$ sudo aptitude install dpatch #問題ないことを確認
$ sudo vim configure.in
    先頭に下記を追加した。
    #([MySQL Server], 5.1.41) 

さて、やっとHandlerSocketプラグインを利用出来るようにします。git clone時からsudoつけていますが、間違ってつけていただけなので、ケースバイケースで以下でもsudoをつけなくていいところがたくさんあるので注意してください・・・・。

$ sudo git clone https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git
$ cd HandlerSocket-Plugin-for-MySQL
$ sudo ./autogen.sh
$ sudo ./configure --with-mysql-source=/home/hirobanex/tmp/mysql_download2/mysql-dfsg-5.1-5.1.41 --with-mysql-bindir=/usr/bin --with-mysql-plugindir=/usr/lib/mysql/plugin #それぞれのPathは任意のものを使用
$ sudo make
$ sudo make install

#mysqlを起動した状態で、mysqlの設定ファイル(my.cnf等)に以下の内容を追加した
$ sudo vi /etc/mysql/my.cnf
  [mysqld]
  ##handlersocket
  handlersocket_port = 9998    # handlersocketが接続を受け付けるポート(参照系リクエスト用)
  handlersocket_port_wr = 9999 # handlersocketが接続を受け付けるポート(更新系リクエスト用)
  handlersocket_address =      # handlersocketがバインドするアドレス(空のままでOK)
  handlersocket_verbose = 0    # デバッグ用
  handlersocket_timeout = 300  # 通信タイムアウト(秒)
  handlersocket_threads = 16   # handlersocketのワーカースレッド数
  thread_concurrency = 128     # handlersocketが幾つかのスレッドを占有するため、大きめの値を指定してください
  open_files_limit = 65535     # ソケットを大量に開けるようにするため、大きめの値を指定してください

$ mysql -uuser -ppass
mysql> install plugin handlersocket soname 'handlersocket.so';

$ sudo service mysql restart

以下で起動できているか確認するようです。すべてのクエリ結果にhandlersocketという文字列を見ることができます。

$ mysql -uuser -ppass
mysql> show plugins;
mysql> show variables like 'handlersocket%';
mysql> show processlist;

PerlのHandlerSocketクライアントのインストール

Perlインターフェースでアクセスするので、gitパッケージについているものから入れます。

$ cd perl-Net-HandlerSocket
$ /usr/bin/env perl Makefile.PL #perlbrew使用時
$ make
$ make install

感想

そこそこインストール系のドキュメントもWeb上にありますし、なかなかいれやすい方だったんじゃないでしょうか。MySQLのソースを取得するところでわりとハマりましたが・・・。

さて、次はNet::HandlerSocketとかを利用して、このブログのバックグラウンドのシステムにHandlerSocketを組み込んでみたいと思いますが、、、これは来週以降かな・・・。

MySQL update_at : 2011-06-11T13:11:33
hirobanex.netの更新情報の取得
 RSSリーダーで購読する   
blog comments powered by Disqus