MySQL Proxy是一個用C語言編寫的開源代理程序,將介于客戶端和MySQL服務器之間。它可以攔截,過濾并轉發(fā)MySQL請求,從而為應用程序提供高級別的控制和管理。
讀寫是MySQL Proxy的兩項主要功能。讀查詢可以被Proxy截獲并緩存返回,提高查詢速度和性能。
+----------+ +-------------+ | client | | MySQL | | APP | | Server | +----------+ +-------------+ | | | | | +-------+ | | | Proxy | | +------><-------+ +-------+
下面是一個MySQL Proxy腳本,用于讀寫不同的MySQL節(jié)點。 在此腳本中,讀請求將被轉發(fā)到只讀MySQL節(jié)點,而寫請求將被轉發(fā)到主MySQL節(jié)點:
function read_write_splitting() if proxy.connection.server["thread_id"] == 0 then local max_idle_time = tonumber(proxy.global.config.readwrite.max_idle_time) proxy.connection.server:set_keepalive(max_idle_time) else if proxy.connection.is_in_transaction() then return end if proxy.global.backends.readonly ~= nil and proxy.global.backends.readonly.connected then proxy.connection.backend_ndx = proxy.global.backends.readonly_ndx else proxy.connection.backend_ndx = proxy.BACKEND_RW end end end
以上MySQL Proxy腳本只是一個簡單的模板。 隨著Proxy的不斷發(fā)展,可能需要更多用于讀寫的選擇和配置。 但是,此腳本提供了一個好的起點。