mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 19:06:14 +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
 | |
| 
 | 
