dbproxy下载安装

朱鸿畅
2023-12-01
介绍
奇虎360公司开源的Atlas是优秀的数据库中间件,美团点评DBA团队针对公司内部需求,在其上做了很多改进工作,形成了新的高可靠、高可用企业级数据库中间件DBProxy,已在公司内部生产环境广泛使用,较为成熟、稳定。

DBProxy的优点
  1.  支持多语言MySQL客户端
  2. 读写分离
  3. 负载均衡
  4. Slave故障感知与摘除(Master需要MHA等其他联动)
  5. 后端连接池
  6. 自定义SQL拦截与过滤
  7. 流量分组与控制
  8. 丰富的监控状态
  9. 支持分表(分库版本正在内测中)
  10. Client IP限制
学习地址: https://github.com/Meituan-Dianping/DBProxy/blob/master/doc/QUICK_START.md

1 安装依赖项
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

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

2. 下载glib-2.4.2.0(下载地址)
http://pkgs.fedoraproject.org/repo/pkgs/mingw-glib2/glib-2.42.0.tar.xz/71af99768063ac24033ac738e2832740/

cd glib-2.42.0
autoreconf -ivf
./configure 

报错:No package 'libffi' found
configure: error: Package requirements (libffi >= 3.0.0) were not met:
No package 'libffi' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables LIBFFI_CFLAGS
and LIBFFI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

安装libffi包
[root@mycat_eye glib-2.42.0]# yum install libffi-devel 
./configure 
make && make install

3. 安装DBProxy源码
源码从代码仓库下载到本地
git clone git@github.com:Meituan-Dianping/DBProxy.git

编译源码并安装(添加新文件和修改版本的时候需要运行autogen.sh,注意docker centos:6.6 image下运行autogen.sh会失败)
sh autogen.sh
sh bootstrap.sh
make && make install

# yum -y install glib2-devel

2. 部署

2.1 部署结构介绍

DBProxy 可以配置一主多从结构,即必须配置一个主库,0个或多个从库,主库可进行读写操作,从库只可进行读操作。上游组件/应用的流量可以通过DBProxy中设置的规则,将流量路由到合适的数据库中。DBProxy部署示意图如下所示:

2.2 配置文件的配置

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

拷贝配置文件及其目录:
mkdir /usr/local/mysql-proxy/conf  # 创建配置文件所在文件夹
cp script/source.cnf.samples /usr/local/mysql-proxy/conf/db1.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=db1
##日志存放的路径
log-path=/opt/tmp/dbproxy_log/

特别注意

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

./dbproxy/script/encrypt [原始密码]
2.3 启动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
脚本启动:
$install_path/mysql-proxyd $instance_name(实例名) start/restart/stop

/usr/local/mysql-proxy/bin/mysql-proxyd db1 start/restart/stop
2.4 查看进程
[root@mycat_eye mysql-proxy]# ps -ef|grep mysql-proxy
root    116910      1  0 17:51 ?        00:00:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/source.cnf
root    116911 116910  0 17:51 ?        00:00:00 /usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/source.cnf
root    116966  37381  0 17:52 pts/1    00:00:00 grep --color=auto mysql-proxy

3 连接DBProxy

3.1 DBProxy的端口介绍

DBProxy 对外暴露两类端口:admin端口和proxy端口。

admin端口是用来管理DBProxy的,管理员可以连接DBProxy的管理端口对DBProxy当前状态、参数进行查看和设置;

proxy端口是用来与数据库进行交互的,应用端连接该端口,可与后台数据库进行交互。

3.2 连接admin端口

admin接口(3309),proxy接口(3308)管理


  • 查看配置文件中admin端口配置(账号密码端口号)
#管理接口的用户名
admin-username=guest
#管理接口的密码
admin-password=guest
#DBProxy监听的管理接口IP和端口
admin-address=0.0.0.0:3308
  • 连接(与连接mysql的命令一样)
[root@mycat_eye mysql-proxy]# mysql -uguest -pguest -P3309 -h127.0.0.1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.35-33.0-log

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

guest@127.0.0.1 :(none)05:53:15>
mysql -uguest -pguest -P3309 -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的命令一样)
[root@mycat_eye conf]# mysql -uguest -pguest -P3308 -h127.0.0.1
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.35-33.0-log

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
guest@127.0.0.1 :(none)05:58:07>

发送sql语句

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

use dbproxy_test;
select * from dbproxy_function_test;

注意:编译安装过程中会遇到多种错误,如果遇到,请看下一篇

 类似资料: