简介
Part1:写在最前
随着网站的壮大,MySQL数据库架构一般会经历一个过程:
当我们数据量比较小的时候,一台单实例数据库足矣。等我们数据量增大的时候,我们会采用一主多从的数据库架构来降低我们的读写io。当我们某张业务表达到几百万上千万甚至上亿时,就应该去进行分表处理。本文演示OneProxy对数据库实现分表处理,对前端应用是透明的。
Part2:环境简介
HE1:192.168.1.248 Master1
HE3:192.168.1.250 Master2
HE4:192.168.1.251 Oneproxy
环境构建
Part1:安装Oneproxy
Oneproxy的安装不是本文讲述的重点,需要的可移步至
Part2:proxy.cnf
proxy.cnf文件是oneproxy的主要参数配置文件,新版的oneproxy对整个目录进行了重新的划分,配置文件都放在了conf目录里
Part3:part.txt
part.txt文件是分区策略配置文件,在本博文中,采取hash分区来进行简单演示
实战
Part1:启动OneProxy
Part2:监控页面
我这里是两台Master
Part3:创建相关表
登录oneproxy管理库创建表
Part4:插入数据
校验
Part1:校验oneproxy表内容
这里可以看到虚拟表helei中已经具有刚刚插入的内容;
Part2:校验Master1中的内容
Part3:校验Master2中的内容
注意
Warning:警告1
不支持预编译语句 PreparedStatement,不支持Bind、Execute调用接口。
Warning:警告2
不支持使用use命令来切换后端数据库,use命令可执行,但其含义是切换到不同的MySQL主备集群,OneProxy在支持分库分表功能后,就将一个主备集群视为一个数据库了,链接Oneproxy时如果指定了数据库名,则需替换成Server Group的名字。
Warning:警告3
禁止使用set命令,任何set命令都会直接返回成功,而不做任何处理。
Warning:警告4
默认禁止CALL、PREPARE、EXECUTE、DEALLOCATE命令,不支持存储过程和函数。
Warning:警告5
OneProxy支持master进行故障转移切换,但建议采用流行的高可用方案MHA实现。故障切换后,OneProxy可以自动识别哪台机器是master。另外,架构必须是一主带N从,不能是双主带N从。
——总结——
至此,OneProxy对MySQL的分库分表测试完成,对于前端应用而言,表名是透明的。无需变更代码。