340 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			340 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # MariaDB MaxScale 2.4.0 Release Notes -- 2019-06-29
 | |
| 
 | |
| Release 2.4.0 is a Beta release.
 | |
| 
 | |
| This document describes the changes in release 2.4.0, when compared to
 | |
| release 2.3.
 | |
| 
 | |
| For any problems you encounter, please consider submitting a bug
 | |
| report at [Jira](https://jira.mariadb.org).
 | |
| 
 | |
| ## Changed Features
 | |
| 
 | |
| ### Section and object names
 | |
| 
 | |
| Section and object names starting with `@@` are now reserved for
 | |
| use by MaxScale itself. If any such names are encountered in
 | |
| configuration files, then MaxScale will not start.
 | |
| 
 | |
| Whitespace in section names that was deprecated in 2.2 will now be
 | |
| rejected and cause the startup of MaxScale to fail.
 | |
| 
 | |
| ### Binding on network ports
 | |
| 
 | |
| MaxScale 2.4.0 will now use the SO_REUSEPORT capability offered by newer kernels
 | |
| that allows reuse of network listener ports. In practice this means improved
 | |
| connection creation speed with more dynamic balancing of connections.
 | |
| 
 | |
| As a side-effect of this, it is possible for two MaxScale instances to bind on
 | |
| the same listener port on systems that have Linux kernels newer than 3.9. This
 | |
| can only happen if the MaxScale instances use completely different directory
 | |
| structures (i.e. different `--basedir` arguments). Normal use of MaxScale still
 | |
| detects multiple MaxScales trying to bind to the same ports. Almost always, this
 | |
| will not have any negative side-effects.
 | |
| 
 | |
| ### Stronger hashing algorithm for admin user passwords
 | |
| 
 | |
| The administrative user passwords are now stored as SHA2-512 hashes which is an
 | |
| improvement over the older MD5 hashing algorithm. New users will use the
 | |
| stronger algorithm but old users will continue using the weaker one. To upgrade
 | |
| administrative users, recreate the user.
 | |
| 
 | |
| ### REST API
 | |
| 
 | |
| #### Mandatory `protocol` parameter on server creation
 | |
| 
 | |
| The `protocol` parameter must now always be defined when a server is
 | |
| created. The previously undocumented default value of `mariadbbackend` now must
 | |
| be explicitly defined when a server is created via the REST API.
 | |
| 
 | |
| #### TLS on server creation
 | |
| 
 | |
| To create encrypted connection to a server, the TLS parameters must be defined
 | |
| at server creation time. To enable TLS for a server that doesn't have it,
 | |
| destroy the old one and recreate it afterwards.
 | |
| 
 | |
| ## Dropped Features
 | |
| 
 | |
| ### Enabling server TLS via MaxAdmin
 | |
| 
 | |
| As TLS for servers must now be defined at creation time, enabling TLS at runtime
 | |
| via MaxAdmin is no longer possible. Use MaxCtrl to create servers with TLS
 | |
| enabled.
 | |
| 
 | |
| ### `debugcli` and `telnetd`
 | |
| 
 | |
| The `debugcli` router and the `telnetd` protocol module it uses have been
 | |
| removed.
 | |
| 
 | |
| ### `ndbclustermon`
 | |
| 
 | |
| The `ndbclustermon` module has been removed.
 | |
| 
 | |
| ### `mmmon`
 | |
| 
 | |
| The `mmmon` module has been removed as the `mariadbmon` monitor largely does
 | |
| what it used to do.
 | |
| 
 | |
| ### MariaDB-Monitor settings
 | |
| 
 | |
| The following settings have been removed and cause a startup error
 | |
| if defined: `mysql51_replication`, `multimaster` and `allow_cluster_recovery`.
 | |
| 
 | |
| ### `log_to_shm`
 | |
| 
 | |
| The `log_to_shm` parameter that was removed in 2.3 will be treated as an unknown
 | |
| parameter in 2.4.0.
 | |
| 
 | |
| ## Deprecated Features
 | |
| 
 | |
| ### `mqfilter`
 | |
| 
 | |
| The `mqfilter` has been deprecated and it will be removed in a future version
 | |
| of MaxScale.
 | |
| 
 | |
| We advise against using it.
 | |
| 
 | |
| ### Nagios Plugins
 | |
| 
 | |
| MaxScale no longer ships the example scripts and configuration files for Nagios.
 | |
| 
 | |
| ## New Features
 | |
| 
 | |
| ### Clustrix Support
 | |
| 
 | |
| MaxScale now contains support for Clustrix in the form of a Clustrix monitor
 | |
| that is capable of monitoring a Clustrix cluster.
 | |
| 
 | |
| Please see the
 | |
| [documentation](../Monitors/Clustrix-Monitor.md) for details.
 | |
| 
 | |
| ### Smart Router
 | |
| 
 | |
| MaxScale has now a new router _SmartRouter_ that is capable of routing a query
 | |
| to different kinds of backends, containing the same data, depending on which
 | |
| backend can best handle that particular kind of query.
 | |
| 
 | |
| Please see the
 | |
| [documentation](../Routers/SmartRouter.md) for details.
 | |
| 
 | |
| ### Servers can be drained
 | |
| 
 | |
| It is now possible to drain a server, which means that existing
 | |
| connections to the server can continue to be used but new connections
 | |
| are no longer created to the server.
 | |
| 
 | |
| In the output of `maxctrl`, the fact that a server is being drained
 | |
| is visible in the `State` column as the value `Draining`.
 | |
| ```
 | |
| ┌─────────┬─────────────────┬──────┬─────────────┬───────────────────────────────┬───────┐
 | |
| │ Server  │ Address         │ Port │ Connections │ State                         │ GTID  │
 | |
| ├─────────┼─────────────────┼──────┼─────────────┼───────────────────────────────┼───────┤
 | |
| │ Server1 │ 192.168.121.159 │ 3306 │ 2           │ Master, Running               │ 0-1-6 │
 | |
| ├─────────┼─────────────────┼──────┼─────────────┼───────────────────────────────┼───────┤
 | |
| │ Server2 │ 192.168.121.80  │ 3306 │ 1           │ Draining, Slave, Running      │ 0-1-6 │
 | |
| ├─────────┼─────────────────┼──────┼─────────────┼───────────────────────────────┼───────┤
 | |
| │ Server3 │ 192.168.121.122 │ 3306 │ 2           │ Slave, Running                │ 0-1-6 │
 | |
| ├─────────┼─────────────────┼──────┼─────────────┼───────────────────────────────┼───────┤
 | |
| │ Server4 │ 192.168.121.144 │ 3306 │ 2           │ Slave, Running                │ 0-1-6 │
 | |
| └─────────┴─────────────────┴──────┴─────────────┴───────────────────────────────┴───────┘
 | |
| ```
 | |
| A server is set in the _Draining_ state the same way as it is
 | |
| set in the _Maintenance_ state:
 | |
| ```
 | |
| $ maxctrl set server Server2 drain
 | |
| ```
 | |
| Note that although the state is displayed as `Draining`, when setting
 | |
| and clearing the state, the word `drain` is used.
 | |
| 
 | |
| Note that the full implication of draining a server depends upon
 | |
| both on the role of the server and on the router being used, and its
 | |
| configuration.
 | |
| 
 | |
| For instance, if readwritesplit is used and the server being drained
 | |
| is a slave, then from a client's perspective there will be no difference;
 | |
| readwritesplit will simply not use that server. However, if the server
 | |
| being drained is the master, then it will not be possible to connect
 | |
| unless `master_failure_mode` has been set to something else but the
 | |
| default `fail_instantly`.
 | |
| 
 | |
| Once the server has been drained, the state will be `Drained`.
 | |
| 
 | |
| ### `weightby` Replacement for Servers: `rank`
 | |
| 
 | |
| The new [`rank`](../Getting-Started/Configuration-Guide.md#rank) parameter is
 | |
| the replacement for the deprecated `weightby` parameter. It allows explicit
 | |
| groupings of servers into primary and secondary groups. Servers configured with
 | |
| `rank=secondary` will only be used if no primary servers are available.
 | |
| 
 | |
| ### UNIX Domain Socket for Servers
 | |
| 
 | |
| Servers can now use the
 | |
| [`socket`](../Getting-Started/Configuration-Guide.md#socket) parameter to define
 | |
| a local UNIX domain socket through which the connections will be created.
 | |
| 
 | |
| ### Cluster
 | |
| 
 | |
| The servers a service uses can now be specified using the `cluster`
 | |
| parameter of the service.
 | |
| ```
 | |
| [TheService]
 | |
| ...
 | |
| cluster=TheMonitor
 | |
| ```
 | |
| In this case, the servers of the service will be defined by the
 | |
| referred to monitor. Note that the parameters `servers` and `cluster`
 | |
| are mutually exclusive.
 | |
| 
 | |
| ### Durations
 | |
| 
 | |
| In the MaxScale configuration file, durations can now be suffixed with
 | |
| `h`, `m`, `s` or `ms` to indicate that the duration is specified as
 | |
| hours, minutes, seconds or milliseconds.
 | |
| 
 | |
| Please see the
 | |
| [configuration guide](../Getting-Started/Configuration-Guide.md#durations)
 | |
| for details.
 | |
| 
 | |
| _Not_ providing an explicit unit is strongly discouraged as it will be
 | |
| deprecated in MaxScale 2.5.
 | |
| 
 | |
| ### Query Classifier Cache
 | |
| 
 | |
| It is now possible to examine the contents of the query classifier cache.
 | |
| The REST-API endpoint is
 | |
| ```
 | |
| /v1/maxscale/query_classifier/cache
 | |
| ```
 | |
| and the equivalent _maxctrl_ command
 | |
| ```
 | |
| maxctrl show qc_cache
 | |
| ```
 | |
| The output shows the statements (the canonical version) in the cache,
 | |
| the number of times they have been encountered and how they have been
 | |
| classified.
 | |
| 
 | |
| ### Connection Attempt Throttling
 | |
| 
 | |
| If a user fails to authenticate multiple times, the host from where the user is
 | |
| connecting from will be blocked for 60 seconds. See
 | |
| [`max_auth_errors_until_block`](../Getting-Started/Configuration-Guide.md#max_auth_errors_until_block)
 | |
| for more information.
 | |
| 
 | |
| ### REST API & MaxCtrl
 | |
| 
 | |
| #### Default API Version
 | |
| 
 | |
| The API version prefix is now optional and if not present, will be assumed to be
 | |
| the latest version which currently is `/v1`.
 | |
| 
 | |
| #### Hard maintenance mode
 | |
| 
 | |
| The new `--force` option for the `set server` command in MaxCtrl allows all
 | |
| connections to the server in question to be closed when it is set into
 | |
| maintenance mode. This causes idle connections to be closed immediately.
 | |
| 
 | |
| For more information, read the
 | |
| [REST-API](../REST-API/Resources-Server.md#set-server-state) documentation for
 | |
| the `set` endpoint.
 | |
| 
 | |
| #### Command History
 | |
| 
 | |
| The interactive mode for MaxCtrl now has command history.
 | |
| 
 | |
| #### Multi-parameter Alter
 | |
| 
 | |
| The `alter` commands in MaxCtrl now accept multiple key-value pairs in one
 | |
| command. See output of `maxctrl help alter` for more information.
 | |
| 
 | |
| ### Readwritesplit
 | |
| 
 | |
| For more information on the readwritesplit router, refer to the
 | |
| [documentation](../Routers/ReadWriteSplit.md).
 | |
| 
 | |
| #### `transaction_replay`
 | |
| 
 | |
| The transaction replay functionality will now also be applied in conjunction
 | |
| with server initiated transaction rollbacks.
 | |
| 
 | |
| #### `transaction_replay_attempts`
 | |
| 
 | |
| The new `transaction_replay_attempts` parameter controls how many errors the
 | |
| transaction replay mechanism tolerates before giving up on the replay
 | |
| attempt. The number of transaction replay attempts is now capped to a default
 | |
| value of 5.
 | |
| 
 | |
| #### `lazy_connect`
 | |
| 
 | |
| Lazy connection creation delays the opening of all connections until they are
 | |
| needed. This reduces the load that is placed on the backend servers when the
 | |
| client connections are short. This feature is disabled by default.
 | |
| 
 | |
| #### Connection Selection
 | |
| 
 | |
| The servers where new connections are created at the start of a session are now
 | |
| always use connection counts. This allows the use of
 | |
| `slave_selection_criteria=LEAST_CURRENT_OPERATIONS` and
 | |
| `max_slave_connections=1`.
 | |
| 
 | |
| #### Master Selection
 | |
| 
 | |
| Readwritesplit will now load balance master connections in case there are
 | |
| multiple master servers. This is mainly of relevance only with Clustrix
 | |
| clusters.
 | |
| 
 | |
| #### Maintenance mode
 | |
| 
 | |
| Readwritesplit now allows open transactions to finish if the master is put into
 | |
| maintenance mode. To forcefully close all connections to a server use the
 | |
| `maxctrl set server <name> maintenance --force` command.
 | |
| 
 | |
| ### Galeramon
 | |
| 
 | |
| #### Replicating Slaves
 | |
| 
 | |
| If a slave server is replicating from a Galera node, galeramon will now
 | |
| correctly assign it the Slave status.
 | |
| 
 | |
| #### GTID in `list servers`
 | |
| 
 | |
| Galera nodes will now display their GTID positions in the output of
 | |
| `maxctrl list servers`.
 | |
| 
 | |
| ### Avrorouter Direct Replication
 | |
| 
 | |
| By defining the `servers` parameter for the avrorouter service, the replication
 | |
| is done directly from a remote master server. This skips the binlogrouter
 | |
| definition completely making the conversion process faster and more space
 | |
| efficient.
 | |
| 
 | |
| ### `enforce_simple_topology`
 | |
| 
 | |
| This MariaDB-Monitor setting allows the monitor greater freedom in managing the
 | |
| backend servers. Please see
 | |
| [MariaDB-Monitor documentation](../Monitors/MariaDB-Monitor.md#enforce_simple_topology)
 | |
| for more information.
 | |
| 
 | |
| ## Bug fixes
 | |
| 
 | |
| [Here is a list of bugs fixed in MaxScale 2.4.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.4.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).
 | 
