[Level 3] Install Memcached Storage Engine for MySQL on CentOS 5.4
Prepare the package first for build the memcached storage engine.
Download libmemacached 0.34 and install:
Download libxml2 and install:
Download libxmlrow and install:
Download memcached storage and install:
Install plugin storage:
Test it:
mysql> select * from test.testMemSE where id=1;
...
Wish this helps.
regards,
Stanley Huang
Download libmemacached 0.34 and install:
# wget http://download.tangent.org/libmemcached-0.34.tar.gz
# tar zxvf ./libmemcached-0.34.tar.gz
# cd ./libmemcached-0.34
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# ./configure && make && make install
Download libxml2 and install:
# wget ftp://xmlsoft.org/libxml2/libxml2-2.7.7.tar.gz
# tar zxvf libxml2-2.7.7.tar.gz
# cd ./libxml2-2.7.7
# ./configure && make && make install
Download libxmlrow and install:
# wget http://download.tangent.org/libxmlrow-0.2.tar.gz
# tar zxvf ./libxmlrow-0.2.tar.gz
# cd ./libxmlrow-0.2
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# ./configure && make && make install
Download memcached storage and install:
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# sed -i "s#uint16_t#uint32_t#g" ./src/ha_memcache.cc
# ./configure --with-mysql=/usr/src/redhat/SOURCES/mysql-5.1.44 --libdir=/usr/local/mysq/lib/mysql
# make && make install
# cp /usr/local/mysq/lib/mysql/libmemcache_engine.so.0.0.0 /usr/local/mysql/lib/mysql/plugin/libmemcache_engine.so
Install plugin storage:
mysql> INSTALL PLUGIN memcache SONAME 'libmemcache_engine.so';
mysql> show plugins;
+------------+--------+----------------+-----------------------+---------+
| Name | Status | Type | Library | License |
+------------+--------+----------------+-----------------------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMCACHE | ACTIVE | STORAGE ENGINE | libmemcache_engine.so | GPL |
+------------+--------+----------------+-----------------------+---------+
8 rows in set (0.00 sec)
| Name | Status | Type | Library | License |
+------------+--------+----------------+-----------------------+---------+
| binlog | ACTIVE | STORAGE ENGINE | NULL | GPL |
| partition | ACTIVE | STORAGE ENGINE | NULL | GPL |
| CSV | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMORY | ACTIVE | STORAGE ENGINE | NULL | GPL |
| InnoDB | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL | GPL |
| MEMCACHE | ACTIVE | STORAGE ENGINE | libmemcache_engine.so | GPL |
+------------+--------+----------------+-----------------------+---------+
8 rows in set (0.00 sec)
Test it:
mysql> CREATE TABLE `test`.`testMemSE` (
`id` int(11) NOT NULL DEFAULT '0',
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL
) ENGINE=MEMCACHE DEFAULT CHARSET=latin1
CONNECTION='192.168.56.101:11211,192.168.56.102:11211';
CONNECTION='192.168.56.101:11211,192.168.56.102:11211';
ERROR 1173 (42000): This table type requires a primary key
mysql> CREATE TABLE `test`.`testMemSE` (
`id` int(11) NOT NULL DEFAULT '0',
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MEMCACHE DEFAULT CHARSET=latin1
CONNECTION='192.168.56.101:11211,192.168.56.102:11211';
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MEMCACHE DEFAULT CHARSET=latin1
CONNECTION='192.168.56.101:11211,192.168.56.102:11211';
mysql> insert into test.testMemSE values (1,2,3);
ERROR 1598 (HY000): Binary logging not possible. Message: Statement-based format required for this statement, but not allowed by this combination of engines
ERROR 1598 (HY000): Binary logging not possible. Message: Statement-based format required for this statement, but not allowed by this combination of engines
## after stop bin-log
mysql> insert into test.testMemSE values (1,1,1);
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
mysql> select * from test.testMemSE where id=1;
...
regards,
Stanley Huang
From readme:
ReplyDeleteLimitations:
You must have a key to do a read, aka scan reads do not work.
Memcache is a key-value store, so you need to access based on primary key eg. WHERE id = ...
Thanks for your kindly reply~
ReplyDeleteregards,
Stanley Huang
hi, good evening. My web application is using struts2 and hibernate is used to connect to mysql database and using apache tomcat server. Now i want to implement memcached to improve performance of application. It need any java code to implement or any database settings only.
ReplyDeleteHi,
ReplyDeleteIn most cases,
memcached is used to be a layer of cache and to be shared between apps even cross tomcat servers.
Therefore, if this was what you want, you still need to implement some java code to access memcached to achieve the goal.