MySQL水平分区代理Spock Proxy(一)

默北 MySQLMySQL水平分区代理Spock Proxy(一)已关闭评论10,0034字数 1185阅读3分57秒阅读模式

MySQL水平分区代理Spock Proxy

水平分区(sharding)将同一数据表中的数据通过特定的算法进行分离,分别保存在不同的数据表中,从而部署到不同的数据库服务器上。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

水平分区后,数据拆分到不同的服务器上,面临的最重要的问题是应用程序如何正确的找到它们。可以通过使用Spock Proxy来帮助应用程序实现水平分区的访问调度。意味着不需要在应用程序中维护那些分区对应关系。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

Spock Proxy项目:http://spockproxy.sourceforge.net/文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

 文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

一.Spock Proxy介绍文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

1.Spock Proxy支持基于水平范围分区(range-based horizontal partioning)。将单个数据库分片到多个,以提高性能和可扩展性。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

2.从客户端截取SQL语句,将查询发送到正确分区数据库服务器上,然后聚集从每个数据库查询到的结果返回给客户端,作为一个普通的MySQL结果集。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

3.对应用程序透明,避免修改应用程序。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

4.Spock基于Rails和ActiveRecord。Spock Proxy基于MySQL Proxy开发,是MySQL Proxy的一个分支。对MySQLProxy做的改进有:文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

a.不使用lua脚本。提升性能,多个数据库返回的结果合并需要与lua脚本交互,开销大。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

b.客户端登陆验证。MySQL Proxy支持客户端与各个服务器直接进行登录验证。而Spock Proxy统一管理,分离客户端与服务器的连接。自动验证客户端使用的用户名/密码(启动spockproxy指定的).文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

c.动态连接池。Spock Proxy分离客户端与服务器的连接,允许最小和最大连接数的管理。spockproxy启动后建立了一个连接池的最小连接数。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

d.多服务器发送/接收。请求发送到多台服务器上。为了确保速度,所有的请求广播一次,异步执行读操作。当从每个服务器获取结果完成后,如果计数器大于1,将执行合并操作。如果只有一个结果集,数据将被自动转发给客户端。如果从任何一个数据库返回任何错误,错误将会被发送到客户端。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

5.Spock Proxy架构图文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

mysql文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

二.Spock Proxy局限性文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

并非所有支持MySQL的查询完全支持Spock Proxy。当spockproxy解析查询语句失败,调用端将得到一个错误。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

已知的限制有:文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

1.SQL管理语句,如create。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

2.支持有限的存储过程和事务。文章源自运维生存时间-https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/

3.跨数据库的join操作无法执行。

4.不支持嵌套查询。

5.对于SELECT ,支持最多2表联接。但不支持GROUP BY。

6.对于INSERT,列清单总是预期。

7.如果查询涉及多个分区中的数据,对于查询使用mysql函数,只支持MAX, MIN, SUM, AVERAGE 函数。

8.不正确的INSERT_ID和分裂一个自动递增的主键与外键的表,ID冲突是可能的。

9.LOAD DATA INFILE没有测试。

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 20/05/2012 23:50:59
  • 转载请务必保留本文链接:https://www.ttlsa.com/mysql/mysql-proxy-spock-proxy-1/
  • mysql
  • MySQL Proxy
  • mysql水平分区
  • sharding
  • Spock Proxy
  • 水平分区