除此之外还有:ProxySQL :
ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。 特色功能点:
Ø 查询缓存
Ø 查询路由
Ø 故障转移
Ø 在线配置立刻生效无需重启
Ø 应用层代理
Ø 跨平台
Ø 拓展支持
Ø 防火墙
功能
Ø 读写分离
Ø 数据库集群、分片
Ø 分库分表
Ø 主从切换
Ø SQL 审计
Ø 连接池 多路复用
Ø 负载均衡
Ø 查询重写
Ø 流量镜像
Ø 自动重连
Ø 自动下线
Ø 高可用
5.2. mycat
MyCat 是目前流行的基于 java 语言编写的数据库中间件,是一个实现了 MySQL 协议 的服务器,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分库分表。配合数据库的主从模式还可实现读写分离。MyCat 是基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得 MyCat 变得非常的强大。
MyCat 发展到目前的版本,已经不是一个单纯的 MySQL 代理了,它的后端可以支持MySQL 、SQL Server 、Oracle 、DB2 、PostgreSQL 等主流数据库,也支持 MongoDB 这种新型NoSQL 方式的存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在 MyCat 里,都是一个传统的数据库表,支持标准的 SQL 语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅降低开发难度,提升开发速度。
简单来说MyCat 就是实现数据库集群的,对海量数据的数据存储的一种解决方案,因为很多数据库不想Oracle 一样自带集群的配置,那么在进行海量数据存储的时候就要使用到MyCat 进行数据库的管理了。
1. 总结
三种架构对比:
|
主从+ 中间件(mycat ,proxysql ,cobar 等) |
(MHA ,Keepalivd ) |
原生集群(PXC ,MGR ) | |
|
使用业务 |
高并发、读写分离,分表分库 |
高并发、读写分离,自动故障转移 |
高并发、7X24 、自动添加节点、读写分离、自动故障转移、强一致性要求 |
|
支持多节点写入 |
不支持 |
不支持 |
支持 |
|
一致性 |
可能丢数据 |
可能丢数据 |
强一致性,不丢失数据 |
|
切换时间 |
手动 |
自动切换 |
0s ,自动切换 |
|
维护难度 |
繁琐 |
自动 |
自动 |
|
增减节点 |
手动 |
手动,keepalived 只能两节点 |
自动 |
|
性能影响 |
无 |
无 |
不适合大事务 |
|
缺点与限制 |
需要人工维护 |
存在误判性 |
大事务支持差 |
