首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Fedora/CentOS 編譯安裝 MySQL Proxy 完整踩坑記:Lua 依賴與 glib 版本陷阱

     編輯:MySQL 資料庫相關知識

背景:為什麼要編譯安裝?

官方倉庫版本過舊,且需特定 Lua 版本支援。作者嘗試 yum 與手動指定 PKG_CONFIG_PATH 均失敗,最終參考官方 Wiki 成功編譯。

核心踩坑與解決

1. Lua 靜態庫擴展名陷阱

官方 Wiki 配置:

./configure --prefix=/opt/MySQL-proxy --with-lua \
  LDFLAGS="-lm -ldl" \
  LUA_CFLAGS="-I/opt/lua/include" \
  LUA_LIBS=/opt/lua/lib/liblua.la

報錯:libtool: link: cannot find the library `/opt/lua/lib/liblua.la'

修正:改用 .a 靜態庫

LUA_LIBS=/opt/lua/lib/liblua.a

2. CentOS 5.4 glibc 版本過舊

Requested 'glib-2.0 >= 2.16.0' but version of GLib is 2.12.3

  • 嘗試手動編譯 glib 2.24 失敗(依賴地獄)
  • 尋找第三方倉庫(如 EPEL、Remi)風險高
  • 最終決策:改用 Fedora(預載新版 glib),一次成功

3. 完整編譯安裝流程

# 1. 安裝依賴
yum install -y lua-devel glib2-devel libevent-devel mysql-devel

# 2. 下載原始碼
wget https://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.8.5.tar.gz
tar xzf mysql-proxy-0.8.5.tar.gz
cd mysql-proxy-0.8.5

# 3. 配置(關鍵:LUA_LIBS 指向 .a)
./configure --prefix=/opt/mysql-proxy --with-lua \
  LDFLAGS="-lm -ldl" \
  LUA_CFLAGS="-I/usr/include/lua5.1" \
  LUA_LIBS=/usr/lib64/liblua.a

# 4. 編譯安裝
make -j$(nproc)
make install

# 5. 驗證
/opt/mysql-proxy/bin/mysql-proxy --version

生產環境部署建議

  • 使用 systemd 管理服務,配置 Restart=on-failure
  • Lua 腳本放 /opt/mysql-proxy/share/lua/,掛載只讀
  • 監控指標:連線數、延遲分位、錯誤率、Lua VM 記憶體
  • 考慮升級至 ProxySQL(現代、高效能、活躍維護)

避坑總結

  1. .la 是 libtool 封裝檔,非實際庫檔 → 改用 .a 或 .so
  2. PKG_CONFIG_PATH 需指向 .pc 檔目錄,非庫檔目錄
  3. 舊版 OS(CentOS 5/6、RHEL 5/6)編譯新軟體極易踩 glibc/glib 依賴坑 → 推薦容器化或升級 OS
  4. MySQL Proxy 官方已停止維護(最後更新 2014),新專案首選 ProxySQL / MaxScale
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved