产品在demo阶段,我们往往把各种服务都装在一台主机上面,如web服务,数据库服务等。但在生产环境上运行应用时,我们还是得把web服务和数据库服务分开。我们在使用Ucloud或阿里云提供的云数据库时,往往是不能直接在外网通过数据库管理工具(如:MysqlWorkBench)来管理数据库的,因为云数据库服务只提供给我们一个内网的ip。
鉴于MySQL实例不能通过外网IP直接访问,可使用MySQL-Proxy将MySQL实例跳转至云主机(UHost)的端口进行访问。今天我们先不谈MySQL-Proxy的读写分离的问题。
在云主机(UHost)安装MySQL-Proxy:
也可以从官网下载解压后直接运行。
地址:http://dev.mysql.com/downloads/mysql-proxy/
安装结束后,可通过如下命令查看相关信息:
查看MySQL-Proxy帮助选项:
MySQL-Proxy默认端口为4040,通过访问4040端口就可以访问3306端口。
使用命令行开启MySQL-Proxy,步骤如下:
1 2 3
| touch /etc/mysql-proxy.cnf
vim /etc/mysql-proxy.cnf
|
输入如下内容:
1 2 3 4 5 6 7 8 9 10
| [mysql-proxy] admin-username=root # admin用户名(可以不填) admin-password=password # admin密码(可以不填) admin-lua-script=/usr/lib64/mysql-proxy/lua/admin.lua #lua位置,参见上面的版本信息(可以不填) daemon=true # mysql-proxy以守护进程方式运行(这项填了以后会报错,目前没找到原因,可以在运行时通过nohup在后台运行) keepalive=true # 保持连接启动进程会有2个, 一号进程用来监视二号进程 proxy-address=:4044 # 监听端口,默认为4040 proxy-backend-addresses=10.6.X.XX # 目标地址,udb内网地址,默认端口3306 log-file=/var/log/mysql-proxy.log log-level=debug
|
配置文件保存后需要改变权限:
1
| chmod 0660 /etc/mysql-proxy.cnf
|
启动:
1
| mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
|
使用kill命令可以将程序终止。
在外网环境测试:
1
| mysql -h$uhost_ip -P4040 -u$User -p$Password
|
$uhost_ip为UHost的外网IP。
注意:
需要在UCloud管理控制台中,打开云主机(UHost)的4040端口。