ITPub博客

首页 > 数据库 > MySQL > MySQL Proxy

MySQL Proxy

原创 MySQL 作者:壹頁書 时间:2014-02-23 03:34:20 0 删除 编辑
MySQL Proxy下载地址:
http://dev.mysql.com/downloads/mysql-proxy/=
作为现在的版本,MySQL并不建议在生产环境使用。

MySQL Proxy可以代理MySQL的请求,实现读写分离。
但是这个功能,我测试并未通过,也许是操作的问题.

下面是测试的过程。

Proxy
192.168.1.70:4040
Master
192.168.1.70:3306
Slave
192.168.1.80:3306

my.cnf关于代理的配置
[mysql-proxy]
proxy-backend-addresses=192.168.1.70:3306
proxy-read-only-backend-addresses=192.168.1.80:3306
proxy-lua-script=/root/mysql-proxy-0.8.4-linux-glibc2.3-x86-32bit/share/doc/mysql-proxy/rw-splitting.lua

启动MySQL Proxy

在Master和Slave上创建一个代理的帐号,用于测试。

使用测试帐号,登录代理服务器

发送测试SQL

查看Proxy的日志
  1. [read_query] 192.168.1.50:25347
  2. current backend = 0
  3. client default db = edmond
  4. client username = proxy
  5. query = select * from test
  6. sending to backend : 192.168.1.80:3306
  7. is_slave : true
  8. server default db: edmond
  9. server username : proxy
  10. in_trans : false
  11. in_calc_found : false
  12. COM_QUERY : true
  13. (read_query_result) staying on the same backend
  14. in_trans : true
  15. in_calc_found : false
  16. have_insert_id : nil
  17. [read_query] 192.168.1.50:25347
  18. current backend = 2
  19. client default db = edmond
  20. client username = proxy
  21. query = insert into test values(1,1)
  22. sending to backend : 192.168.1.80:3306
  23. is_slave : true
  24. server default db: edmond
  25. server username : proxy
  26. in_trans : true
  27. in_calc_found : false
  28. COM_QUERY : true
  29. (read_query_result) staying on the same backend
  30. in_trans : true
  31. in_calc_found : false
  32. have_insert_id : false
  33. [read_query] 192.168.1.50:25347
  34. current backend = 2
  35. client default db = edmond
  36. client username = proxy
  37. query = commit
  38. sending to backend : 192.168.1.80:3306
  39. is_slave : true
  40. server default db: edmond
  41. server username : proxy
  42. in_trans : true
  43. in_calc_found : false
  44. COM_QUERY : true
奇怪的是,Proxy居然把插入的SQL发送到了Slave
我猜测的原因是这样的:
如果事务第一个SQL是查询,则整个事务发送给Slave处理;如果事务第一个SQL是Delete、Update或者Insert,则整个事务都发送给Master处理。
MySQL Proxy貌似不太稳定,还时常掉线。

官方文档不建议生产系统使用,还是很有道理的。
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-1086293/,如需转载,请注明出处,否则将追究法律责任。

上一篇: MySQL新建Slave
下一篇: MySQL Next-Key Lock
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    621
  • 访问量
    6004174