当前位置:Gxlcms > 数据库问题 > 基于mysql-proxy实现读写分离的启动脚本

基于mysql-proxy实现读写分离的启动脚本

时间:2021-07-01 10:21:17 帮助过:33人阅读

LOGLEVEL="info"

LOGFILE="/var/log/mysql-proxy.log"

MASTERADDR="192.168.1.51:3306"

SLAVEADDR="192.168.1.53:3306"

PROXYLUA="/usr/local/mysql-proxy/share/doc/mysql-proxy/rm-splitting.lua"

ADMINUSER="admin"

PASSWD="admin"

ADMINLUA="/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua"

PROXYADDR=‘192.168.1.54‘

PROXYPORT=4040

ADMINPORT=4041


admin.lua脚本

function set_error(errmsg)

proxy.response = {

type = proxy.MYSQLD_PACKET_ERR,

errmsg = errmsg or "error"

}

end

 

function read_query(packet)

if packet:byte() ~= proxy.COM_QUERY then

set_error("[admin] we only handle text-based queries (COM_QUERY)")

return proxy.PROXY_SEND_RESULT

end

 

local query = packet:sub(2)

 

local rows = { }

local fields = { }

 

if query:lower() == "select * from backends" then

fields = {

{ name = "backend_ndx",

  type = proxy.MYSQL_TYPE_LONG },

 

{ name = "address",

  type = proxy.MYSQL_TYPE_STRING },

{ name = "state",

  type = proxy.MYSQL_TYPE_STRING },

{ name = "type",

  type = proxy.MYSQL_TYPE_STRING },

{ name = "uuid",

  type = proxy.MYSQL_TYPE_STRING },

{ name = "connected_clients",

  type = proxy.MYSQL_TYPE_LONG },

}

 

for i = 1, #proxy.global.backends do

local states = {

"unknown",

"up",

"down"

}

local types = {

"unknown",

"rw",

"ro"

}

local b = proxy.global.backends[i]

 

rows[#rows + 1] = {

i,

b.dst.name,          -- configured backend address

states[b.state + 1], -- the C-id is pushed down starting at 0

types[b.type + 1],   -- the C-id is pushed down starting at 0

b.uuid,              -- the MySQL Server‘s UUID if it is managed

b.connected_clients  -- currently connected clients

}

end

elseif query:lower() == "select * from help" then

fields = {

{ name = "command",

  type = proxy.MYSQL_TYPE_STRING },

{ name = "description",

  type = proxy.MYSQL_TYPE_STRING },

}

rows[#rows + 1] = { "SELECT * FROM help", "shows this help" }

rows[#rows + 1] = { "SELECT * FROM backends", "lists the backends and their state" }

else

set_error("use ‘SELECT * FROM help‘ to see the supported commands")

return proxy.PROXY_SEND_RESULT

end

 

proxy.response = {

type = proxy.MYSQLD_PACKET_OK,

resultset = {

fields = fields,

rows = rows

}

}

return proxy.PROXY_SEND_RESULT

end


基于mysql-proxy实现读写分离的启动脚本

标签:基于mysql-proxy实现读写分离

人气教程排行