200 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			200 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # MariaDB MaxScale 2.4.0 Release Notes
 | |
| 
 | |
| 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.
 | |
| 
 | |
| ### Maintenance mode and Readwritesplit
 | |
| 
 | |
| 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.
 | |
| 
 | |
| ### 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.
 | |
| 
 | |
| ## Dropped Features
 | |
| 
 | |
| ### `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.
 | |
| 
 | |
| ## New Features
 | |
| 
 | |
| ### 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`.
 | |
| 
 | |
| ### 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.
 | |
| 
 | |
| ### REST API & MaxCtrl: 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.
 | |
| 
 | |
| ### Readwritesplit
 | |
| 
 | |
| For more information on the readwritesplit router, refer to the
 | |
| [documentation](../Routers/ReadWriteSplit.md).
 | |
| 
 | |
| #### `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 attemps 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.
 | |
| 
 | |
| ## 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).
 | 
