使用 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 的表)
監聽遠程的 sql 查詢:指定 --proxy-backend-addresses=127.0.0.1:3306 參數,具體根據實際修改,本地還是連接 127.0.0.1:4040
3、測試到此為止了,本人是打算將其用於項目 sql 監控,在進行 查詢 性能分析的時候會比較方便。
4、其他作用:讀寫分離等
使用 mysql-proxy 監聽 mysql 查詢