293 lines
13 KiB
Markdown
293 lines
13 KiB
Markdown
# MariaDB MaxScale 2.2.0 Release Notes -- 2017-10-12
|
|
|
|
Release 2.2.0 is a Beta release.
|
|
|
|
This document describes the changes in release 2.2.0, when compared to
|
|
release 2.1.
|
|
|
|
For any problems you encounter, please consider submitting a bug
|
|
report at [Jira](https://jira.mariadb.org).
|
|
|
|
## Changed Features
|
|
|
|
### Whitespace in Object Names
|
|
|
|
Significant whitespace in object names is now deprecated. All object names
|
|
(services, servers, etc.) will be converted to a compatible format by
|
|
squeezing repeating whitespace and replacing it with hyphens. If any
|
|
object name conversions take place, a warning will be logged.
|
|
|
|
### Monitor Scripts
|
|
|
|
The execution of monitor scripts has been made synchronous. This means
|
|
that a monitor will wait until the executed script is done or until a
|
|
timeout is exceeded. The timeout is configurable with the `script_timeout`
|
|
parameter.
|
|
|
|
In addition to this, the output of the script is logged into the MaxScale log
|
|
file. The message is logged on the matching log level if it is prefixed with one
|
|
of `alert:`, `error:`, `warning:`, `notice:`, `info:` or `debug:`. If no prefix
|
|
is provided, the message is logged on the notice level.
|
|
|
|
For more information, refer to the [monitor documentation](../Monitors/Monitor-Common.md).
|
|
|
|
### Read-only Administrative Users
|
|
|
|
Users that can only perform read-only operations can be created with `add
|
|
readonly-user` and `enable readonly-account` commands. To convert
|
|
administrative users to read-only users, delete the old administrative user and
|
|
create it as a read-only user.
|
|
|
|
For more information about administrative interface users, refer to the
|
|
[MaxAdmin](../Reference/MaxAdmin.md) documentation.
|
|
|
|
**Note:** Old users from pre-2.2 MaxScale versions will be converted to
|
|
administrative users that have full access to all commands.
|
|
|
|
### MaxAdmin
|
|
|
|
The `remove user` command now only expects one parameter, the username.
|
|
|
|
### Regular Expression Parameters
|
|
|
|
Modules may now use a built-in regular expression (regex) string parameter type
|
|
instead of a normal string when accepting patterns. The regex parameters are
|
|
checked by the config file loader to compile using the PCRE2 library embedded
|
|
within MaxScale. The only module using the new regex parameter type is currently
|
|
*QLAFilter*.
|
|
|
|
The only action users should take is enclose their regular expressions in
|
|
slashes, e.g. `match=/^select/` defines the pattern `^select`. The slashes allow
|
|
whitespace to be read from the ends of the regex string contrary to a normal
|
|
string parameter and are removed before compiling the pattern. For backwards
|
|
compatibility, the slashes are not yet mandatory. Omitting them is, however,
|
|
deprecated and will be rejected in the next release of MaxScale.
|
|
|
|
### `monitor_interval`
|
|
|
|
The default value of `monitor_interval` was changed from 10000 milliseconds to
|
|
2000 milliseconds.
|
|
|
|
### NamedServerFilter
|
|
|
|
The filter now accepts multiple match-server pairs. Please see the
|
|
[NamedServerFilter](../Filters/Named-Server-Filter.md) documentation for
|
|
details.
|
|
|
|
### Tee Filter
|
|
|
|
The `tee` filter has been rewritten to better suit the way MaxScale now
|
|
functions. The filter requires that the service where the branched session is
|
|
created has at least one network listener. The users must also be able to
|
|
connect from the local MaxScale host. Usually this means that an extra grant for
|
|
the loopback address is required (e.g. `myuser@127.0.0.1`).
|
|
|
|
In addition to the aforementioned requirements, a failure to create a branched
|
|
session no longer causes the actual client session to be closed. In most cases,
|
|
this is desired behavior.
|
|
|
|
The `match` and `exclude` parameters were changed to use PCRE2 syntax for the
|
|
regular expressions. The regular expression should be enclosed by slashes
|
|
e.g. `match=/select.*from.*test/`.
|
|
|
|
A tee filter instance can be disabled with the new `tee disable [FILTER]` and
|
|
`tee enable [FILTER]` module commands. Refer to the
|
|
[module command documentation](../Reference/Module-Commands.md) for more
|
|
details on module commands and the
|
|
[Tee Filter documentation](../Filters/Tee-Filter.md) for details on the tee
|
|
filter specific commands.
|
|
|
|
### Dbfwfilter
|
|
|
|
The `function` type rule will now match a query that does not use a function
|
|
when the filter is in whitelist mode (`action=allow`). This means that queries
|
|
that don't use functions are allowed though in whitelist mode.
|
|
|
|
#### Rule Names
|
|
|
|
Rule names can no longer use punctuation in them and can consist only of
|
|
alphanumeric characters, underscores and hyphens.
|
|
|
|
#### Keywords `deny` and `allow`
|
|
|
|
The `deny` and `allow` keywords are deprecated in favor of the more descriptive
|
|
`match` keyword. All instances of `deny` and `allow` can be replaced with
|
|
`match` with no functional changes.
|
|
|
|
### Logging
|
|
|
|
When known, the session id will be included in all logged messages. This allows
|
|
a range of logged messages related to a particular session (that is, client) to
|
|
be bound together, and makes it easier to investigate problems. In practice this
|
|
is visible so that if a logged message earlier looked like
|
|
```
|
|
2017-08-30 12:20:49 warning: [masking] The rule ...
|
|
```
|
|
it will now look like
|
|
```
|
|
2017-08-30 12:20:49 warning: (4711) [masking] The rule ...
|
|
```
|
|
where `4711` is the session id.
|
|
|
|
### Binlogrouter Default Values
|
|
|
|
The _binlogdir_ now has a default value of `/var/lib/maxscale/`. Previously the
|
|
parameter was mandatory even though it was documented to have a default value.
|
|
|
|
The _mariadb10-compatibility_ is enabled by default since MaxScale 2.2.0. This
|
|
allows easier use of the MariaDB 10 series server.
|
|
|
|
## Dropped Features
|
|
|
|
### MaxAdmin
|
|
|
|
The following deprecated commands have been removed:
|
|
|
|
* `enable log [debug|trace|message]`
|
|
* `disable log [debug|trace|message]`
|
|
* `enable sessionlog [debug|trace|message]`
|
|
* `disable sessionlog [debug|trace|message]`
|
|
|
|
The following commands have been deprecated:
|
|
|
|
* `enable sessionlog-priority <session-id> [debug|info|notice|warning]`
|
|
* `disable sessionlog-priority <session-id> [debug|info|notice|warning]`
|
|
* `reload config`
|
|
|
|
The `{ enable | disable } sessionlog-priority` commands can be issued, but they
|
|
have no effect.
|
|
|
|
#### Filenames as MaxAdmin Arguments
|
|
|
|
MaxAdmin no longer attempts to interpret additional command line parameters as a
|
|
file name to load commands from (e.g. `maxadmin mycommands.txt`). The shell
|
|
indirection operator `<` should be used to achieve the same effect (`maxadmin <
|
|
mycommands.txt`).
|
|
|
|
## New Features
|
|
|
|
### REST API
|
|
|
|
MariaDB MaxScale now exposes a REST-API for obtaining information about
|
|
and for manipulating the resources of MaxScale. For more information please
|
|
refer to the [REST API](../REST-API/API.md) documentation.
|
|
|
|
### MaxCtrl Command Line Client
|
|
|
|
The MaxCtrl is a new command line intended to replace MaxAdmin. This
|
|
client uses the REST API to communicate with MaxScale in a secure way. The
|
|
client is distributed separately in the `maxscale-client` package.
|
|
|
|
For more information, refer to the [MaxCtrl](../Reference/MaxCtrl.md)
|
|
documentation.
|
|
|
|
### Limited support from Pluggable Authentication Modules (PAM).
|
|
|
|
Pluggable authentication module (PAM) is a general purpose authentication API.
|
|
An application using PAM can authenticate a user without knowledge about the
|
|
underlying authentication implementation. For more information please refer to
|
|
the [PAM Authenticator](../Authenticators/PAM-Authenticator.md) documentation.
|
|
|
|
### MySQL Monitor Crash Safety
|
|
|
|
The MySQL monitor keeps a journal of the state of the servers and the currently
|
|
elected master. This information will be read if MaxScale suffers an
|
|
uncontrolled shutdown. By doing the journaling of server states, the mysqlmon
|
|
monitor is able to keep track of stale master and stale slave states across
|
|
restarts and crashes.
|
|
|
|
### New Variables for Monitor Scripts
|
|
|
|
The PARENT and CHILDREN variables were added to the monitor scripts. The former
|
|
expands to the direct parent node of the server that triggers the event and the
|
|
latter expands to a list of servers that are direct descendants of the server
|
|
that triggered the event.
|
|
|
|
For more information, refer to the [monitor documentation](../Monitors/Monitor-Common.md).
|
|
|
|
### Avrorouter `deflate` compression
|
|
|
|
The Avrorouter now supports the `deflate` compression method. This allows the
|
|
stored Avro format files to be compressed on disk. For more information, refer
|
|
to the [Avrorouter](../Routers/Avrorouter.md) documentation.
|
|
|
|
### Preliminary proxy protocol support
|
|
|
|
The MySQL backend protocol module now supports sending a proxy protocol header
|
|
to the server. For more information, see the server section in the
|
|
[Configuration guide](../Getting-Started/Configuration-Guide.md).
|
|
|
|
### KILL command support
|
|
|
|
The MySQL client protocol now supports execution of `KILL` statements through
|
|
MaxScale. The connection IDs in these queries will be transformed into the
|
|
correct ones by MaxScale.
|
|
|
|
`KILL QUERY ID <query_id>` is not supported by MaxScale and it needs to be
|
|
executed directly on the relevant backend server. In addition to this, there are
|
|
minor limitations to the `KILL` command handling. See
|
|
[Limitations](../About/Limitations.md) for more information.
|
|
|
|
### Obfuscation and partial masking added to the masking filter.
|
|
|
|
A value can now be obfuscated instead of just masked. Further, it is
|
|
possible to specify with a regular expression that only a specific part
|
|
of a value should be masked. For more information, please read the
|
|
[masking filter](../Filters/Masking.md) documentation.
|
|
|
|
### New rules for dbfwfilter
|
|
|
|
The `uses_function` type rule prevents certain columns from being used
|
|
with functions. It is now also possible to match a function if it is
|
|
used in conjunction with specific columns. For more information about
|
|
the new rules, read the
|
|
[dbfwfilter](../Filters/Database-Firewall-Filter.md) documentation.
|
|
|
|
## Bug fixes
|
|
|
|
[Here is a list of bugs fixed in MaxScale 2.2.0.](https://jira.mariadb.org/issues/?jql=project%20%3D%20MXS%20AND%20issuetype%20%3D%20Bug%20AND%20status%20%3D%20Closed%20AND%20fixVersion%20%3D%202.2.0)
|
|
|
|
* [MXS-1450](https://jira.mariadb.org/browse/MXS-1450) Maxadmin commands with a leading space are silently ignored
|
|
* [MXS-1449](https://jira.mariadb.org/browse/MXS-1449) Database change not allowed
|
|
* [MXS-1405](https://jira.mariadb.org/browse/MXS-1405) Script launched by monitors should run synchronously
|
|
* [MXS-1397](https://jira.mariadb.org/browse/MXS-1397) ReadWriteSplit's master connection can time out if session only issues read-only queries
|
|
* [MXS-1359](https://jira.mariadb.org/browse/MXS-1359) qc_sqlite crashes with a very large compound select
|
|
* [MXS-1351](https://jira.mariadb.org/browse/MXS-1351) Partially authenticated connections are put into the connection pool
|
|
* [MXS-1349](https://jira.mariadb.org/browse/MXS-1349) qc_mysqlembedded accesses wrong preparable statement field
|
|
* [MXS-1346](https://jira.mariadb.org/browse/MXS-1346) Function blocking per column
|
|
* [MXS-1345](https://jira.mariadb.org/browse/MXS-1345) Empty function list is not allowed
|
|
* [MXS-1340](https://jira.mariadb.org/browse/MXS-1340) Report true table and not alias name
|
|
* [MXS-1339](https://jira.mariadb.org/browse/MXS-1339) QC should return a particular table/database just once
|
|
* [MXS-1334](https://jira.mariadb.org/browse/MXS-1334) Build on FreeBSD 11 looks for libdl - how can it be told not to?
|
|
* [MXS-1322](https://jira.mariadb.org/browse/MXS-1322) Flushing log should reopen not reopen and truncate.
|
|
* [MXS-1307](https://jira.mariadb.org/browse/MXS-1307) Add CTE tests
|
|
* [MXS-1265](https://jira.mariadb.org/browse/MXS-1265) strerror_r calls result in compiler warnings
|
|
* [MXS-1262](https://jira.mariadb.org/browse/MXS-1262) Mantenance bit(s) should persist after maxscale restart
|
|
* [MXS-1221](https://jira.mariadb.org/browse/MXS-1221) Nagios plugin scripts does not process -S option properly
|
|
* [MXS-1214](https://jira.mariadb.org/browse/MXS-1214) Streaming Insert Filter gives errors
|
|
* [MXS-1203](https://jira.mariadb.org/browse/MXS-1203) Batch inserts through Maxscale with C/J stall
|
|
* [MXS-1198](https://jira.mariadb.org/browse/MXS-1198) Interface retry bind interval (of a listener) increases by ten seconds every time it fails (10,20,30,....) it should be a fixed interval (and maybe configurable)
|
|
* [MXS-1160](https://jira.mariadb.org/browse/MXS-1160) Load infile not working on Schemarouter
|
|
* [MXS-1146](https://jira.mariadb.org/browse/MXS-1146) JDBC connection dropping transaction when connecting to MaxScale directly
|
|
* [MXS-959](https://jira.mariadb.org/browse/MXS-959) KILL command on wrong connection ID
|
|
|
|
## Known Issues and Limitations
|
|
|
|
There are some limitations and known issues within this version of MaxScale.
|
|
For more information, please refer to the [Limitations](../About/Limitations.md) document.
|
|
|
|
## Packaging
|
|
|
|
RPM and Debian packages are provided for the Linux distributions supported
|
|
by MariaDB Enterprise.
|
|
|
|
Packages can be downloaded [here](https://mariadb.com/resources/downloads).
|
|
|
|
## Source Code
|
|
|
|
The source code of MaxScale is tagged at GitHub with a tag, which is identical
|
|
with the version of MaxScale. For instance, the tag of version X.Y.Z of MaxScale
|
|
is X.Y.Z. Further, *master* always refers to the latest released non-beta version.
|
|
|
|
The source code is available [here](https://github.com/mariadb-corporation/MaxScale).
|