【问题标题】:how to setup and configure mysql-proxy on ubuntu on amazon ec2如何在亚马逊 ec2 上的 ubuntu 上设置和配置 mysql-proxy
【发布时间】:2014-03-19 22:16:52
【问题描述】:

我正在尝试在亚马逊 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 stop 显示失败

谁能帮我在ubuntu上设置和配置mysql-proxy

===

编辑

我从 stackoverflow 的其他问题中找到了一些帮助,并且还根据 cmets 中的建议,完成了以下程序。现在看来它可以工作了。

我在本地安装了 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

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

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

【问题讨论】:

  • Win32 错误代码 10061:无法建立连接,因为目标机器主动拒绝。 ...与--proxy-address=127.0.0.1:3306 完全一致。代理将拒绝来自配置中包含该选项的外部机器的连接。不要远程测试。本地测试然后远程,一旦本地工作。
  • 远程测试您建议的配置?通知你我没有在本地安装 mysql-client 或 mysql-server(我安装了 mysql-proxy)
  • 如果您不从本地测试开始,您会变得更加困难。安装 mysql-client... 你迟早会需要它。另外,启动代理时根本不要指定--proxy-address,代理应该默认侦听所有可能的IP地址,TCP端口4040。请注意测试时收到的错误末尾的代码(在您发布的示例中为 10061)。 C:\>perror 10061(替换你看到的任何不同的代码)将来会给你这个错误的翻译。
  • 迈克尔,请检查我的问题的编辑部分,并请给我建议。

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


【解决方案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. 使用 /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

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

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

【讨论】:

  • 只有升级版的 mysql proxy 0.8.5 才能与最新的 mysql 配合使用。所以升级后它运行良好。按照上述步骤操作。
【解决方案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 服务器硬编码到脚本中,而不是摆弄默认值和配置文件

【讨论】:

  • 日志被重定向到 /var/log/syslog 以帮助排除故障。请务必更改生产中的日志级别。
猜你喜欢
  • 1970-01-01
  • 2015-11-23
  • 2015-10-24
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 2015-03-04
  • 1970-01-01
  • 2013-01-03
相关资源
最近更新 更多