使用 mysql-proxy 監聽 mysql 查詢


什么是 mysql-proxy?

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

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

mysql-proxy最基本的用法,就是作為一個請求攔截,請求中轉的中間層:

 

進一步的,mysql-proxy可以分析與修改請求。攔截查詢和修改結果,需要通過編寫Lua腳本來完成。

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

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

 

所以說,根本上,mysql-proxy是一個官方提供的框架,具備良好的擴展性,可以用來完成:

  • sql攔截與修改

  • 性能分析與監控

  • 讀寫分離

  • 請求路由

 

使用方法

1、下載 mysql-proxy

https://github.com/mysql/mysql-proxy/releases

 

2、解壓后進入 mysql-proxy 目錄

我們可以使用 mysql-proxy --help-all 查看幫助

 

3、下載的安裝包里面包含了一些可用的 lua 腳本,我們下面以監聽查詢時間為例子啟動並監聽本地 mysql

可用的一些 lua 腳本:

 

php 測試文件(進行一個簡單的 mysql 查詢,然后我們可以在監聽的終端看到查詢語句以及查詢時間輸出)

 

啟動 mysql-proxy 並監聽查詢時間

運行了 php 文件之后,我們可以看到如上圖的輸出。(本地建立了一個 名字為 proxy 的數據庫,里面有一個名字為 proxy 的表)

 

更新:上圖的 --lua-path 參數要去掉,下圖監聽 prepare statement,同時監聽遠程數據庫

 

監聽遠程的 sql 查詢:指定 --proxy-backend-addresses=127.0.0.1:3306 參數,具體根據實際修改,本地還是連接 127.0.0.1:4040

 

3、測試到此為止了,本人是打算將其用於項目 sql 監控,在進行 查詢 性能分析的時候會比較方便。

 

4、其他作用:讀寫分離等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM