384 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			384 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # MariaDB MaxScale 2.1.0 Release Notes -- 2017-02-16
 | |
| 
 | |
| Release 2.1.0 is a Beta release.
 | |
| 
 | |
| This document describes the changes in release 2.1.0, when compared to
 | |
| release 2.0.4.
 | |
| 
 | |
| For any problems you encounter, please consider submitting a bug
 | |
| report at [Jira](https://jira.mariadb.org).
 | |
| 
 | |
| ## License
 | |
| 
 | |
| The license of MaxScale has been changed from MariaDB BSL 1.0 to MariaDB BSL 1.1.
 | |
| 
 | |
| For more information about MariaDB BSL 1.1, please refer to
 | |
| [MariaDB BSL11](https://www.mariadb.com/bsl11).
 | |
| 
 | |
| ## Changed Features
 | |
| 
 | |
| ### `router_options` to Parameters
 | |
| 
 | |
| The `router_options` values can also be given as parameters to the service for
 | |
| the _readwritesplit_, _schemarouter_ and _binlogrouter_ modules.
 | |
| 
 | |
| What this means is that in MaxScale 2.1 the following _readwritesplit_
 | |
| configration.
 | |
| 
 | |
| ```
 | |
| [RW Split Router]
 | |
| type=service
 | |
| router=readwritesplit
 | |
| servers=server1
 | |
| user=maxuser
 | |
| passwd=maxpwd
 | |
| router_options=slave_selection_criteria=LEAST_ROUTER_CONNECTIONS,max_sescmd_history=10,disable_sescmd_history=false
 | |
| ```
 | |
| 
 | |
| Can also be written in the following form.
 | |
| 
 | |
| ```
 | |
| [RW Split Router]
 | |
| type=service
 | |
| router=readwritesplit
 | |
| servers=server1
 | |
| user=maxuser
 | |
| passwd=maxpwd
 | |
| slave_selection_criteria=LEAST_ROUTER_CONNECTIONS
 | |
| max_sescmd_history=10
 | |
| disable_sescmd_history=false
 | |
| ```
 | |
| 
 | |
| ### 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.
 | |
| 
 | |
| ### Readwritesplit `disable_sescmd_history` option
 | |
| 
 | |
| The default value for `disable_sescmd_history` is now true. This new default
 | |
| value will prevent the excessive memory use of long-lived connections. In
 | |
| addition to this, it was not optimal to enable this option while the default
 | |
| value for `max_slave_connections` was 100%, effectively making it useless.
 | |
| 
 | |
| ### Module configurations
 | |
| 
 | |
| MaxScale 2.1 introduces a new directory for module configurations. This new
 | |
| directory can be used to store module specific configuration files.
 | |
| 
 | |
| Any configuration parameter that accepts a path will also support relative
 | |
| paths. If a relative path is given, the path is interpreted relative to
 | |
| the module configuration directory. The default value is
 | |
| _/etc/maxscale.modules.d_.
 | |
| 
 | |
| For example, the `dbfwfilter` rule files could be stored in
 | |
| _/etc/maxscale.modules.d/my_rules.txt_ and referred to with
 | |
| `rules=my_rules.txt`.
 | |
| 
 | |
| For more details, refer to the documentation of _module_configdir_ in the
 | |
| [Configuration Guide](../Getting-Started/Configuration-Guide.md)
 | |
| 
 | |
| ### 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).
 | |
| 
 | |
| ### MaxAdmin editing mode
 | |
| 
 | |
| MaxAdmin now defaults to Emacs editing mode instead of VIM. To activate
 | |
| with VIM-mode start MaxAdmin with option -i.
 | |
| 
 | |
| ### Named Server Filter
 | |
| The source option can now handle wildcards such as:
 | |
| 192.168.%.%
 | |
| 
 | |
| For more details, read the [Named Server Filter documentation](../Filters/Named-Server-Filter.md).
 | |
| 
 | |
| ## New Features
 | |
| 
 | |
| ### Dynamic configuration
 | |
| 
 | |
| MaxScale 2.1 supports dynamic configuration of servers, monitors and
 | |
| listeners. A set of new commands were added to maxadmin. See output of
 | |
| `maxadmin help` and `maxadmin help { create | destroy | alter | add | remove }`
 | |
| for more details.
 | |
| 
 | |
| #### 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.
 | |
| 
 | |
| - `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.
 | |
| 
 | |
| #### Dynamic listener configuration
 | |
| 
 | |
| New listeners for services can be created and destroyed at runtime. This allows
 | |
| the services to adapt to changes in client traffic.
 | |
| 
 | |
| - `create listener`: Create a new listener
 | |
| - `destroy listener`: Destroy a created listener. The listener will stop
 | |
|   handling client requests and will be removed after the next restart of
 | |
|   MaxScale.
 | |
| 
 | |
| In addition to these commands, individual listeners can now be stopped and started.
 | |
| 
 | |
| - `shutdown listener`: Stop a listener
 | |
| - `restart listener`: Restart a listener
 | |
| 
 | |
| #### Dynamic monitor configuration
 | |
| 
 | |
| New monitors can be created, modified and destroyed at runtime. This allows new
 | |
| clusters to be added into MaxScale by defining new monitors for them. The
 | |
| monitor parameters can also be changed at runtime making them more adaptive and
 | |
| allowing runtime tuning of parameters.
 | |
| 
 | |
| - `create monitor`: Create a new monitor
 | |
| - `destroy monitor`: Destroy a created monitor
 | |
| - `alter monitor`: Alter monitor parameters
 | |
| 
 | |
| ### 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 commands` and
 | |
| they can be executed with `maxadmin call command <module> <name> ARGS...` where
 | |
| _<module>_ is the name of the module and _<name>_ is the name of the
 | |
| command. _ARGS_ is a command 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),
 | |
| [_avrorouter_](../Routers/Avrorouter.md), [_cache_](../Filters/Cache.md) and
 | |
| [_masking_](../Filters/Masking.md) modules 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.
 | |
| 
 | |
| ### Consistent Critical Reads
 | |
| 
 | |
| MaxScale 2.1 comes with a new filter module, _ccrfilter_, which allows critical
 | |
| reads to be routed to master after inserts. This will make reads after inserts
 | |
| consistent while still allowing read scaling.
 | |
| 
 | |
| For more information, refer to the [CCRFilter](../Filters/CCRFilter.md)
 | |
| documentation.
 | |
| 
 | |
| ### Database Cache
 | |
| 
 | |
| A new filter module, _cache_, allows MaxScale to cache the results of SELECT
 | |
| statements. This improves the performance of read-heavy workloads by reducing
 | |
| the work the backend databases have to perform.
 | |
| 
 | |
| For more information, refer to the [Cache](../Filters/Cache.md) documentation.
 | |
| 
 | |
| ### Result set masking
 | |
| 
 | |
| The new _masking_ filter can mask sensitive information from result sets. This
 | |
| is commonly done to hide sensitive information while still allowing the database
 | |
| to efficiently process the actual data.
 | |
| 
 | |
| For more information, refer to the [Masking](../Filters/Masking.md)
 | |
| documentation.
 | |
| 
 | |
| ### Result set limiting
 | |
| 
 | |
| The newly added _maxrows_ filter can restrict the maximum size of a returned
 | |
| result set. This can be used to reduce the negative effects of unexpectedly
 | |
| large result sets. It can also be used to improve security by preventing access
 | |
| to large sets of data with a single query.
 | |
| 
 | |
| For more information, refer to the [Maxrows](../Filters/Maxrows.md)
 | |
| documentation.
 | |
| 
 | |
| ### Insert stream filter
 | |
| 
 | |
| The _insertstream_ filter converts bulk inserts into CSV data streams that are
 | |
| consumed by the backend server via the LOAD DATA LOCAL INFILE mechanism. This
 | |
| leverages the speed advantage of LOAD DATA LOCAL INFILE over regular inserts
 | |
| while also reducing the overall network traffic by condensing the inserted
 | |
| values into CSV.
 | |
| 
 | |
| For more information, refer to the [Insert Stream Filter](../Filters/Insert-Stream-Filter.md)
 | |
| documentation.
 | |
| 
 | |
| ### Galeramon Monitor new option
 | |
| The `set_donor_nodes` option allows the setting of _global variable_ _wsrep_sst_donor_  with a list the preferred donor nodes (among slave ones).
 | |
| 
 | |
| For more details, read the [Galeramon documentation](../Monitors/Galera-Monitor.md).
 | |
| 
 | |
| ### Binlog Server encrypted binlogs
 | |
| The binlog server can optionally encrypt the events received from the master server: the setup requires MariaDB 10.1 master (with Encryption active) and the `mariadb10-compatibility=1` option set.
 | |
| 
 | |
| For more details, read the [Binlogrouter documentation](../Routers/Binlogrouter.md).
 | |
| 
 | |
| ## Bug fixes
 | |
| 
 | |
| [Here is a list of bugs fixed since the release of MaxScale 2.0.4.](https://jira.mariadb.org/browse/MXS-951?jql=project%20%3D%20MXS%20AND%20issuetype%20%3D%20Bug%20AND%20resolution%20in%20(Fixed%2C%20Done)%20AND%20fixVersion%20%3D%202.1.0%20AND%20fixVersion%20!%3D%202.0.1%20AND%20fixVersion%20!%3D%202.0.2%20AND%20fixVersion%20!%3D%202.0.3%20AND%20fixVersion%20!%3D%202.0.4)
 | |
| 
 | |
| * [MXS-1025](https://jira.mariadb.org/browse/MXS-1025) qc_sqlite always reports " Statement was parsed, but not classified"
 | |
| * [MXS-977](https://jira.mariadb.org/browse/MXS-977) MaxAdmin show monitor output missing formatting
 | |
| * [MXS-951](https://jira.mariadb.org/browse/MXS-951) Using utf8mb4 on galera hosts stops maxscale connections
 | |
| * [MXS-889](https://jira.mariadb.org/browse/MXS-889) "Ungrade Test" Jenkins job fails with CeentOS/RHEL 5 and SLES11
 | |
| * [MXS-887](https://jira.mariadb.org/browse/MXS-887) create_env Jenkin job fails
 | |
| * [MXS-873](https://jira.mariadb.org/browse/MXS-873) Changing server status via maxadmin is not atomic
 | |
| * [MXS-832](https://jira.mariadb.org/browse/MXS-832) Problem with Regex filter as readconnroute doesn't wait for complete packets
 | |
| * [MXS-831](https://jira.mariadb.org/browse/MXS-831) new_master event not triggered by galeramon
 | |
| * [MXS-828](https://jira.mariadb.org/browse/MXS-828) Remove "Syslog logging is disabled." to stdout when starting without syslog
 | |
| * [MXS-825](https://jira.mariadb.org/browse/MXS-825) --execdir option does not work
 | |
| * [MXS-805](https://jira.mariadb.org/browse/MXS-805) Server weights don't work with LEAST_BEHIND_MASTER
 | |
| * [MXS-804](https://jira.mariadb.org/browse/MXS-804) Grants for user@IP/Netmask doesn't work
 | |
| * [MXS-799](https://jira.mariadb.org/browse/MXS-799) fatal signal 11 when socket could not be opened
 | |
| * [MXS-769](https://jira.mariadb.org/browse/MXS-769) Malloc return value must be checked.
 | |
| * [MXS-711](https://jira.mariadb.org/browse/MXS-711) All service ports use the same user data
 | |
| * [MXS-650](https://jira.mariadb.org/browse/MXS-650) Connection attempt w/o SSL to SSL service gives confusing error
 | |
| * [MXS-626](https://jira.mariadb.org/browse/MXS-626) Don't log anything to maxlog until it is known whether that is wanted.
 | |
| * [MXS-590](https://jira.mariadb.org/browse/MXS-590) MaxScale doesn't log an error when .secrets file is not owned by current user
 | |
| * [MXS-586](https://jira.mariadb.org/browse/MXS-586) Tee filter hangs when using range
 | |
| * [MXS-576](https://jira.mariadb.org/browse/MXS-576) Maxscale does not generate warning/error if incorrect values is set for persistpoolmax
 | |
| * [MXS-397](https://jira.mariadb.org/browse/MXS-397) Unsafe handling of dcb_readqueue
 | |
| * [MXS-390](https://jira.mariadb.org/browse/MXS-390) Lack of checks of dynamic memory allocation
 | |
| * [MXS-350](https://jira.mariadb.org/browse/MXS-350) Return value of realloc must not be assigned to provided pointer.
 | |
| * [MXS-348](https://jira.mariadb.org/browse/MXS-348) Incorrect use of strncat
 | |
| * [MXS-253](https://jira.mariadb.org/browse/MXS-253) Use of strncpy is dangerous
 | |
| * [MXS-126](https://jira.mariadb.org/browse/MXS-126) debug assert in TEE filter test
 | |
| 
 | |
| ## 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).
 | 
