ports/136028: databases/mysql-proxy - allow multiple backend addresses with mysql-proxy startup script

Alexey V.Degtyarev alexey at renatasystems.org
Thu Jun 25 13:30:03 UTC 2009


>Number:         136028
>Category:       ports
>Synopsis:       databases/mysql-proxy - allow multiple backend addresses with mysql-proxy startup script
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 25 13:30:01 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Alexey V. Degtyarev
>Release:        FreeBSD 7.1-RELEASE amd64
>Organization:
>Environment:
System: FreeBSD renatasystems.org 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan 1 08:58:24 UTC 2009 root at driscoll.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64


	
>Description:
Current mysql-proxy.sh startup script does not allow use of multiple MySQL
backends due to lack of $mysql_proxy_backend_addresses variable processing.
According to documentation[1] of --proxy-backend-addresses option, it is
possible to specify multiple backend servers by supplying multiple options. But
mysql-proxy.sh just assigns the value of $mysql_proxy_backend_addresses
variable to this option.

The patch allows to use multiple MySQL backend servers by specifying multiple
--proxy-backend-addresses options for each host:port pair in
$mysql_proxy_backend_addresses variable to mysql-proxy command arguments line.

Example of usage:

rc.conf:

mysql_proxy_enable="yes"
mysql_proxy_backend_addresses="10.10.155.201:3306 10.10.155.202:3306"

root at 127.0.0.1[(none)]$ select * from proxy_config;
+----------------------------+--------------------+
| option                     | value              |
+----------------------------+--------------------+
| admin.address              | 127.0.0.1:3306     |
| proxy.address              | 10.10.155.203:3306 |
| proxy.lua_script           | NULL               |
| proxy.backend_addresses[0] | 10.10.155.201:3306 |  <====
| proxy.backend_addresses[1] | 10.10.155.202:3306 |  <====
| proxy.fix_bug_25371        | 0                  |
| proxy.profiling            | 1                  |
+----------------------------+--------------------+
7 rows in set (0.00 sec)


[1] http://dev.mysql.com/doc/refman/5.0/en/mysql-proxy-cmdline.html
>How-To-Repeat:
Just try to use more than one MySQL backend addresses.
>Fix:

	

--- mysql-proxy.patch begins here ---
diff -u -r mysql-proxy.orig/files/mysql-proxy.sh.in mysql-proxy/files/mysql-proxy.sh.in
--- mysql-proxy.orig/files/mysql-proxy.sh.in	2008-03-27 05:05:18.000000000 +0300
+++ mysql-proxy/files/mysql-proxy.sh.in	2009-06-25 16:57:32.000000000 +0400
@@ -40,9 +40,14 @@
 : ${mysql_proxy_backend_addresses="127.0.0.1:3306"}
 : ${mysql_proxy_pid_file="/var/run/mysql-proxy.pid"}
 
+proxy_backend_addresses=""
+for addr in ${mysql_proxy_backend_addresses}; do
+	proxy_backend_addresses="${proxy_backend_addresses} --proxy-backend-addresses=${addr}"
+done
+
 pidfile="${mysql_proxy_pid_file}"
 command=%%PREFIX%%/sbin/mysql-proxy
-command_args="--admin-address=${mysql_proxy_admin_address} --proxy-address=${mysql_proxy_address} --proxy-backend-addresses=${mysql_proxy_backend_addresses} ${mysql_proxy_args} --daemon --pid-file=${mysql_proxy_pid_file}"
+command_args="--admin-address=${mysql_proxy_admin_address} --proxy-address=${mysql_proxy_address} ${proxy_backend_addresses} ${mysql_proxy_args} --daemon --pid-file=${mysql_proxy_pid_file}"
 procname=%%PREFIX%%/sbin/mysql-proxy
 
 run_rc_command "$1"
--- mysql-proxy.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list