いかからmysql-5.6.13.tar.gzをダウンロードし、/usr/local/srcに保管
http://www.mysql.com/downloads/mysql/
groupadd mysql
useradd -g mysql mysql
CMakeインストール
yum install cmake
# cd /usr/local/src
# tar zxvf mysql-5.6.13.tar.gz
mysql5.6のインストール
cd mysql-5.6.13
cmake . -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make
make install
handlersocketをソースからインストール
モジュール取得
# git clone git://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL.git
このモジュールだとmakeで以下エラーが発生する。
・ ・ ・ database.cpp:819: error: within this context database.cpp: In member function ‘virtual void dena::dbcontext::cmd_open(dena::dbcallback_i&, const dena::cmd_open_args&)’: database.cpp:1018: error: cannot convert ‘MEM_ROOT*’ to ‘Open_table_context*’ for argument ‘3’ to ‘bool open_table(THD*, TABLE_LIST*, Open_table_context*)’ make[2]: *** [handlersocket_la-database.lo] Error 1 make[2]: Leaving directory/root/HandlerSocket-Plugin-for-MySQL-master/handlersocket' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/HandlerSocket-Plugin-for-MySQL-master' make: *** [all] Error 2
ということで、以下から取得
# git clone git://github.com/DeNA/HandlerSocket-Plugin-for-MySQL.git
# ./autogen.sh # ./configure --with-mysql-source=/usr/local/src/mysql-5.6.13 --with-mysql-bindir=/usr/local/mysql/bin --with-mysql-plugindir=/usr/local/mysql/lib/plugin # make # make install
アップグレード
# mysql_upgrade -p root
handlersocket.soをインストール
>install plugin handlersocket soname 'handlersocket.so'; Query OK, 0 rows affected (0.23 sec)
インストールされたプラグインを確認
>show plugin; +----------------------------+----------+--------------------+------------------+---------+ | 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 | | sha256_password | ACTIVE | AUTHENTICATION | NULL | GPL | | CSV | ACTIVE | STORAGE ENGINE | NULL | GPL | | MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL | | MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL | | PERFORMANCE_SCHEMA | ACTIVE | STORAGE ENGINE | NULL | GPL | | ARCHIVE | ACTIVE | STORAGE ENGINE | NULL | GPL | | BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEDERATED | DISABLED | 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 | | INNODB_CMP_PER_INDEX | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_CMP_PER_INDEX_RESET | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_PAGE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_PAGE_LRU | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_BUFFER_POOL_STATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_METRICS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_DEFAULT_STOPWORD | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_BEING_DELETED | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_CONFIG | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_INDEX_CACHE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_FT_INDEX_TABLE | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLESTATS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_INDEXES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_COLUMNS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FIELDS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FOREIGN | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_FOREIGN_COLS | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_TABLESPACES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | INNODB_SYS_DATAFILES | ACTIVE | INFORMATION SCHEMA | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | | handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD | +----------------------------+----------+--------------------+------------------+---------+ 43 rows in set (0.02 sec)
phpのhandlersocketモジュールをインストール
cd /usr/local/src/ curl -O https://php-handlersocket.googlecode.com/files/php-handlersocket-0.3.1.tar.gz tar zxvf php-handlersocket-0.3.1.tar.gz cd handlersocket/ phpize ./configure --disable-handlersocket-hsclient make make install vi /etc/php.ini extension=handlersocket.so
テスト
> CREATE TABLE `user` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NULL DEFAULT NULL, `birthday` DATE NULL DEFAULT NULL, `memo` VARCHAR(255) NULL DEFAULT NULL, PRIMARY KEY (`id`) ); > insert into user values(null, 'test1', '1980/05/01', 'test1'); > insert into user values(null, 'test2', '1980/05/02', 'test2');
phpソースを書いて、実行してみる。
# vi handlertest.php <? $host = 'localhost'; $port = 9998; $port_wr = 9999; $dbname = 'test'; $table = 'user'; $column = 'user_id,name,birthday,memo'; // select $hs = new HandlerSocket($host, $port); $hs->openIndex(1, $dbname, $table, '', $column); // select * from user where id >= 1 limit 2; $retval = $hs->executeSingle(1, '>=', array(1), 2); var_dump($retval); # insert # $hs = new HandlerSocket($host, $port_wr); # $hs->openIndex(2, $dbname, $table, '', $column); # $hs->executeInsert(2, [2,"test3","2001-01-01","test3"]); ?> # php handlertest.php array(2) { [0]=> array(4) { [0]=> string(1) "1" [1]=> string(4) "test1" [2]=> string(10) "1980-05-01" [3]=> string(4) "test1" } [1]=> array(4) { [0]=> string(1) "2" [1]=> string(5) "test2" [2]=> string(10) "1980-05-02" [3]=> string(5) "test2" } }
以上