370 lines
14 KiB
Markdown
370 lines
14 KiB
Markdown
# MariaDB MaxScale 2.3.0 Release Notes -- 2018-10-09
|
|
|
|
Release 2.3.0 is a Beta release.
|
|
|
|
This document describes the changes in release 2.3.0, when compared to
|
|
release 2.2.
|
|
|
|
For any problems you encounter, please consider submitting a bug
|
|
report at [Jira](https://jira.mariadb.org).
|
|
|
|
## Changed Features
|
|
|
|
### maxadmin `list threads`
|
|
|
|
Maxadmin `list threads` now shows the descriptor counts and load of
|
|
the MaxScale worker threads. For details, please consult the
|
|
maxadmin [documentation](../Reference/MaxAdmin.md).
|
|
|
|
### MaxCtrl `create monitor`
|
|
|
|
The `create monitor` command now accepts a list of key-value parameters that are
|
|
passed to the monitor as the last argument. This allows creation and
|
|
configuration of monitors in one command.
|
|
|
|
### `query_retries`
|
|
|
|
The default value of `query_retries` was changed from 0 to 1. This turns
|
|
on failure tolerant queries for monitors and authenticators which prevents
|
|
failures due to network problems. A single reconnection attempt is made to
|
|
keep responsiveness high even with default values.
|
|
|
|
### Session Command History
|
|
|
|
The _readwritesplit_ session command history is now enabled by default but it
|
|
is limited to a total of 50 distict session commands. This default allows most
|
|
sessions to leverage the newly improved reconnection mechanism without having to
|
|
explicitly enable the history. When the limit of 50 commands is exceeded, the
|
|
session command history is disabled. This makes it possible to use pooled
|
|
connections by default without having to explicitly disable the history (this
|
|
was the case with pre-2.1 versions of MaxScale).
|
|
|
|
The way that the history is stored has also changed. Instead of storing all
|
|
session commands, each session only stores the first and last execution of each
|
|
command. This way the history is compressed into a compact representation while
|
|
still retaining the relative order of each command.
|
|
|
|
To keep the old functionality, add `disable_sescmd_history=true` to the service
|
|
definition.
|
|
|
|
### Cache Filter
|
|
|
|
The rules can now be expressed using a JSON array containing rule objects,
|
|
which makes it easier to express more complex rules. Please see the
|
|
[Cache](../Filters/Cache.md) documentation for details.
|
|
|
|
### Masking Filter
|
|
|
|
By default the masking filter rejects statements that use functions on
|
|
conjuction with columns that should be masked. Please see the
|
|
[Masking Filter](../Filters/Masking.md) documentation for details.
|
|
|
|
### `router_options` in Binlogrouter
|
|
|
|
The use of `router_options` with the binlogrouter module is deprecated in
|
|
MaxScale 2.3 and will be removed in a subsequent release. The
|
|
`router_options` should be converted into separate parameters.
|
|
|
|
### `thread_stack_size`
|
|
|
|
The `thread_stack_size` configuration parameter is ignored and has been
|
|
deprecated. If you need to explicitly set the stack size, do so using
|
|
`ulimit -s` before starting MaxScale.
|
|
|
|
### `ssl` for Servers and Listeners
|
|
|
|
The `ssl` parameter now accepts boolean values ìn addition to the old `required`
|
|
and `disabled` values.
|
|
|
|
### MariaDBMonitor
|
|
|
|
MariaDBMonitor has undergone several changes listed briefly below. Please see
|
|
[MariaDBMonitor documentation](../Monitors/MariaDB-Monitor.md) for more details.
|
|
|
|
#### JSON diagnostics output changed
|
|
|
|
The data in the diagnostic output of the REST-API has changed, with some fields
|
|
removed and others added.
|
|
|
|
#### Master detection
|
|
|
|
The monitor is now less likely to suddenly change the master server, even if
|
|
another server has more slaves than the current master. The DBA can force a
|
|
master reselection by setting the current master read-only, or by removing all
|
|
its slaves if the master is down.
|
|
|
|
Only one server can have the *Master* status flag at a time, even in a
|
|
multimaster setup. Others servers in the multimaster group are given the *Relay
|
|
Master* and *Slave* status flags.
|
|
|
|
#### Switchover new master autoselection
|
|
|
|
The switchover command can now be called with just the monitor instance name as
|
|
parameter. In this case the monitor will automatically select a server for
|
|
promotion.
|
|
|
|
#### Replication lag detection
|
|
|
|
The replication lag measurement now simply reads the
|
|
*Seconds_Behind_Master*-field of the slave status output of slaves. The slave
|
|
calculates this value by comparing the time stamp in the binlog event the slave
|
|
is currently processing to the slave's own clock. If a slave has multiple slave
|
|
connections, the smallest lag is used.
|
|
|
|
#### Low disk space detection, automatic switchover
|
|
|
|
With recent MariaDB Server versions, the monitor can check the disk space on the
|
|
backends and detect if the server is running low. The monitor can be set to
|
|
automatically switchover a master low on disk space. Slaves can be set to
|
|
maintenance mode. Disk space is also considered when selecting a new master for
|
|
promotion. See
|
|
[switchover_on_low_disk_space](../Monitors/MariaDB-Monitor.md#switchover_on_low_disk_space)
|
|
and
|
|
[maintenance_on_low_disk_space](../Monitors/MariaDB-Monitor.md#maintenance_on_low_disk_space)
|
|
for more information.
|
|
|
|
#### Replication reset feature
|
|
|
|
The *reset-replication* monitor command deletes all slave connections and binary
|
|
logs, and then sets up replication. Useful when data is in sync but gtid:s are
|
|
not.
|
|
|
|
#### Scheduled events handling in failover/switchover/rejoin
|
|
|
|
Server events lauched by the event scheduler thread are now handled during
|
|
cluster modification operations. See
|
|
[handle_events](../Monitors/MariaDB-Monitor.md#handle_events)
|
|
for more information.
|
|
|
|
#### Unused parameters
|
|
|
|
The following parameters are unused and are ignored if set:
|
|
- `mysql51_replication` MySQL5.1 is no longer supported.
|
|
- `multimaster` The monitor now always detects multimaster setups.
|
|
- `allow_cluster_recovery` Now always on.
|
|
- `detect_replication_lag` Lag detection no longer writes to databases so it is
|
|
always on.
|
|
|
|
## Dropped Features
|
|
|
|
### `log_to_shm` parameter and `--log=shm` option
|
|
|
|
The following commands no longer create the log files in shared memory and will
|
|
be ignored. MaxScale will behave as if `--log=file` was provided when
|
|
`--log=shm` is used. The `log_to_shm` parameter is ignored. Both the parameter
|
|
and the optino value are deprecated and will be removed in a later relesae.
|
|
|
|
Logs can still be created in shared memory by pointing `logdir` to `/dev/shm`.
|
|
|
|
### Configuration Reloading
|
|
|
|
The deprecated `maxadmin reload config` command has been removed.
|
|
|
|
### `router_options` in Avrorouter
|
|
|
|
The use of `router_options` with avrorouter was deprecated in MaxScale 2.1. In
|
|
MaxScale 2.3, the use of `router_options` is no longer supported and the options
|
|
should be given as parameters instead.
|
|
|
|
### `router_options` in readwritesplit
|
|
|
|
The use of `router_options` with readwritesplit, which was deprecated in
|
|
MaxScale 2.2.0, has been removed in MaxScale 2.3.0.
|
|
|
|
### `QUERY-LAST-TRANSACTION` and `QUERY-TRANSACTION` CDC commands
|
|
|
|
The CDC protocol no longer accepts the `QUERY-LAST-TRANSACTION` and
|
|
`QUERY-TRANSACTION` commands. They were removed due to the addition of the REST
|
|
API that provides the same information in a more easy to process format.
|
|
|
|
## New Features
|
|
|
|
### Binlog Router
|
|
|
|
If the binlog router is replicating from a Galera cluster it is now
|
|
possible to specify secondary masters that the binlog router automatically
|
|
will switch to, in case the primary master for some reason goes down.
|
|
Please see the binlog router
|
|
[documentation](../Routers/Binlogrouter.md)
|
|
for details.
|
|
|
|
### Hints
|
|
|
|
There is now a new hint `last` that will cause a query to be routed to the
|
|
same server the previous query was routed to.
|
|
|
|
### Backend Connection IDs
|
|
|
|
The backend connection IDs are now shown in the `show sessions` output of
|
|
MaxCtrl.
|
|
|
|
### Comment Filter
|
|
|
|
With the comment filter it is possible to prepend statement received
|
|
with a comment before it is sent further to a server. Please see the
|
|
[comment filter documentation](../Filters/Comment.md)
|
|
for more details.
|
|
|
|
### Query Classifier Cache
|
|
|
|
The query classifier now caches the results of each classification which
|
|
significantly improves performance of workloads that require query
|
|
classification. The default cache size limit is 40% of total system memory.
|
|
|
|
Read [the configuration guide](../Getting-Started/Configuration-Guide.md#query_classifier_cache_size)
|
|
for more information about the details of the query classifier cache and how to
|
|
configure it.
|
|
|
|
### Runtime Configuration of the Cache
|
|
|
|
With the variables `@maxscale.cache.use` and `@maxscale.cache.populate`
|
|
it is now possible for a client to specify whether the cache should be
|
|
used and/or populated. Please see the
|
|
[Cache](../Filters/Cache.md) documentation for details.
|
|
|
|
### User Specified Syslog Facility and Level for Authentication Errors
|
|
|
|
It is now possible for the end user to specify the syslog facility and level
|
|
for authentication errors. Please see
|
|
[the configuration guide](../Getting-Started/Configuration-Guide.md#events)
|
|
for details.
|
|
|
|
### Named Server Filter
|
|
|
|
The `source` parameter can now contain a list of comma separated addresses.
|
|
|
|
### Table Family Sharding
|
|
|
|
The SchemaRouter is now capable of table family sharding. Please see the
|
|
SchemaRouter [documentation](../Routers/SchemaRouter.md) for details.
|
|
|
|
### Throttle filter
|
|
The [throttlefilter](../Filters/Throttle.md) replaces and extends on the limit_queries
|
|
functionality of [the Database Firewall filter](../Filters/Database-Firewall-Filter.md).
|
|
|
|
### ReadWriteSplit
|
|
|
|
A set of new features have been added to readwritesplit.
|
|
|
|
#### `transaction_replay`
|
|
|
|
The [`transaction_replay`](../Routers/ReadWriteSplit.md#transaction_replay)
|
|
parameter enables replaying of transactions if a master server is lost
|
|
mid-transaction. This allows transparent replacement of master servers with a
|
|
minimal amount of failed transactions.
|
|
|
|
#### `master_reconnection`
|
|
|
|
With the
|
|
[`master_reconnection`](../Routers/ReadWriteSplit.md#master_reconnection)
|
|
parameter, if the connection to a master server is lost or the master server
|
|
changes, readwritesplit can now reconnect seamlessly to the master server
|
|
without losing the session state.
|
|
|
|
#### `delayed_retry`
|
|
|
|
The [`delayed_retry`](../Routers/ReadWriteSplit.md#delayed_retry) parameter
|
|
allows queries to be automatically retried if their execution is interrupted.
|
|
|
|
#### `causal_reads`
|
|
|
|
The [`causal_reads`](../Routers/ReadWriteSplit.md#causal_reads) parameter
|
|
enables distributed consistent reads with MariaDB version 10.2 and newer.
|
|
|
|
#### `optimistic_trx`
|
|
|
|
The [`optimistic_trx`](../Routers/ReadWriteSplit.md#optimistic_trx) parameter
|
|
enables optimistic transaction execution. This parameter controls whether normal
|
|
transactions (i.e. `START TRANSACTION` or `BEGIN`) are load balanced across
|
|
slaves. If the transaction tries to modify a row, it is migrated to the master
|
|
and rolled back on the slave.
|
|
|
|
#### Adaptive Routing
|
|
|
|
A new load balancing method,
|
|
[`ADAPTIVE_ROUTING`](../Routers/ReadWriteSplit.md#slave_selection_criteria), was
|
|
added. It uses the average query response time to distribute the load so that it
|
|
is optimal on all servers.
|
|
|
|
### MaxCtrl
|
|
|
|
For more detailed information about the features of MaxCtrl, see the
|
|
[documentation](../Reference/MaxCtrl.md) or the output of `maxctrl help`.
|
|
|
|
#### Interactive Mode for MaxCtrl
|
|
|
|
MaxCtrl can now be started in an interactive mode similar to MaxAdmin. This
|
|
makes use of passwords more convenient as they have to be input only once and
|
|
they are cached for the duration of the session.
|
|
|
|
#### Draining Server Connections
|
|
|
|
The new `drain server` drains the server of connections by first removing it
|
|
from all services after which it waits until all connections are closed. When
|
|
all connections are closed, the server is put into the `maintenance` state and
|
|
added back to all the services where it was removed from.
|
|
|
|
### Resultset Concatenation Router
|
|
|
|
A new experimental router module, `cat`, was added to the
|
|
`maxscale-experimental` package. The `cat` router is a special router that
|
|
concatenates result sets. For more information and an explanation on how the
|
|
router works, read the [`cat` documentation](../Routers/Cat.md).
|
|
|
|
### REST API Additions
|
|
|
|
#### Creation of Services and Filters at Runtime
|
|
|
|
The REST API and MaxCtrl now support the creation and destruction of services
|
|
and filters at runtime. This also means that the filters of a service can now be
|
|
modified at runtime. Refer to the [REST API](../REST-API/API.md) and
|
|
[MaxCtrl](../Reference/MaxCtrl.md) documentation for more details.
|
|
|
|
#### Alteration of Routers
|
|
|
|
The router parameters of services can now be altered at runtime. Currently only
|
|
the readwritesplit router implements this feature.
|
|
|
|
### Binlog Filtering
|
|
|
|
The `binlogfilter` is a filter module that allows the client side stream of
|
|
binlogs to be filtered. It is designed to be used with the binlogrouter.
|
|
|
|
This allows conditional replication similar to _replicate_do_table_ but with
|
|
full PCRE2 compliant match/exclude functionality. For more information, refer to
|
|
the [binlogfilter](../Filters/BinlogFilter.md) documentation.
|
|
|
|
### Network Traffic Buffering
|
|
|
|
The new
|
|
[`writeq_high_water`](../Getting-Started/Configuration-Guide.md#writeq_high_water)
|
|
and
|
|
[`writeq_low_water`](../Getting-Started/Configuration-Guide.md#writeq_low_water)
|
|
parameters allow network traffic to be throttled if it exceeds the highwater
|
|
mark. This can be used to prevent MaxScale from buffering too much data in
|
|
memory if the client is not reading results fast enough.
|
|
|
|
## Bug fixes
|
|
|
|
[Here is a list of bugs fixed in MaxScale 2.3.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.3.0)
|
|
|
|
## 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).
|