1. DBProxy安装

1.1 安装依赖项

CentOS

yum install -y Percona-Server-devel-55.x86_64 Percona-Server-client-55.x86_64 Percona-Server-shared-55 jemalloc jemalloc-devel libevent libevent-devel openssl openssl-devel lua lua-devel bison flex libtool.x86_64
Ubuntu & Debian

apt-get install libmysqlclient-dev libgcrypt11-dev  pkg-config lua5.1-0 liblua5.1-0-dev libtool flex bison openssl  libssl-dev libjemalloc1 libjemalloc-dev  libevent-dev

下载glib-2.4.2.0(下载地址)

cd glib-2.42.0
autoreconf -ivf
./configure
make && make install

注意

  1. 操作系统版本:CentOS6.5 CentOS7 Ubuntu14.04 Debian8.2;
  2. 目前确认有效的glib2版本是2.42.0-1.el6,CentOS、Ubuntu和Debian默认源中的版本都不是2.42.0-1.el6,会导致make报错,因此在上面增加对glib的下载编译安装;

1.2安装DBProxy源码

源码从代码仓库下载到本地

git clone [email protected]:Meituan-Dianping/DBProxy.git

编译源码并安装

sh autogen.sh
sh bootstrap.sh
make && make install

2. 部署

2.1 配置文件的配置

成功安装DBProxy之后,需要在安装目录下创建配置文件所在的文件夹,例如取名conf,默认安装路径:

/usr/local/mysql-proxy

拷贝配置文件及其目录:

mkdir /usr/local/mysql-proxy/conf   # 创建配置文件所在文件夹
cp script/source.cnf.samples /usr/local/mysql-proxy/conf/source.cnf #拷贝示例配置文件

下面列出了配置文件的一个子集,以部署一主一从为例,主库:1.1.1.1:3306 从库:1.1.1.2:3306;DBProxy的admin和后端MySQL的用户名和密码均为guest,uqmOY9A=是guest加密之后的结果。

[mysql-proxy]
#管理接口的用户名
admin-username=guest
#管理接口的密码
admin-password=guest #用户名与其对应的加密过的MySQL密码,密码需要进行加密!
pwds=guest:uqmOY9A= #DBProxy监听的管理接口IP和端口
admin-address=0.0.0.0:3308
#DBProxy监听的工作接口IP和端口
proxy-address=0.0.0.0:3307 #DBProxy后端连接的MySQL主库的IP和端口,可设置多项,用逗号分隔 如果不配置则默认127.0.0.1:3306
proxy-backend-addresses=1.1.1.1:3306
#DBProxy后端连接的MySQL从库的IP和端口,@后面的数字代表权重,用来作负载均衡,若省略则默认为1,可设置多项,用逗号分隔
proxy-read-only-backend-addresses=1.1.1.2:3306 #工作线程数,对DBProxy的性能有很大影响,可根据情况适当设置,默认为1
event-threads=8
#实例名称,用于同一台机器上多个DBProxy实例间的区分
instance=source
##日志存放的路径
log-path=/opt/tmp/dbproxy_log/

特别注意

配置文件中配置的“pwds=guest:uqmOY9A=”项中的密码是加密后的密码,加密方法:

./dbproxy/script/encrypt [原始密码]

2.2启动DBProxy

在安装目录下的bin/mysql-proxy进行启动,启动时需传入配置文件的路径。例如:默认安装的路径为:/usr/local/mysql-proxy,配置文件路径为:/usr/local/mysql-proxy/conf/source.cnf,且配置文件中配置了必须配置的参数,启动命令如下:

/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/source.cnf

3 连接DBProxy

3.1 DBProxy的端口介绍

DBProxy 对外暴露两类端口:admin端口和proxy端口。admin端口是用来管理DBProxy的,管理员可以连接DBProxy的管理端口对DBProxy当前状态、参数进行查看和设置;proxy端口是用来与数据库进行交互的,应用端连接该端口,可与后台数据库进行交互。

3.2连接admin端口

查看配置文件中admin端口配置(账号密码端口号)

#管理接口的用户名
admin-username=guest
#管理接口的密码
admin-password=guest
#DBProxy监听的管理接口IP和端口
admin-address=0.0.0.0:3308

连接(与连接mysql的命令一样)

mysql -uguest -pguest -P3308 -h127.0.0.1

管理DBProxy

登录DBProxy的admin端口后,可以使用所提供的命令对DBProxy进行管理,查看DBProxy所提供的命令可使用:

select * from help;

3.3连接proxy端口

查看配置文件中proxy端口配置(账号密码端口号)

#用户名与其对应的加密过的MySQL密码,密码需要进行加密!
pwds=guest:uqmOY9A=
#DBProxy监听的工作接口IP和端口
proxy-address=0.0.0.0:3307

连接(与连接mysql的命令一样)

mysql -uguest -pguest -P3307 -h127.0.0.1

发送sql语句

连接proxy端口之后,便可以正常发送DBProxy兼容的sql语句了,例如:

use dbproxy_test;
select * from dbproxy_function_test;

常见错误

configure:error: Package requirements (libffi >= 3.0.0) were not met

解决办法:
yum install libffi-devel -y
No package 'glib-2.0' found

解决办法:
yum install libgnomeui-devel

参考链接

https://github.com/Meituan-Dianping/DBProxy/blob/master/doc/QUICK_START.md

05-28 23:20