From 71bc30be5b543282ed37b807edbaea99a2973fa4 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Tue, 30 Aug 2016 10:17:35 +0300 Subject: [PATCH] Update limitations document on wait_timeout The document now describes readwritesplit's behavior when wait_timeout is configured to a low value. --- Documentation/About/Limitations.md | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/Documentation/About/Limitations.md b/Documentation/About/Limitations.md index 19066bb52..4b59536d2 100644 --- a/Documentation/About/Limitations.md +++ b/Documentation/About/Limitations.md @@ -26,24 +26,24 @@ Workaround: Ensure that socket paths and ports are valid. Issues [MXS-710](https://jira.mariadb.org/browse/MXS-710) and [MXS-711](https://jira.mariadb.org/browse/MXS-711) relate to this. -## Limitations with MySQL Protocol support +## Limitations with MySQL Protocol support (MySQLClient) Compression is not included in MySQL server handshake -## Limitations with Galera Cluster Monitoring +## Limitations with Galera Cluster Monitoring (galeramon) The default master selection is based only on MIN(wsrep_local_index). This can be influenced with the server priority mechanic described in the [Galera Monitor](../Monitors/Galera-Monitor.md) manual. -## Limitations in the connection router +## Limitations in the connection router (readconnroute) * If Master changes (ie. new Master promotion) during current connection the router cannot check the change. * Sending of binary data with LOAD DATA LOCAL INFILE is not supported -## Limitations in the Read/Write Splitter +## Limitations in the Read/Write Splitter (readwritesplit) Read queries are routed to the master server in the following situations: @@ -56,6 +56,20 @@ Read queries are routed to the master server in the following situations: * if there are multiple statements inside one query e.g. `INSERT INTO ... ; SELECT LAST_INSERT_ID();` +### Backend write timeout handling + +The backend connections opened by the readwritesplit will not be kept alive if +they aren't used. To keep all of the connections alive, a session command must +be periodically executed (for example `SET @a = 1;`). + +If the backend server is configured with a low +[wait_timeout](https://mariadb.com/kb/en/mariadb/server-system-variables/#wait_timeout), +it is possible that connections get closed during long sessions. It is +recommended to set the wait_timeout to a high value and let MaxScale handle the +client timeouts. This can be achieved by using the +[_connection_timeout_](../Getting-Started/Configuration-Guide.md#connection_timeout) +parameter for the service. + ### Limitations in multi-statement handling When a multi-statement query is executed through the readwritesplit @@ -177,7 +191,7 @@ possible that a slave fails to execute something because of some non-fatal, temporary failure, while the execution of the same command succeeds in other backends. -## Authentication Related Limitations +## Authentication Related Limitations (MySQLAuth) * MariaDB MaxScale can not manage authentication that uses wildcard matching in hostnames in the mysql.user table of the backend database. The only wildcards that can be @@ -191,7 +205,7 @@ succeeds in other backends. backend database. This results in failed connections and unusable usernames in MariaDB MaxScale. -## Schemarouter limitations +## Schemarouter limitations (schemarouter) The schemarouter router currently has some limitations due to the nature of the sharding implementation and the way the session variables are detected @@ -220,12 +234,12 @@ and routed. Here is a list of the current limitations. the query will be routed to the first available server. This possibly returns an error about database rights instead of a missing database. -## Dbfwfilter limitations +## Database Firewall limitations (dbfwfilter) The Database Firewall filter does not support multi-statements. Using them will result in an error being sent to the client. -## Avrorouter limitations +## Avrorouter limitations (avrorouter) The avrorouter does not support the following data types and conversions.