mysql-proxy 簡介

# 背景

今天同事分享的主題就是mysql-proxy,因而下來本身瞭解下,不求精通,只求知道這個玩意mysql

# 簡介

mysql-proxy是mysql官方提供的mysql中間件服務,上游可接入若干個mysql-client,後端可鏈接若干個mysql-server。sql

它使用mysql協議,任何使用mysql-client的上游無需修改任何代碼,便可遷移至mysql-proxy上。後端

mysql-proxy最基本的用法,就是做爲一個請求攔截,請求中轉的中間層:服務器

網絡

進一步的,mysql-proxy能夠分析與修改請求。攔截查詢和修改結果,須要經過編寫Lua腳原本完成。架構

mysql-proxy容許用戶指定Lua腳本對請求進行攔截,對請求進行分析與修改,它還容許用戶指定Lua腳本對服務器的返回結果框架

進行修改,加入一些結果集或者去除一些結果集都可。性能

 

因此說,根本上,mysql-proxy是一個官方提供的框架,具有良好的擴展性,能夠用來完成:測試

  • sql攔截與修改server

  • 性能分析與監控

  • 讀寫分離

  • 請求路由

 

# 用途

1. 分享的同事使用proxy的目的是,由於測試環境碰到了測試/開發同窗不當心全表update/delete操做,致使測試數據異常,從而影響項目進度,因而他接入mysql-proxy對sql語句進行了攔截檢查,並能夠將sql語句發送到DBA提供的一個sql review服務中去判斷sql語句是否有問題
2. 以前還有這麼一段經歷,以前訂單通過拆庫操做,訂單表分爲了128個庫,是根據訂單號去拆庫的,然而不是全部的表都有訂單號(歷史架構的鍋),若有個需求是根據手機號碼去查詢訂單號,致使要遍歷查詢128去判斷是否存在,那麼就須要proxy介入,當時使用的是阿里的mycat中間件

# 不足

因爲加入了一層proxy會致使網絡請求的增長消耗,因此性能形成必定的影響;

相關文章
相關標籤/搜索