OneProxy :: 中间件从入门到精通系列之一,先从接入单个MySQL实例开始

OneProxy是一款高效的数据库访问中间件(软件下载),具备连接池故障切换读写分离分库分表SQL防火墙SQL监控等多项实用功能;使用C语言开发,超过200个并发客户端时,可以做到基本无损转发;可以省去客户端应用的开发和配置工作量,让你迅速构建强大的数据库系统来支持业务的高速发展。

具备了这么多功能的OneProxy,配置选项确实比较多(最新的5.8.5版本总共有85个可配置项),对于初次接触的人来讲,非常难以理解所有的选项。当然也不要过于担心其复杂性,我会带你从简单到复杂地走一遍,先来看一个最简单的配置文件例子:

[oneproxy]
keepalive     = 1
log-file      = log/oneproxy.log
pid-file      = log/oneproxy.pid
lck-file      = log/oneproxy.lck

proxy-address            = :3307

# Format host:port@mysql_group_name
proxy-master-addresses.1 = 172.30.12.5:3306@server1

# Format username/password@default_database
proxy-user-list.1        = test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test

在这个配置中,OneProxy只连接到一个MySQL实例,可以用来做什么呢? 可以用做数据库的连接池,特别是云端的RDS,小规格的RDS能支持的连接数太小。在这个例子中只需要关注“proxy-address”、“proxy-master-addresses”和“proxy-user-list”三个参数,各个参数的意思也不详细解释了,注释里面已经说明了。需要注意的是所有的MySQL实例在OneProxy里都有一个集群名字(MySQL Group Name,见“proxy-master-addresses”选项“@”符后面的部份),在OneProxy会用集群名字来定位SQL,而不是直接批定IP地址。接下来就可以起动OneProxy了:

export PROXY_HOME=/data/oneproxy
${PROXY_HOME}/bin/oneproxy --defaults-file=${PROXY_HOME}/conf/proxy.conf

选项“proxy-user-list”指定的是允许通过OneProxy登录的用户列表,以及对应的密码和登录后的默认数据库名。其中密码必须要加密,以确保安全,可以通过“mysqlpwd”工具来加密密码,如下所示:

# export PROXY_HOME=/data/oneproxy
# ${PROXY_HOME}/bin/mysqlpwd test
1378F6CC3A8E8A43CA388193FBED5405982FBBD3

接下来将OneProxy的“3307”端口(详见“proxy-address”选项)当成MySQL的端口去连接就行了,如下所示:

# mysql -u test -ptest -h127.0.0.1 -P3307 -e "show tables"
Warning: Using a password on the command line interface can be insecure.
+----------------------------+
| Tables_in_test             |
+----------------------------+
| dumptest                   |
| edit                       |
| indextest                  |
| indextest2                 |
| indextest3                 |
......

配置好单个库后,你可以在OneProxy上启用线程池功能(严格限制到后端的最大连接数),或者启用SQL监控功能来实时分析应用的性能(在线演示)。更复杂的配置介绍请耐心等侯下回讲解,企业生产环境使用时请阅读一下非企业版本的限制。