如何在亚马逊ec2上的ubuntu上设置和配置mysql-proxy

时间:2014-02-19 14:09:48

标签: mysql linux ubuntu amazon-ec2 mysql-proxy

我正在尝试在亚马逊ec2上的ubuntu上设置mysql-proxy 我做了以下事情:

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

我将以下内容放在“/ 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"

还与“--proxy-address = private_ip_or_public_ip_of_proxy-server:3306或4040”相关联 和“--proxy-backend-addresses = public_ip_of_another_ec2_db_server:3306,public_ip_of_another_ec2_db_server:3306”

之后,我尝试使用mysql连接代理服务器,如:

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

但它不起作用 它的显示错误:

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

我想告诉您可以远程连接数据库服务器,我允许远程连接到任何主机

我也试过/etc/init.d/mysql-proxy start或/etc/init.d/mysql-proxy restart但没有结果

只是告诉你/etc/init.d/mysql-proxy停止显示失败

任何人都可以帮我在ubuntu上设置和配置mysql-proxy

===

修改

我从stackoverflow的其他问题中找到了一些帮助,并且根据评论中的建议,已经完成了以下程序。它似乎现在正在运作。

我在本地安装了mysql-client和mysql-server(在代理服务器上) 然后我尝试使用以下命令运行mysql-proxy:

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

然后我尝试远程连接到代理服务器及其工作。 但似乎我需要在屏幕下运行此命令,因为当我关闭终端代理时停止工作。

请告诉我,我是否需要在屏幕下运行此命令,还是有其他方法让它一直处于活动状态?

3 个答案:

答案 0 :(得分:2)

没有 需要在mysql-proxy上安装Mysql客户端或Mysql Server。

安装mysql-proxy确实编译了“完整守护程序功能”。

如果您正在运行Ubuntu Server,您可能希望使用UPSTART服务脚本。

此脚本可以复制到/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 <shadowbq@gmail.com>"

# 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

在上面的示例中,我将AWS RDS服务器硬编码为脚本,而不是摆弄默认值和配置文件

答案 1 :(得分:1)

安装升级版本0.8.5

注意:

apt repo没有0.8.5所以我们需要从mysql官方网站下载tar

先决条件: -

使用以下内容创建文件/etc/default/mysql-proxy ENABLED="true" OPTIONS="--defaults-file=/etc/mysql/mysql-proxy.cnf"

安装程序: -

  1. 下载mysql-proxy 0.8.x
  2. 在/ usr / local
  3. 中解压缩
  4. 使用/usr/local/mysql-proxy-0.8.5-linux-debian6.0-x86-64bit/bin更新PATH环境 vim /etc/environment (to update environment path) cd /usr/local/mysql-proxy-0.8.5-linux-debian6.0-x86-64bit/bin

  5. 运行命令sudo ./mysql-proxy --defaults-file = / etc / mysql / mysql-proxy.cnf

  6. 示例mysql-proxy.cnf文件

    [mysql-proxy]
    log-level=debug
    log-file=/var/log/mysql-proxy.log
    pid-file = /var/run/mysql-proxy.pid
    daemon = true
    --no-proxy = false
    admin-username=ADMIN
    admin-password=ADMIN
    proxy-backend-addresses=RDS-ENDPOINT:RDS-PORT
    admin-lua-script=/usr/lib/mysql-proxy/lua/admin.lua
    proxy-address=0.0.0.0:4040
    admin-address=localhost:4041
    
    1. 更改RDS或mysql的主机IP和端口

    2. 通过代理

      连接到Mysql服务器

      mysql -h {proxy-host-ip} -P 4040 -u {mysql_username} -p

答案 2 :(得分:1)

允许安全组上的端口3306。

更新安全组后,请进入SSH并更新防火墙。

sudo ufw allow 3306/tcp

现在,您的Ubuntu服务器已准备就绪,可以在端口3306进行监听了。

下一步,您需要更新MySql配置。

步骤1 。打开配置文件。

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

第2步。将bind-address = 127.0.0.1更新为

bind-address            = 0.0.0.0

第3步。保存( ctrl + o ,然后 ctrl + x ),然后重新启动MySql Server。

sudo service mysql restart

现在,允许MySql Server在任何地方侦听fron,但是您只有一个用户root,不允许远程访问。让我们在mysql中创建一个具有远程访问权限的新用户。

步骤1 。在MySql Server上登录。

sudo mysql -u root

第2步。在mysql服务器上创建用户。

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'xxxxxxxx';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'username'@'%';
mysql> FLUSH PRIVILEGES;

现在您可以从任何地方或通过Parameters

连接mysql服务器

提供了完整的分步文档: DevStudioOnline PhpMyAdmin