how to setup and configure mysql-proxy on ubuntu on amazon ec2

user3011768 picture user3011768 · Feb 19, 2014 · Viewed 10.4k times · Source

i am trying to setup mysql-proxy on ubuntu on amazon ec2 i have done following:

sudo apt-get install mysql-proxy --yes
vi /etc/default/mysql-proxy

i put following content on "/etc/default/mysql-proxy"

ENABLED="true"
OPTIONS="--proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua
     --proxy-address=127.0.0.1:3306
     --proxy-backend-addresses=private_ip_of_another_ec2_db_server:3306,private_ip_of_another_ec2_db_server:3306"

also tied with "--proxy-address=private_ip_or_public_ip_of_proxy-server:3306 or 4040" and "--proxy-backend-addresses=public_ip_of_another_ec2_db_server:3306,public_ip_of_another_ec2_db_server:3306"

after that i tried to connect proxy server from another pc using mysql like:

mysql -u some_user -pxxxxx -h proxy_server_ip
or 
mysql -u some_user -pxxxxx -h proxy_server_ip -P 4040

but its not working its showing error:

ERROR 2003 (HY000): Can't connect to MySQL server on 'ip' (10061)

i want to tell you can connect the db server remotely where i allowed remote connection to any host

i also tried /etc/init.d/mysql-proxy start or /etc/init.d/mysql-proxy restart but no result

just to inform you that /etc/init.d/mysql-proxy stop is showing failed

can anyone please help me to setup and configure mysql-proxy on ubuntu

===

Edit

i found some help from other question of stackoverflow and also according to a suggestion in the comments, have done following procedure. and it seems its working now.

i installed mysql-client and mysql-server locally(on proxy server) then i tried to run mysql-proxy using following command:

mysql-proxy --proxy-backend-addresses=10.73.151.244:3306 --proxy-backend-addresses=10.73.198.7:3306 --proxy-address=:4040 --admin-username=root --admin-password=root --admin-lua-script=>/usr/lib/mysql-proxy/lua/admin.lua

then i tried to connect remotely to the proxy server and its working. but it seems i need to run this command under screen because when i close the terminal proxy stops working.

Can you please tell me that do i need to run this command under screen or is there any other way to make it alive all time?

Answer

shadowbq picture shadowbq · Oct 1, 2014

There is no need to install Mysql client or Mysql Server on your mysql-proxy.

Installing mysql-proxy does have "full daemon capabilities" compiled into it.

If your are running Ubuntu Server, you may wish to use an UPSTART service script.

This script can be copied into /etc/init/mysql-proxy.conf

# mysql-proxy.conf (Ubuntu 14.04.1) Upstart proxy configuration file for AWS RDS
# mysql-proxy - mysql-proxy job file

description "mysql-proxy upstart script"
author "shadowbq <[email protected]>"

# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [016]

# Automatically restart process if crashed
respawn

# Essentially lets upstart know the process will detach itself to the background
expect daemon

# Run before process
pre-start script
    [ -d /var/run/mysql-proxy ] || mkdir -p /var/run/mysql-proxy
    echo "starting mysql-proxy"
end script

# Start the process
exec /usr/bin/mysql-proxy --plugins=proxy --proxy-lua-script=/usr/share/mysql-proxy/rw-splitting.lua --log-level=debug --proxy-backend-addresses=private_ip_of_another_ec2_db_server:3306,private_ip_of_another_ec2_db_server:3306 --daemon --log-use-syslog --pid-file=/var/run/mysql-proxy/mysql-proxy.pid

In the above example I hard coded the AWS RDS server into script, instead of fiddling with defaults and config file