mirror of
https://github.com/MariaDB/server.git
synced 2025-01-28 17:54:16 +01:00
7202c21b34
A bugfix of HandlerSocket is not applied to mariadb yet
92 lines
3.7 KiB
Text
92 lines
3.7 KiB
Text
1. Building Handlersocket
|
|
|
|
Handlersocket mainly consists of libhsclient, handlersocket, and C++/Perl clients. libhsclient is a common library shared from both client and server(plugin). handlersocket is a MySQL daemon plugin.
|
|
To build Handlersocket, you need both MySQL source code and MySQL binary. It is not required to pre-build MySQL source code, but source itself is needed because Handlersocket depends on MySQL header files that only MySQL source distribution contains. MySQL binary is just a normal MySQL binary distribution. You can use official MySQL binaries provided by Oracle.
|
|
Since Handlersocket uses daemon plugin interface supported from MySQL 5.1,
|
|
MySQL 5.1 or higher version is required.
|
|
Please make sure that you use identical MySQL version between MySQL source
|
|
and MySQL binary. Otherwise you might encounter serious problems (i.e. server
|
|
crash, etc).
|
|
Here are steps to build Handlersocket.
|
|
|
|
* Get MySQL source code
|
|
|
|
* Get MySQL binary
|
|
|
|
* Build Handlersocket
|
|
$ ./autogen.sh
|
|
$ ./configure --with-mysql-source=/work/mysql-5.1.50 --with-mysql-bindir=/work/mysql-5.1.50-linux-x86_64-glibc23/bin --with-mysql-plugindir=/work/mysql-5.1.50-linux-x86_64-glibc23/lib/plugin
|
|
|
|
--with-mysql-source refers to the top of MySQL source directory (which
|
|
contains the VERSION file or the configure.in file), --with-mysql-bindir
|
|
refers to where MySQL binary executables (i.e. mysql_config) are located,
|
|
and --with-mysql-plugindir refers to a plugin directory where plugin
|
|
libraries (*.so) are installed.
|
|
|
|
$ make
|
|
$ sudo make install
|
|
|
|
Both libhsclient and the handlersocket plugin will be installed.
|
|
|
|
|
|
2. Using Handlersocket
|
|
|
|
Append configuration options for handlersocket to my.cnf.
|
|
|
|
[mysqld]
|
|
loose_handlersocket_port = 9998
|
|
# the port number to bind to (for read requests)
|
|
loose_handlersocket_port_wr = 9999
|
|
# the port number to bind to (for write requests)
|
|
loose_handlersocket_threads = 16
|
|
# the number of worker threads (for read requests)
|
|
loose_handlersocket_threads_wr = 1
|
|
# the number of worker threads (for write requests)
|
|
open_files_limit = 65535
|
|
# to allow handlersocket accept many concurrent
|
|
# connections, make open_files_limit as large as
|
|
# possible.
|
|
|
|
Log in to mysql as root, and execute the following query.
|
|
|
|
mysql> install plugin handlersocket soname 'handlersocket.so';
|
|
|
|
If handlersocket.so is successfully installed, it starts
|
|
accepting connections on port 9998 and 9999. Running
|
|
'show processlist' should show handlersocket worker threads.
|
|
|
|
-----------------------------------------------------------------
|
|
On the client side, you need to install libhsclient for c++ apps
|
|
and perl-Net-HandlerSocket for perl apps. They do not require
|
|
MySQL to compile.
|
|
|
|
$ ./autogen.sh
|
|
$ ./configure --disable-handlersocket-server
|
|
$ make
|
|
$ sudo make install
|
|
$ cd perl-Net-HandlerSocket
|
|
$ perl Makefile.PL
|
|
$ make
|
|
$ sudo make install
|
|
|
|
-----------------------------------------------------------------
|
|
Alternatively, you can use the rpm installation. If your OS
|
|
supports rpms, you can use the following commands to build and
|
|
install handlersocket rpm packages.
|
|
|
|
(Server side, installs HandlerSocket plugin)
|
|
$ ./autogen.sh
|
|
$ ./configure --with-mysql-source=/work/mysql-5.1.50 --with-mysql-bindir=/work/mysql-5.1.50-linux-x86_64-glibc23/bin --with-mysql-plugindir=/work/mysql-5.1.50-linux-x86_64-glibc23/lib/plugin
|
|
$ make rpm_cli
|
|
$ sudo rpm -U dist/RPMS/*/libhsclient*.rpm
|
|
$ make rpm_c
|
|
$ sudo rpm -U dist/RPMS/*/handlersocket*.rpm
|
|
|
|
(Client side, installs client libraries)
|
|
$ ./autogen.sh
|
|
$ ./configure --disable-handlersocket-server
|
|
$ make rpm_cli
|
|
$ sudo rpm -U dist/RPMS/*/libhsclient*.rpm
|
|
$ make rpm_perl
|
|
$ sudo rpm -U dist/RPMS/*/perl-Net-HandlerSocket*.rpm
|
|
|