OneProxy for MySQL可以复用不同应用到后端数据库的连接,有效降低数据库的并发连接数;可以即时踢除不可用的节点,将应用请求转发到其他可用节点,保证业务服务的稳定性。 可透明地将查询语句分发到多个MySQL备库执行,用读写分离方案支持上千万的并发访问;也可以根据SQL语句中的值进行分库分表路由, 均匀分散到多个MySQL主库上,以支持每秒上百万个小事务的并发执行;可实时透明地分析流量数据,统计SQL和事务的运行时间,分析事务的结构,得到各种不同维度的实时性能报告; 还可以进行流理QoS控制,作为数据库防火墙抵挡SQL注入式攻击;根据分片的SQL并行执行,解决了大数据量下的汇总统计性能问题;跨多分片的结果集合并, 极大地简化了应用程序的开发工作量。
官网:http://www.onexsoft.com/zh/ (绝对良心)
主要功能
1. 垂直分库 2. 水平分表 3. Proxy集群 4. 读高可用 5. 读写分离(master不参与读) 6. 读写分离(master参与读) 7. 写高可用 8. 读写随机
环境简介
192.168.242.5 master1
192.168.242.10 slave1
192.168.242.15 slave2
192.168.242.20 oneproxy
名字可以自己定义,由于是在虚拟机测试所以更改名字方便记忆。
共需要4台主机,其中3台用做MYSQL的主从复制(一主两从),另一台用作OneProxy,如主机数量不够OneProxy和MYSQL可以部署到同一台主机
利用mysqlreplicate搭建主从
更改hosts文件进行重定向,方便查找
关闭防火墙
主服务器配置
从服务器配置
主服务器上创建授权用户
第一条用于创建数据复制的账号,同步时用
第二条授予root权限可以进行远程连接
第三条重新加载权限表
从服务器上创建用户
只需要授予root权限即可
安装mysql-utilities
配置主从复制
--master=root:123456(此处为登陆mysql的账户和密码)@主的IP地址
--slave=root:123456@从的IP地址
--rpl-user=mysync:123456 -b 此处账号密码输入之前配置的用于复制的账号密码
查看状态
slave_IO_Running:Yes
slave_SQL_Running:Yes
两个线程同为yes,表示成功
同样在两个从上都一样,就不做演示。
配置OneProxy
下载最新的OneProxy进行解压配置(也可以下载其他版本,配置文件大概相同向下兼容,但有些参数会不同,具体参考官网进行配置)
更改demo.sh中OneProxy的配置路径(也就是其中的/root/oneproxy,根据目录不同自行修改)
更改conf下proxy.conf文件
proxy-smart-master = 1 智能则主,此功能需要将OneProxy升级到6.2.0版本
proxy-auto-readonly = 1参数自动调整节点类型
master不参与读流量,适用于有较多读节点的场合
proxy-group-policy= default:read_slave
master节点参与读流量,例如一主一备的场景
proxy-group-policy= default:read_balance
proxy-user-list =root/密钥/数据库 此处填写登陆的用户名和密码(密码需要加密)最后填写数据库
如何加密? 在oneproxy的bin下执行mysqlpwd即可
proxy-master proxy-slave 字面意思填写主服务器从服务器IP端口 @后的default是默认的一个集群节点,可以进行自定义
启动OneProxy
demo缺少权限所以给予执行权限
最后通过浏览器进行测试
http://OneProxy_IP:8080 端口可以在conf/proxy.conf中修改,端口不冲突默认即可
登陆时需要账号and密码 默认 user=admin password=OneProxy
搭建完成。
期间参照
http://blog.51cto.com/suifu/1884673
http://blog.51cto.com/suifu/1878443
万分感谢
原文地址:http://blog.51cto.com/jianyu97/2052301