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

MySQL Proxy 連線失敗、亂碼與穩定性問題的完整解決方案

     編輯:MySQL 資料庫相關知識

無法透過 MySQL Proxy 連線到 MySQL

即使主機位址與密碼皆正確,仍可能遇到連線失敗的情況。請檢查 MySQL Server 是否啟用了 old_password 認證機制,查看 my.cnf 設定檔中是否包含以下選項:

old_password = 1

部分資料庫是從舊版本升級而來,因此會開啟此選項,但 MySQL Proxy 不支援 old_password。也可透過查詢密碼長度來判斷:

SELECT LENGTH(Password) FROM mysql.user;

若長度為 16 位元,即為 old_password 格式。

透過 Proxy 連線後出現字元亂碼

即使手動執行 SET NAMES 'utf8' 也無效。解決方法是在 MySQL Server 端設定:

[mysqld]
skip-character-set-client-handshake
init-connect='SET NAMES utf8'
default-character-set=utf8

單一 Slave 掛掉導致整個 Proxy 服務不可用

架構為 1 Master + 2 Slave,測試 Failover 時停掉一個 Slave,MySQL Proxy 卻持續報錯導致所有連線失敗,情況比單點資料庫更糟。MySQL 官方工程師提供修改 src/network-mysqld-proxy.c 中 NETWORK_MYSQLD_PLUGIN_PROTO 函數的程式碼可解決此問題。程式碼較長,可從附件 network-mysqld-proxy-function.c 下載取代。

定期 Crash 的問題

MySQL Proxy 會不定期自行停止運作,推測存在記憶體洩漏,期待後續版本修復。目前的暫行方案是寫排程腳本於深夜定期重啟服務。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved