mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 04:46:15 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			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
 | 
						|
 |