首頁 資料庫 mysql教程 MySQL proxy读写分离如何运行?

MySQL proxy读写分离如何运行?

Jun 07, 2016 pm 04:11 PM
mysql proxy 分離 如何 我們 讀寫 運行

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

我们大家都知道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各个过程的,这一点从函数名上就能看出来:

<ol class="dp-xml">
<li class="alt"><span><span>connect_server()   </span></span></li>
<li><span>read_handshake()   </span></li>
<li class="alt"><span>read_auth()   </span></li>
<li><span>read_auth_result()   </span></li>
<li class="alt"><span>read_query()   </span></li>
<li><span>read_query_result()  </span></li>
</ol>
登入後複製

至于为什么采用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读写分离的介绍,望你能有所收获。


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP 的大數據結構處理技巧 PHP 的大數據結構處理技巧 May 08, 2024 am 10:24 AM

PHP 的大數據結構處理技巧

如何優化 PHP 中的 MySQL 查詢效能? 如何優化 PHP 中的 MySQL 查詢效能? Jun 03, 2024 pm 08:11 PM

如何優化 PHP 中的 MySQL 查詢效能?

如何在 PHP 中使用 MySQL 備份和還原? 如何在 PHP 中使用 MySQL 備份和還原? Jun 03, 2024 pm 12:19 PM

如何在 PHP 中使用 MySQL 備份和還原?

如何使用 PHP 插入資料到 MySQL 表? 如何使用 PHP 插入資料到 MySQL 表? Jun 02, 2024 pm 02:26 PM

如何使用 PHP 插入資料到 MySQL 表?

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤 如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤 Dec 09, 2024 am 11:42 AM

如何修復 MySQL 8.4 上的 mysql_native_password 未載入錯誤

如何在 PHP 中使用 MySQL 預存程序? 如何在 PHP 中使用 MySQL 預存程序? Jun 02, 2024 pm 02:13 PM

如何在 PHP 中使用 MySQL 預存程序?

如何使用 PHP 建立 MySQL 表? 如何使用 PHP 建立 MySQL 表? Jun 04, 2024 pm 01:57 PM

如何使用 PHP 建立 MySQL 表?

oracle資料庫和mysql的區別 oracle資料庫和mysql的區別 May 10, 2024 am 01:54 AM

oracle資料庫和mysql的區別

See all articles