前些年,HandlerSocket的橫空出世讓人們眼前一亮,當時我還寫了一篇文章介紹了其用法梗概,時至今日,由于種種原因,HandlerSocket并沒有真正流行起來,不過慶幸的是MySQL官方受其啟發,研發了基于InnoDB的Memcached插件,總算是在MySQL中延續了NoSQL的香火,以前單獨架設Memcached服務器不僅浪費了內存,而且還必須自己維護數據的不一致問題,有了Memcached插件,這些問題都不存在了,而且借助MySQL本身的復制功能,我們可以說是變相的實現了Memcached的復制,這更是意外之喜。
安裝
為了讓文章更具完整性,我們選擇從源代碼安裝MySQL,需要注意的是早期的版本有內存泄漏,所以推薦安裝最新的穩定版,截至本文發稿時為止,最新的穩定版是5.6.13,我們就以此為例來說明,過程很簡單,只要激活了WITH_INNODB_MEMCACHED即可:
| shell> groupadd mysqlshell> useradd -r -g mysql mysqlshell> tar zxvf mysql-5.6.13.tar.gzshell> cd mysql-5.6.13shell> cmake . -DWITH_INNODB_MEMCACHED=ONshell> makeshell> make installshell> cd /usr/local/mysqlshell> chown -R mysql .shell> chgrp -R mysql .shell> scripts/mysql_install_db --user=mysqlshell> chown -R root .shell> chown -R mysql datashell> bin/mysqld_safe --user=mysql &shell> cp support-files/mysql.server /etc/init.d/mysql.server |
MySQL安裝完畢后,在插件目錄我們能看到innodb_engine.so和libmemcached.so:
| mysql> SELECT @@plugin_dir;+------------------------------+| @@plugin_dir |+------------------------------+| /usr/local/mysql/lib/plugin/ |+------------------------------+ |
| mysql> SOURCE /usr/local/mysql/share/innodb_memcached_config.sql |
| mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";mysql> UNINSTALL PLUGIN daemon_memcached; |
Memcached插件相關的配置信息如下,具體介紹可以參考官方文檔:
| mysql> SHOW VARIABLES LIKE '%memcached%';+----------------------------------+------------------+| Variable_name | Value |+----------------------------------+------------------+| daemon_memcached_enable_binlog | OFF || daemon_memcached_engine_lib_name | innodb_engine.so || daemon_memcached_engine_lib_path | || daemon_memcached_option | || daemon_memcached_r_batch_size | 1 || daemon_memcached_w_batch_size | 1 |+----------------------------------+------------------+ |