Release Notes for MariaDB MaxScale 6.3.0

Overview

MariaDB MaxScale is an advanced database proxy, firewall, and query router.

MariaDB MaxScale 6.3.0 was released on 2022-04-14. This release is of General Availability (GA) maturity.

Notable Changes

Security for NoSQL Protocol Listener

  • With the nosqlprotocol module, client connections can use TLS/SSL encryption. (MXS-3968)

  • With the nosqlprotocol module, client connections can use MongoDB's SCRAM authentication (with the SCRAM-SHA-1 and SCRAM-SHA-256 mechanisms) to authenticate. (MXS-3925)

Connection Pooling Enhancements

  • When connection pooling is enabled, the total number of connections for a server can be limited. (MXS-3902)

    • In prior releases, when the persistpoolmax server parameter was set to a non-zero value, the value only limited the number of unused connections in the connection pool, rather than the total number of connections to the server, so the total number of connections for a server could not be limited.

    • Starting with this release, the total number of connections for a server can be limited using the max_connections server parameter.

  • When connection pooling is enabled, each MaxScale thread is limited to the same number of unused connections in the connection pool. (MXS-3902)

    • In prior releases, when the persistpoolmax server parameter was set to a non-zero value, each MaxScale thread could have a different limit on the number of unused connections in the connection pool.

    • Starting with this release, MaxScale rounds up the persistpoolmax server parameter, so that every MaxScale thread has the same limit.

MaxGUI and Cooperative Monitoring

  • In MaxGUI, a Cooperative Monitor Indicator has been added to the Server Dashboard. (MXS-3844)

    • When multiple MaxScale nodes monitor the same set of servers using MariaDB Monitor (mariadbmon) and the cooperative_monitoring_locks parameter is enabled, one MaxScale node is considered the active node (determined by passive=false), and all other MaxScale nodes are considered passive nodes (determined by passive=true). Active and passive nodes can route connections and queries, but only the active node can perform auto-failover when the primary server fails.

    • In prior releases, MaxGUI did not indicate whether a MaxScale node was active or passive.

    • Starting with this release, when a MaxScale node is considered the active node for a set of servers monitored by MariaDB Monitor (mariadbmon), MaxGUI's Server Dashboard shows "Primary" in green text next to the name of the monitor.

Filtering for the KafkaCDC Router

  • Table-level filtering has been added for the KafkaCDC Router (kafkacdc). (MXS-3806)

    • Starting with this release, the match and exclude parameters can be used with the KafkaCDC Router (kafkacdc).

    • The match and exclude parameters accept a regular expression (regex) using the syntax of PCRE2.

    • When the match parameter is set, data is only included from tables that match the pattern.

    • When the exclude parameter is set, data is excluded from tables that match the pattern.

Runtime Configuration Changes

  • When an object defined in a static configuration file is modified or deleted at runtime using maxctrl, MaxGUI, or the REST API, a warning is written to the MaxScale error log and returned to the client. (MXS-3413)

    • Prior to this release, MaxScale would silently allow the static configuration file to be overridden by runtime changes.

    • Starting with this release, MaxScale's new warnings make the impact of runtime changes clear to administrators.

    • When an object defined in a static configuration file is modified at runtime, the following warning is raised:

    Saving runtime modifications to 'MXS_OBJECT' in 'MXS_CONFIG_FILE'. The modified values will override the values found in the static configuration files.
    
    • When an object defined in a static configuration file is deleted at runtime, the following warning is raised:

    Object 'MXS_OBJECT' is defined in a static configuration file and cannot be permanently deleted. If MaxScale is restarted, the object will appear again.
    
    • When the REST API is used, the warning is returned to the client using the Mxs-Warning header.

    • When maxctrl is used, the warning is written to stdout, but the warning can be disabled by setting the MAXCTRL_WARNINGS environment variable to 0:

    export MAXCTRL_WARNINGS=0
    
  • When an object defined in a static configuration file is modified at runtime using maxctrl, MaxGUI, or the REST API, MaxScale does not write default values for unmodified parameters to the generated configuration file. (MXS-3962)

    • Prior to this release, when an object defined in a static configuration file was modified at runtime, MaxScale would write all available parameters to the generated configuration file in persistdir, even the parameters that were not modified by the operation. If a parameter was not modified, the parameter would be added to the generated configuration file with its default value. Consequently, if the parameter was later configured in the static configuration file, it would be ignored, and the default value from the generated configuration file in persistdir would be used.

    • Starting with this release, when an object is modified at runtime, but a parameter is not affected by the operation, the parameter is not written to the generated configuration file.

  • When MaxCtrl, MaxGUI, or the REST API is used to query the configuration of a server, service, monitor, filter, or listener, the output now includes a "Source" field that contains the path to the configuration file in which the object is defined. (MXS-3413)

    • Prior to this release, MaxScale did not clearly state whether an object's configuration was read from a static configuration file or a generated configuration file in persistdir.

    • Starting with this release, MaxScale allows administrators to see the exact path to the configuration file that was used for the object.

Issues Fixed

Can Result in a Hang or Crash

  • The Cache Filter (cache) fails to properly clear the cache on a parsing error and causes a crash. (MXS-4080)

    • Prior to this release, the cache deleted the nodes when the cache was cleared.

    • With this release, the cache deletes the nodes and the key-node mapping.

Can Result in Unexpected Behavior

  • When using the MaxScale REST API, if a result set returns an error, the SQL endpoint does not show an error has been returned. (MXS-4082)

    • With this release, if a result set "fails" by ending with an error, the error number, message, and SQLSTATE are added to the result body.

  • The Cache Filter (cache) incorrectly detects a parse error when SEQUENCE is used as an identifier in an INSERT or DELETE statement. (MXS-4080)

  • maxctrl commands return an error message like "UnhandledPromiseRejectionWarning: Unhandled promise rejection..." due to incorrect formatting in the .maxctrl.cnf file. (MXS-4078)

    • Prior to this release, the cause of the error, incorrect formatting, was not indicated.

    • With this release, options incorrectly formatted with hyphens will throw the error "Error: Option names must be defined without hyphens: " and other error messages that used EINVAL and EACCESS now use Error in the error message.

  • With the MaxScale Xpand Monitor (xpandmon), the status of the bootstrap server is not always the same as the status of corresponding runtime servers (MXS-4074)

    • Prior to this release, the Monitor tick for the bootstrap server status could occur during a health check of the runtime servers. The health check is independent of the Monitor tick.

    • With this release, the state of the bootstrap server is updated from the runtime servers at every Monitor tick independent of the state of the health check round.

  • In MaxGUI, an unnecessary horizontal scroll bar appears in some dialogs. (MXS-4071)

  • In MaxGUI dashboard, the address field is truncated making it difficult to see the full address value. (MXS-4064)

    • With this release, the ADDRESS and PORT columns are combined into one column called ADDRESS to provide space for the full address value.

  • The Cache Filter (cache) does not handle multi-statements properly. (MXS-4053)

    • Prior to this release, multi-statement results may or may not have been cached depending on if the first statement was cacheable or not.

    • With this release, multi-statements are always sent to the backend and their results are not cached.

  • In MaxGUI, the Query Editor chart is not closing as expected. (MXS-4027)

    • With this release, a button has been added to close the Query Editor Chart.

  • In MaxGUI, the Servers table in the Monitor Details page is sorted by default. (MXS-3977)

    • With this release, the Monitor Details page displays the servers in the same order they are received from the REST API.

Platforms

In alignment to the MariaDB Corporation Engineering Policy, MariaDB MaxScale 6.3.0 is provided for:

  • CentOS 7 (x86_64)

  • Debian 9 (x86_64, ARM64)

  • Debian 10 (x86_64, ARM64)

  • Debian 11 (x86_64, ARM64)

  • Red Hat Enterprise Linux 7 (x86_64)

  • Red Hat Enterprise Linux 8 (x86_64, ARM64)

  • SUSE Linux Enterprise Server 12 (x86_64, ARM64)

  • SUSE Linux Enterprise Server 15 (x86_64, ARM64)

  • Ubuntu 18.04 (x86_64, ARM64)

  • Ubuntu 20.04 (x86_64, ARM64)