
When a Galera cluster loses a member, it will recalculate the wsrep_local_index values. As the index is zero-based, we can be certain that in a valid cluster there will always be a node with an index of 0. If the galeramon can't find a node with an index of 0, it means that either the cluster hasn't stabilized and there's a pending recalculation of the index or that there's no connectivity between MaxScale and the node with the index value 0. With this change and default settings, active-active MaxScale setups with Galera clusters should always choose the same node as the master.
195 lines
8.1 KiB
Markdown
195 lines
8.1 KiB
Markdown
# MariaDB MaxScale 2.1.0 Release Notes
|
|
|
|
Release 2.1.0 is a Beta release.
|
|
|
|
This document describes the changes in release 2.1.0, when compared to
|
|
release 2.0.X.
|
|
|
|
For any problems you encounter, please consider submitting a bug
|
|
report at [Jira](https://jira.mariadb.org).
|
|
|
|
## Changed Features
|
|
|
|
### Configuration Files
|
|
|
|
From 2.1.0 onwards MariaDB MaxScale supports hierarchical configuration
|
|
files. When invoked with a configuration file, e.g. `maxscale.cnf`, MariaDB
|
|
MaxScale looks for a directory `maxscale.cnf.d` in the same directory as the
|
|
configuration file, and reads all `.cnf` files it finds in that directory
|
|
hierarchy. All other files will be ignored.
|
|
|
|
Please see the
|
|
[Configuration Guide](../Getting-Started/Configuration-Guide.md#configuration)
|
|
for details.
|
|
|
|
### Logging
|
|
|
|
Before version 2.1.0, MaxScale created in the log directory a log file
|
|
maxscaleN.log, where N initially was 1 and then was increased every time
|
|
MaxScale was instructed (by sending the signal SIGUSR1 or via maxadmin)
|
|
to rotate the log file.
|
|
|
|
That has now been changed so that the name of the log file is *always*
|
|
maxscale.log and when MaxScale is instructed to rotate the log file,
|
|
MaxScale simply closes it and then reopens and truncates it.
|
|
|
|
To retain the existing log entries, you should first move the file to
|
|
another name (MaxScale continues writing to it) and then instruct
|
|
MaxScale to rotate the the log file.
|
|
|
|
```
|
|
$ mv maxscale.log maxscale1.log
|
|
$ # MaxScale continues to write to maxscale1.log
|
|
$ kill -SIGUSR1 <maxscale-pid>
|
|
$ # MaxScale closes the file (i.e. maxscale1.log) and reopens maxscale.log
|
|
```
|
|
|
|
This behaviour is now compatible with logrotate(8).
|
|
|
|
Further, if MaxScale is configured to use shared memory for the log file,
|
|
the file is created into the directory "/dev/shm/maxscale". Earlier the
|
|
log file was created into the directory "/dev/shm/maxscale.PID", where PID
|
|
was the pid of the MaxScale process.
|
|
|
|
In addition, there is now a mechanism that prevents the flooding of the log, in
|
|
case the same error occurs over and over again. That mechanism, which is enabled
|
|
by default, is configured using the new global configuration entry `log_throttling`.
|
|
For more information about this configuration entry, please see
|
|
[Global Settings](../Getting-Started/Configuration-Guide.md#global-settings).
|
|
|
|
### Readwritesplit Read Retry
|
|
|
|
In 2.1, Readwritesplit will retry failed SELECT statements that are
|
|
executed outside of transaction and with autocommit enabled. This allows
|
|
seamless slave failover and makes it transparent to the client.
|
|
|
|
Read the [Readwritesplit documentation](../Routers/ReadWriteSplit.md) on
|
|
`retry_failed_reads` for more details.
|
|
|
|
### Persistent Connections
|
|
|
|
Starting with the 2.1 version of MariaDB MaxScale, when a MySQL protocol
|
|
persistent connection is taken from the persistent connection pool, the
|
|
state of the MySQL session will be reset when the the connection is used
|
|
for the first time. This allows persistent connections to be used with no
|
|
functional limitations and makes them behave like normal MySQL
|
|
connections.
|
|
|
|
For more information about persistent connections, please read the
|
|
[Administration Tutorial](../Tutorials/Administration-Tutorial.md).
|
|
|
|
### User data cache
|
|
|
|
The user data cache stores the cached credentials that are used by some router
|
|
modules. In 2.1.0, the authenticator modules are responsible for the persisting
|
|
of the user data cache. Currently, only the MySQLAuth module implements user
|
|
data caching.
|
|
|
|
The user data loaded from the backend databases is now stored on a per listener
|
|
basis instead of a per service basis. In earlier versions, each service had its own
|
|
cache directory in `/var/cache/maxscale`. This directory contains cached user
|
|
data which is used there is no connectivity to the backend cluster.
|
|
|
|
In 2.1.0, each listener has its own sub-directory in the service cache
|
|
directory. The old caches in `/var/cache/maxscale` will need to be manually
|
|
removed if they are no longer used by older versions of MaxScale.
|
|
|
|
### Galeramon Monitoring Algorithm
|
|
|
|
The galeramon monitor will only choose nodes with a _wsrep_local_index_
|
|
value of 0 as the master. This allows multiple MaxScales to always choose
|
|
the same node as the write master node for the cluster. The old behavior
|
|
can be taken into use by disabling the new `root_node_as_master` option.
|
|
|
|
For more details, read the [Galeramon documentation](../Monitors/Galera-Monitor.md).
|
|
|
|
## New Features
|
|
|
|
### Dynamic server configuration
|
|
|
|
MaxScale can now change the servers of a service or a monitor at run-time. New
|
|
servers can also be created and they will persisted even after a restart. The
|
|
following new commands were added to maxadmin, see output of `maxadmin help
|
|
<command>` for more details.
|
|
|
|
- `create server`: Creates a new server
|
|
- `destroy server`: Destroys a created server
|
|
- `add server`: Adds a server to a service or a monitor
|
|
- `remove server`: Removes a server from a service or a monitor
|
|
- `alter server`: Alter server configuration
|
|
- `alter monitor`: Alter monitor configuration
|
|
|
|
With these new features, you can start MaxScale without the servers and define
|
|
them later.
|
|
|
|
### Module commands
|
|
|
|
Introduced in MaxScale 2.1, the module commands are special, module-specific
|
|
commands. They allow the modules to expand beyound the capabilities of the
|
|
module API. Currently, only MaxAdmin implements an interface to the module
|
|
commands.
|
|
|
|
All registered module commands can be shown with `maxadmin list functions` and
|
|
they can be executed with `maxadmin call function <domain> <name> ARGS...` where
|
|
_<domain>_ is the domain where the module registered the function and _<name>_
|
|
is the name of the function. _ARGS_ is a function specific list of arguments.
|
|
|
|
Read [Module Commands](../Reference/Module-Commands.md) documentation for more details.
|
|
|
|
In the 2.1 release of MaxScale, the [_dbfwfilter_}(../Filters/Database-Firewall-Filter.md)
|
|
and [_avrorouter_](../Routers/Avrorouter.md) implement module commands.
|
|
|
|
### Amazon RDS Aurora monitor
|
|
|
|
The new [Aurora Monitor](../Monitors/Aurora-Monitor.md) module allows monitoring
|
|
of Aurora clusters. The monitor detects which of the nodes are read replicas and
|
|
which of them is the real write node and assigns the appropriate status for each
|
|
node. This module also supports launchable scripts on monitored events. Read the
|
|
[Monitor Common Documentation](../Monitors/Monitor-Common.md) for more details.
|
|
|
|
### Multi-master mode for MySQL Monitor
|
|
|
|
The MySQL monitor now detects complex multi-master replication
|
|
topologies. This allows the mysqlmon module to be used as a replacement
|
|
for the mmmon module. For more details, please read the
|
|
[MySQL Monitor Documentation](../Monitors/MySQL-Monitor.md).
|
|
|
|
### Failover mode for MySQL Monitor
|
|
|
|
A simple failover mode has been added to the MySQL Monitor. This mode is
|
|
aimed for two node master-slave clusters where the slave can act as a
|
|
master in case the original master fails. For more details, please read
|
|
the [MySQL Monitor Documentation](../Monitors/MySQL-Monitor.md).
|
|
|
|
### Permissive authentication mode for MySQLAuth
|
|
|
|
The MySQL authentication module supports the `skip_authentication` option which
|
|
allows authentication to always succedd in MaxScale. This option offloads the
|
|
actual authentication to the backend server and it can be used to implement a
|
|
secure version of a wildcard user.
|
|
|
|
## Bug fixes
|
|
|
|
[Here is a list of bugs fixed since the release of MaxScale 2.0.X.](https://jira.mariadb.org/browse/MXS-739?jql=project%20%3D%20MXS%20AND%20issuetype%20%3D%20Bug%20AND%20resolution%20in%20(Fixed%2C%20Done)%20AND%20fixVersion%20%3D%202.0.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).
|