Hi Otto, thanks for bringing this to my attention.
Happy to add redirect support to mysql2, looks like its relatively
straightforward and sits on top of the existing protocol

Andrey

On Wed, 19 Jul 2023 at 15:44, Otto Kekäläinen <o...@kekalainen.net> wrote:

> Hi Andrey!
>
> I am reaching out to you because you maintain
> https://github.com/sidorares/node-mysql2
>
> Have you heard about this proposal on the MariaDB developers list?
>
> It suggests adding a new feature to the MariaDB/MySQL protocol where
> the server would be able to tell clients "No accepting connections -
> connect to this server instead". The implementation would be work by
> sending a new error type ERR_REDIRECT along with a client the
> IP/hostname of a new server, similar to how HTTP 301 redirect works-
>
> Full thread visible at
>
> https://lists.mariadb.org/hyperkitty/list/developers@lists.mariadb.org/thread/7UGBTX2B2KPH7UAXCCWFMUNIRQEA3WLS/
>
> If you want to participate in discussion, just reply to this message
> and change recipient to developers@lists.mariadb.org.
>
> Thanks!
>
>
> ---------- Forwarded message ---------
> From: Lenski, Daniel via developers <developers@lists.mariadb.org>
> Date: Wed, 28 Jun 2023 at 15:24
> Subject: [MariaDB developers] Client-server protocol improvement
> proposal: Connection redirection
> To: developers@lists.mariadb.org <developers@lists.mariadb.org>
>
>
> Hi!
>
> I would like to propose a new feature in the MariaDB client-server
> protocol: application-layer redirection of client connections.
>
> We want the MariaDB server to be able to tell clients connecting to
> it, “Sorry, this server is unavailable. Connect to an alternate server
> instead.” This mechanism is inspired by HTTP 302 (“temporary
> redirect”) mechanism familiar to all developers of web applications,
> and is intended to have similar semantics and security properties,
> since these have now been widely deployed and tested for decades.
>
> I have submitted a minimal but viable implementation of this at:
> https://github.com/MariaDB/server/pull/2681, server-side implementation
> https://github.com/mariadb-corporation/mariadb-connector-c/pull/226,
> MariaDB Connector/C implementation
>
>
> I am seeking advice and opinions on these, and will proceed to
> finalize this in the following 1-2 months.
>
> In its current form, this implementation allows the MariaDB server
> administrator to set two variables:
>
> SET GLOBAL SERVER_REDIRECT_MODE={ON,OFF}  (the default is OFF)
> SET GLOBAL SERVER_REDIRECT_TARGET='my-new-server.example.com' (or
> 192.168.0.123:3307, or new-server.com:3308, etc)
>
> When SERVER_REDIRECT_MODE is set to on, the server will stop accepting
> new TCP-based connections (unless they are to the extra port, which is
> intended for emergency administrative use), and it will instead
> respond to all clients with an error packet:
>
> $ mariadb --host my-server.example.com
> ERROR 4189 (HY000): |Server is redirecting clients to
> 'my-new-server.example.com:3307'|my-new-server.example.com:3307
>
> When an appropriately-updated client receives this error packet (error
> code 4196, message formatted as |Human readable message|<value of
> SERVER_REDIRECT_TARGET>), it will parse the redirection target out
> from the error message and attempt a new connection:
>
> $ updated-mariadb --host my-server.example.com -e 'select @@hostname'
> Got server redirect to 'my-new-server.example.com' (port 3307)
> +---------------------------+
> | @@hostname                |
> +---------------------------+
> | my-new-server.example.com |
> +---------------------------+
>
> The feature is gracefully backwards-compatible. Old clients that do
> not support redirection will fail and show the message in a form from
> which humans can deduce what happened. New clients that do support it
> will follow it to the new server.
>
> [...]
>
_______________________________________________
developers mailing list -- developers@lists.mariadb.org
To unsubscribe send an email to developers-le...@lists.mariadb.org

Reply via email to