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).
 |