dbproxy使用笔记
1.安装错误:cannot find -lmysqlclient
将依赖拷贝到标准库里
cp /home/liuweiwei_dxm/mysql_5.6/lib/mysql/libmysqlclient.* /usr/lib
如果将so文件路径加入到/etc/ld.so.conf,不能解决问题
echo /home/liuweiwei_dxm/mysql_5.6/lib/mysql/ /etc/ld.so.conf
2.编译安装过程
sh autogen.sh sh bootstrap.sh make make install
配置过程
//创建配置文件夹
mkdir /usr/local/mysql-proxy/conf
//拷贝配置文件 cp script/source.cnf.samples /usr/local/mysql-proxy/conf/source.cnf
//内部参数修改查看网页教程
启动:
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/source.cnf
//查看是否启动成功
ps -ef | grep mysql-proxy
登录管理口:
mysql -uguest -pguest -P3309 -h127.0.0.1
登录工作口://注意工作口的用户名密码与主从服务器的密码相同
mysql -udxm -pdxm1111 -P3309 -h127.0.0.1
3.配置
sql黑名单:sql执行时间超过阈值,执行频率超过指定频率自动将sql加入到黑名单中。
#SQL过滤的时间阈值 query-filter-time-threshold=500 #SQL过滤的频率阈值 query-filter-frequent-threshold=10
4.使用
管理口:
查看用户和密码
select * from pwds;
查看backend信息:
select * from backends;
添加只读从服务器:
add slave 10.21.172.40:8008
ADD MASTER $backend
添加分表规则:
add sharding table_name: test.student.id.3
:删除分区表时,参数是 db.name.tbl 而非完整的分表信息。
工作口:
DBProxy只允许一主一从或一主多从,不能多主。
工作口的查询只查询从库数据,不查询主库数据。
insert请求发往主库,select请求发往从库,看起来dbproxy只是实现了主从读写分离,并将读请求分发到不同的从服务器上。
动态添加从库,流量管理。
对每条sql都有日志记录操作和时间,统计信息管理和监控管理。
可以看出同一个查询命令发往了两台不同的服务器(为了区分,两台从服务器写入了不同的数据)
5.bug
无法对语句中出现的错误进行判断。
6.限制
1 | 不能设置多个主库,或者在已有主库再增加主库 |
2 | 所有的后端db节点,都需要有相同的用户名及密码 |
3 | 配置mysql的IP权限时,必须保证所有用户在DBProxy所在的机器具有权限 |
DBProxy支持对以下功能模块的管理:基本操作管理、用户管理、连接管理、分表管理、backend管理、日志管理、流量控制、统计信息管理和监控管理。