MySQL proxy读写分离如何运行?

数据库 MySQL
以下的文章主要介绍的是MySQL proxy读写分离的实际操作步骤,以及相关的实际应用代码的示例,以下就是文章的具体内容描述。

我们大家都知道MySQL Proxy是处于客户端的实际应用程序与MySQL数据库服务器之间,主要是通过截断、改变并转发客户端与后端数据库之间的通信实现其功能的,这与WinGate之类的网络代理服务器的基本思想是一样的。

代理服务器是和TCP/IP协议打交道,而要理解MySQL Proxy的工作机制,同样要清楚MySQL客户端和服务器之间的通信协议,MySQL Protocol包括认证和查询两个基本过程:

 

认证过程包括:

客户端向服务器发起连接请求

服务器向客户端发送握手信息

 

客户端向服务器发送认证请求

 

服务器向客户端发送认证结果

 

如果认证通过,则进入查询过程:

 

客户端向服务器发起查询请求

服务器向客户端返回查询结果

 

当然,这只是一个粗略的描述,每个过程中发送的包都是有固定格式的,想详细了解MySQL Protocol的同学,可以去这里看看。MySQL Proxy要做的,就是介入协议的各个过程。首先MySQL Proxy以服务器的身份接受客户端请求,根据配置对这些请求进行分析处理,然后以客户端的身份转发给相应的后端数据库服务器,再接受服务器的信息,返回给客户端。

所以MySQL Proxy需要同时实现客户端和服务器的协议。由于要对客户端发送过来的SQL语句进行分析,还需要包含一个SQL解析器。可以说MySQL Proxy相当于一个轻量级的MySQL了,实际上,MySQL Proxy的admin server是可以接受SQL来查询状态信息的。

 

MySQL Proxy通过lua脚本来控制连接转发的机制。主要的函数都是配合MySQL Protocol各个过程的,这一点从函数名上就能看出来:

  1. connect_server()   
  2. read_handshake()   
  3. read_auth()   
  4. read_auth_result()   
  5. read_query()   
  6. read_query_result()  

 

至于为什么采用lua脚本语言,我想这是因为MySQL Proxy中采用了wormhole存储引擎的关系吧,这个虫洞存储引擎很有意思,数据的存储格式就是一段lua脚本,真是创意无限啊。

 

国人写的MySQL 负载均衡

以下是amoeba介绍

Amoeba 座落与Client、Database Server(s)之间。 具有负载均衡、高可用性、sql过滤、可承受高并发、读写分离、Query Route(解析sql query语句,并且根据条件与预先设定的规则,请求到指定的目标数据库。可并发请求多台数据库合并结果)、对客户端透明。

主要降低 数据切分带来的复杂多数据库结构、数据切分规则 给应用带来的影响。

能够轻易实现读写分离

Failover

 

负载均衡。

 

能够帮助解决数据切分问题

 

目前amoeba 实现了 MySQL 数据库的相关技术。

适用:

MySQL 4.1或者以上版本(MySQL 协议版本:10)

 

暂时不支持事务、DDL语句目前只会分配给默认的数据库执行

 

运行环境:

至少需要运行 MySQL 4.1以上 服务一个;

Java 1.5或 以上版本

 

 

以上的相关内容就是对MySQL proxy读写分离的介绍,望你能有所收获。

【编辑推荐】

  1. 解决MySQL中文乱码的方法归纳
  2. MySQL 安装备份在Linux系统中的安装
  3. MySQL安装与qmail实际操作概述
  4. MySQL filter的实际配置
  5. MySQL数据库+Postfix投递经过验证的邮件正确设置
责任编辑:佚名 来源: 互联网
相关推荐

2011-08-30 12:49:59

Mysql ProxyLua分离

2011-08-30 09:59:47

Mysql ProxyLUA

2011-08-30 13:08:55

Mysql ProxyLua分离

2011-08-30 10:51:40

MySQL ProxyLua分离

2017-09-04 09:53:58

MySQLAtlasNavicat

2021-06-25 10:05:58

SpringBootMySQL数据库

2009-05-04 09:13:52

PHPMySQL读写分离

2017-05-25 10:22:13

NoSQL数据库主主备份

2022-04-25 08:03:57

MySQL中间件MyCat

2021-03-08 08:16:42

MySQL分离架构

2021-09-08 10:23:08

读写分离Java数据库

2020-12-08 06:17:11

MycatMySQL分离

2011-07-22 13:24:55

MySQL Proxy读写离别

2020-11-24 09:56:12

数据源读写分离

2019-05-13 15:00:14

MySQLMyCat数据库

2019-09-30 09:19:54

Redis分离云数据库

2020-03-24 14:16:18

ProxySQLMySQL数据库

2018-04-08 15:20:15

数据库MySQL主从复制

2018-10-16 16:45:05

数据库读写分离

2020-04-23 15:08:41

SpringBootMyCatJava
点赞
收藏

51CTO技术栈公众号