HandlerSocketを入れてみる
こんちはー
はてなダイアリーからHatena Blogに移行して最初の記事は
自分が契約しているさくらのVPS1GプランにHandlerSocketをインストールしたときの記録です。
環境
HandlerSocketって何?
DeNAの樋口さんが開発されたMySQLへのアクセスを高速化するプラグインで、MySQLに非SQLなインタフェースでアクセスできるようになります。
具体的には独自プロトコルでInnoDB等のストレージエンジンを直接叩くプラグインらしいです。
どんな仕組みかとかどれぐらい速くなるかは作者のスライドをみてください
インストール - makeするまで
HandlerSocketのインストールにはお使いのMySQLのソースコードが必要です。あらかじめ入手しておいてください。
またHandlerSocket本体はgithubで配付されています。
# git clone https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git # cd HandlerSocket-Plugin-for-MySQL # ./configure --with-mysql-source=/root/rpmbuild/SOURCES/mysql-5.5.27 \ --with-mysql-bindir=/usr/bin \ --with-mysql-plugindir=/usr/lib64/mysql/plugin
configureのオプションは以下の通り指定します
- --with-mysql-source : あらかじめ入手しておいたMySQLのソースコード。自分は5.5.27を使っている
- --with-mysql-bindir : mysqlコマンドの在処。which mysql_configしたらOK
- --with-mysql-plugindir : プラグインの在処。それっぽいのを探す。
これでMakefileが生成されました。
あとはmake installするだけ・・・と言いたいですがCentOSを使っている方は生成されたMakefile中に書かれている「-DMY_PTHREAD_FASTMUTEX=1」を1つ残らず削除します。(clientのMakefileも忘れないように!)
削除が終わったらmake installしてください。
インストール - make後
make installが終わったら/etc/my.cnfに以下の設定を追記します.
[mysqld] handlersocket_port = 9998 handlersocket_port_wr = 9999 handlersocket_address = handlersocket_verbose = 0 handlersocket_timeout = 300 handlersocket_threads = 16 thread_concurrency = 128 open_files_limit = 65535
各項目の意味はググってください。
そしてmysqlに接続して以下のコマンドを実行していきます。
mysql > use mysql mysql > install plugin handlersocket soname 'handlersocket.so'
ここまで実行したら以下のようになるはずです。
mysql > show plugins; +-----------------------+----------+--------------------+------------------+---------+ | Name | Status | Type | Library | License | +-----------------------+----------+--------------------+------------------+---------+ | binlog | ACTIVE | STORAGE ENGINE | NULL | GPL | | mysql_native_password | ACTIVE | AUTHENTICATION | NULL | GPL | | mysql_old_password | ACTIVE | AUTHENTICATION | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEDERATED | DISABLED | STORAGE ENGINE | NULL | GPL | | BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL | | InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL | | INNODB_TRX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCKS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_LOCK_WAITS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMPMEM_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | | handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD | +-----------------------+----------+--------------------+------------------+---------+
環境によって異なるので全く同じでなくても大丈夫です。「handlersocket」という項目が出てていたら完了です。
次回は実際に接続していろいろやってみようと思います