mysql-proxy中的admin-lua-script

來源:互聯網
上載者:User

標籤:fit   str   serve   add   published   backend   for   sele   any   

[[email protected] lua]# cat admin.lua --[[ $%BEGINLICENSE%$ Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA $%ENDLICENSE%$ --]]function set_error(errmsg)         proxy.response = {                type = proxy.MYSQLD_PACKET_ERR,                errmsg = errmsg or "error"        }endfunction 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_RESULTend

 

mysql-proxy中的admin-lua-script

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.