LoginSignup
2
0

More than 5 years have passed since last update.

laradockでhandlersocketを試してみる

Posted at

今更handlersoket

MySQLをNoSQL化して、爆速な処理を実現するpluginのhandlersocket。(ザックリとした理解)
公開されたのが2010年頃なので、かれこれ10年近く前のことですが、今更試してみようと思いました。

そうだlaradockを使おう

handlersocketはMySQLの他にMariaDBでも使えます。
今回は初めからpluginにhandlersoket.soが用意されているMariaDBで試します。

手軽にdockerさんで環境を作ろうと思います。
Dockerファイルも便利セットのlaradockを使用します。

ちなみに、環境はwindows10 proでございます。

やってみよう

とりあえず適当な場所でlaradockをcloneします。
(https://laradock.io/)

mkdir dev
cd dev
git clone https://github.com/Laradock/laradock.git

それからMariaDBのmy.cnfを編集
(以下の内容を追加します)

laradock/mariadb/my.cnf
[mysqld]
plugin_maturity=beta
plugin-load=handlersocket.so

dockerさん立ち上げ

cd laradock
docker-compose build mariadb
docker-compose up -d mariadb
docker-compose exec mariadb bash

mariaさんのバージョン確認

# mysql --version
mysql  Ver 15.1 Distrib 10.3.14-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

handlersocketがpluginに反映されていることを確認。

MariaDB [(none)]> 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     |
| wsrep                         | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| CSV                           | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MEMORY                        | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MyISAM                        | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| MRG_MyISAM                    | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| CLIENT_STATISTICS             | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INDEX_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| TABLE_STATISTICS              | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| USER_STATISTICS               | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| SQL_SEQUENCE                  | 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     |
| 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     |
| INNODB_SYS_VIRTUAL            | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_MUTEXES                | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_SYS_SEMAPHORE_WAITS    | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| INNODB_TABLESPACES_ENCRYPTION | ACTIVE   | INFORMATION SCHEMA | NULL             | BSD     |
| INNODB_TABLESPACES_SCRUBBING  | ACTIVE   | INFORMATION SCHEMA | NULL             | BSD     |
| Aria                          | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| PERFORMANCE_SCHEMA            | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| SEQUENCE                      | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| FEEDBACK                      | DISABLED | INFORMATION SCHEMA | NULL             | GPL     |
| user_variables                | ACTIVE   | INFORMATION SCHEMA | NULL             | GPL     |
| partition                     | ACTIVE   | STORAGE ENGINE     | NULL             | GPL     |
| handlersocket                 | ACTIVE   | DAEMON             | handlersocket.so | BSD     |
+-------------------------------+----------+--------------------+------------------+---------+
54 rows in set (0.001 sec)

pluginに反映されました。

ここまでのみちのり

dockerさんでmariaDBを立ち上げようとした段階でちょこちょこ躓いたので、my.cnfの内容はもう少し書き加えてます。
今回記載したのはhandlersocketに関連する設定だけです。

はじめにmy.cnfには「plugin-load」のみ記載していました。
ここでplugin追加がされている予定でした。

laradock/mariadb/my.cnf
[mysqld]
plugin-load=handlersocket.so

しかし、「show plugins;」を実行して確認してみるとhandlersocketさんは不在・・・。
そこで手動で追加してみようとするとエラーが。

MariaDB [(none)]> INSTALL PLUGIN handlersocket SONAME 'handlersocket.so';
ERROR 1126 (HY000): Can't open shared library 'handlersocket.so' (errno: 1, Loading of beta plugin handlersocket is prohibited by --plugin-maturity=gamma)

なんでや。
エラーの内容をみると、「plugin-maturityの設定がgammaでhandlersocketはbataだから禁止だよ」って感じでしょうか?

そこでmariaDBのサイトを確認。
(https://mariadb.com/kb/en/library/server-system-variables/#plugin_maturity)

plugin_maturity
・Description: The lowest acceptable plugin maturity. MariaDB will not load plugins less mature than the specified level.
・Commandline: --plugin-maturity=level
・Scope: Global
・Dynamic: No
・Type: enum
・Default Value: One less than the server maturity (>= MariaDB 10.3.3), unknown (<= MariaDB 10.3.2)
・Valid Values: unknown, experimental, alpha, beta, gamma, stable
・Introduced: MariaDB 5.2.1

このplugin-maturityをbataにすれば良さげ、ということでmy.cnfに追加。

laradock/mariadb/my.cnf
[mysqld]
plugin_maturity=beta  # <- new!
plugin-load=handlersocket.so

これで上手く反映されるようになりました。

つづく?

まだ実際にhandlersocketを動かしてはいないので、動かしてみようと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0