1. 程式人生 > >使用 mysql-proxy 監聽 mysql 查詢

使用 mysql-proxy 監聽 mysql 查詢

運行 分離 clas 分析 其他 -h get 修改 server

什麽是 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 的表)

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

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

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

使用 mysql-proxy 監聽 mysql 查詢