OneProxy for MySQL可以复用不同应用到后端数据库的连接,有效降低数据库的并发连接数;可以即时踢除不可用的节点,将应用请求转发到其他可用节点,保证业务服务的稳定性。 可透明地将查询语句分发到多个MySQL备库执行,用读写分离方案支持上千万的并发访问;也可以根据SQL语句中的值进行分库分表路由, 均匀分散到多个MySQL主库上,以支持每秒上百万个小事务的并发执行;可实时透明地分析流量数据,统计SQL和事务的运行时间,分析事务的结构,得到各种不同维度的实时性能报告; 还可以进行流理QoS控制,作为数据库防火墙抵挡SQL注入式攻击;根据分片的SQL并行执行,解决了大数据量下的汇总统计性能问题;跨多分片的结果集合并, 极大地简化了应用程序的开发工作量。
第一步 下载与安装
平民软件官网地址: http://www.onexsoft.com
选择下载数据库中间件,如下图:
下载后解压到软件统一的目录后, 修改 demo.sh oneproxy.service 中的路径。
第二步 配置读写分离
OneProxy的读写分离配置主要是conf文件夹中的 proxy.conf
[oneproxy]
# 持久化操作,开启后将双进程互备
keepalive = 1
# 自动调整节点类型
proxy-auto-readonly = 1
# 线程数
event-threads = 32
# 对外显示的mysql版本
mysql-version = 5.6.38
# 客户端连接的地址
proxy-address = 0.0.0.0:3308
# web监控 信息展示地址
proxy-httpserver = 0.0.0.0:8080
# 读写分离的模式
# read-slave master不参与读
# read-balance master 参与读
proxy-group-policy = xiaobai:read-balance
# 设置主数据库地址
proxy-master-addresses.1 = 10.0.0.173:3306@xiaobai
# 设置从数据库地址
proxy-slave-addresses.2 = 10.0.0.198:3306@xiaobai
# 设置数据库用户地址
proxy-user-list.1 = root/64D8D7645E6A121DA732C9F7A12A4CBE261467BA@xiaobai
proxy-user-list.2 = root_for_one/64D8D7645E6A121DA732C9F7A12A4CBE261467BA@one
proxy-user-list.3 = root_for_proxy/64D8D7645E6A121DA732C9F7A12A4CBE261467BA@proxy
用户地址可以设置多个, 每个用户针对不同的库,这样可以实现多个库的读写分离。
需要注意的是: proxy.conf中配置的数据库密码是加密后的, 加密当前密码的方式为:
在oneproxy的bin目录中,有个mysqlpwd命令, 通过 ./mysqlpwd xxxx 可以得到加密后的密码
全部配置完成后,可以通过 ./oneproxy.service start 启动读写分离, 可以查看进程和端口判断是否启动成功
第三步 测试读写分离
将两个库的表内容设置为不一样的,在客户端上 访问 搭建oneproxy服务的3308端口,多次执行select 查看内容是否有变化
至此,读写分离搭建成功,据官方文档说明, oneproxy还有分表分库的功能,目前我这边还用不到,等有时间了,可以好好研究研究