What's New in MariaDB Enterprise Server 10.5?

Overview

MariaDB Enterprise Server 10.5 introduces the new features listed below.

Notable Features

Enterprise ColumnStore Storage Engine

The ColumnStore storage engine is a columnar storage engine that provides distributed, columnar storage for scalable analytical processing and smart transactions.

MariaDB Enterprise Server 10.5 includes an enterprise version of the ColumnStore storage engine as a plugin:

  • It includes MariaDB Enterprise ColumnStore 5, which has many improvements.

  • The installation process has been massively simplified.

  • The multi-node implementation has been completely rebuilt to use a REST API for orchestration.

  • See What's New in MariaDB Enterprise ColumnStore 5? for more details.

Other Features

Embracing the MariaDB Name

MariaDB Enterprise Server 10.5 uses the "MariaDB" name in more places:

  • It uses MariaDB in many error messages that previously referred to MySQL.

  • It uses DBD::MariaDB for bundled Perl scripts that previously used DBD::mysql.

  • It uses new MariaDB-based names as the primary names for many executables. The old names are still supported for backward compatibility using symbolic links. The new MariaDB-based names were first introduced in MariaDB Enterprise Server 10.4. However, in that version, the old names were still the primary names for the executables, and the new names were supported using symbolic links. See below for the new MariaDB-based names:

    Old Executable Name

    New Executable Name

    mysql

    mariadb

    mysqld

    mariadbd

    mariabackup

    mariadb-backup

    mysql_plugin

    mariadb-plugin

    mysql_upgrade

    mariadb-upgrade

    mysql_waitpid

    mariadb-waitpid

    mysqladmin

    mariadb-admin

    mysqlbinlog

    mariadb-binlog

    mysqlcheck

    mariadb-check

    mysqldump

    mariadb-dump

    mysqlimport

    mariadb-import

    mysqlshow

    mariadb-show

    mysqlslap

    mariadb-slap

    mysql_client_test

    mariadb-client-test

    mysql_client_test_embedded

    mariadb-client-test-embedded

    mysql_config

    mariadb-config

    mysql_convert_table_format

    mariadb-convert-table-format

    mysql_embedded

    mariadb-embedded

    mysql_find_rows

    mariadb-find-rows

    mysql_fix_extensions

    mariadb-fix-extensions

    mysql_install_db

    mariadb-install-db

    mysql_ldb

    mariadb-ldb.

    mysql_secure_installation

    mariadb-secure-installation

    mysql_setpermission

    mariadb-setpermission

    mysql_tzinfo_to_sql

    mariadb-tzinfo-to-sql

    mysql_upgrade_service

    mariadb-upgrade-service

    mysql_upgrade_wizard

    mariadb-upgrade-wizard

    mysqld_multi

    mariadbd-multi

    mysqld_safe

    mariadbd-safe

    mysqld_safe_helper

    mariadbd-safe-helper

    mysqldumpslow

    mariadb-dumpslow

    mysqlhotcopy

    mariadb-hotcopy

    mysqltest

    mariadb-test

    mysqltest_embedded

    mariadb-test-embedded

Packaging

MariaDB Enterprise Server 10.5 includes some packaging improvements:

  • It includes a new mariadb-conv command-line tool to encode/decode MariaDB-encoded file system names.

  • Binary tarball packages have the following changes:

    • Embedded server (libmysqld) has been removed.

    • Debug symbols have been stripped from non-server binaries.

    • The server binary (mariadbd) retains its debug symbols, so that stack traces contain readable function names.

    • Binary tarball size has been reduced from over 1 GB to around 300 MB.

  • It removes the TokuDB storage engine from packages.

  • It removes the Cassandra storage engine from packages.

  • It removes support for RHEL6 and CentOS 6.

InnoDB Storage Engine

The InnoDB storage engine is an ACID-compliant storage engine that is very performant and reliable for general purpose transactional workloads.

MariaDB Enterprise Server 10.5 includes many significant improvements to the InnoDB storage engine:

  • It implements a new thread pool for InnoDB background tasks, which allows for InnoDB to use system resources more efficiently.

  • It reduces semaphore contention in several areas to help the system perform better under high concurrency:

    • It reduces semaphore contention when accessing the buffer pool.

    • It removes the ability to configure multiple buffer pool instances, since it does not reduce contention.

    • It reduces semaphore contention when executing DROP TABLE statements.

    • It uses table metadata locks instead of internal InnoDB semaphores for certain background operations.

    • It adds instrumentation that informs the server's thread pool about semaphore waits, so that the thread pool can let other client connections perform work while a client connection is waiting on a semaphore.

  • It improves performance in several areas:

    • It uses a new InnoDB redo log format that is more efficient.

    • It removes the ability to configure multiple InnoDB redo log files, since it does not help performance.

    • It optimizes access to certain InnoDB page header fields.

    • It optimizes how the change buffer is merged.

    • It optimizes how InnoDB scrubs deleted data.

  • It improves stability in several areas:

    • It improves how InnoDB scrubs deleted data by ensuring that scrubbing operations are properly written to the InnoDB redo log.

    • It receives foreign key metadata from the server, rather than relying on an internal SQL parser.

    • It allows prepared XA transactions to be properly recovered after a client disconnects.

  • It allows the number of InnoDB purge threads to be changed dynamically without a server restart. As a consequence, the innodb_purge_threads system variable can be changed dynamically with the SET GLOBAL statement.

  • It allows the InnoDB redo log to be resized dynamically without a server restart. As a consequence, the innodb_log_file_size system variable can be changed dynamically with the SET GLOBAL statement.

  • It allows the number of InnoDB I/O threads to be changed dynamically without a server restart. As a consequence, the innodb_read_io_threads and innodb_write_io_threads system variables can be changed dynamically with the SET GLOBAL statement.

Spider Storage Engine

The Spider storage engine allows you to build complex and powerful distributed databases using federated and sharded tables.

MariaDB Enterprise Server 10.5 contains several enhancements for the Spider storage engine:

Aria Storage Engine

The Aria storage engine is a crash-safe storage engine that is incredibly fast for read-only workloads.

MariaDB Enterprise Server 10.5 contains several enhancements for the Aria storage engine:

  • It handles the BACKUP STAGE BLOCK_COMMIT statement by blocking commits to Aria tables, which allows for safer backups with MariaDB Backup.

  • It increases the index length limit for Aria tables from 1000 bytes to 2000 bytes.

S3 Storage Engine

MariaDB Enterprise Server 10.5 contains several enhancements to the S3 storage engine:

  • The S3 storage engine allows tables to be archived in S3-compatible storage.

  • Tables can be archived in S3 by executing ALTER TABLE ... ENGINE=S3.

  • After the table has been archived, it becomes read-only.

  • The S3 storage engine supports partitioning.

  • The S3 storage engine supports replication.

Privileges Comparison ES10.4 and ES10.5.8-5

MariaDB Enterprise Server 10.5 adds privileges that allow operations that previously required the SUPER. The following table is a summary of the changes between MariaDB Enterprise Server 10.4 and MariaDB Enterprise Server 10.5.8-5. More specific detail is found in MariaDB Replication, and in MariaDB Reference.

Privilege

Present in ES10.4?

Present in ES10.5.8-5?

Notes

BINLOG ADMIN

no

yes

BINLOG MONITOR

no

yes

  • Legacy REPLICATION CLIENT privilege is an alias for this new privilege, but the capabilities have changed.

  • Unlike legacy REPLICATION CLIENT privilege, BINLOG MONITOR can no longer execute SHOW SLAVE STATUS, SHOW REPLICA STATUS in ES10.5.

  • BINLOG MONITOR allows the user to execute SHOW BINLOG EVENTS statements.

  • BINLOG MONITOR allows the user to execute SHOW BINLOG STATUS statements.

  • BINLOG MONITOR allows the user to execute SHOW BINARY LOGS statements.

  • BINLOG MONITOR allows the user to execute SHOW MASTER STATUS statements.

  • If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.

  • The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later.

BINLOG REPLAY

no

yes

CONNECTION ADMIN

no

yes

FEDERATED ADMIN

no

yes

READ_ONLY ADMIN

no

yes

REPLICA MONITOR

no

yes

  • REPLICA MONITOR is a new privilege in ES10.5.8-5 and was not present in earlier releases.

  • REPLICA MONITOR can execute:

  • If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.

  • The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later.

  • REPLICA MONITOR is an alias for SLAVE MONITOR which is also new in ES10.5.8-5.

REPLICATION CLIENT

yes

no

  • Replaced by BINLOG MONITOR in 10.5. REPLICATION CLIENT can be used as an alias for BINLOG MONITOR but the capabilities for BINLOG MONITOR are different than those of legacy REPLICATION CLIENT. Unlike legacy REPLICATION CLIENT privilege, BINLOG MONITOR can no longer execute SHOW SLAVE STATUS, SHOW REPLICA STATUS in ES10.5. REPLICATION CLIENT as an alias for BINLOG MONITOR:

  • Allows the user to execute SHOW BINLOG EVENTS statements.

  • Allows the user to execute SHOW BINLOG STATUS statements.

  • Allows the user to execute SHOW BINARY LOGS statements.

  • Allows the user to execute SHOW MASTER STATUS statements.

  • If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.

  • The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later.

REPLICATION MASTER ADMIN

no

yes

REPLICATION REPLICA

no

yes

REPLICATION SLAVE

yes

yes

  • Can be used as an alias for REPLICATION REPLICA.

  • In ES10.5 REPLICATION SLAVE can no longer execute SHOW RELAYLOG EVENTS. In ES10.5 versions earlier than ES10.5.8-5, SHOW RELAYLOG EVENTS requires REPLICATION REPLICA ADMIN. In ES10.5.8-5, SHOW RELAYLOG EVENTS requires REPLICA MONITOR.

  • In ES10.5 REPLICATION SLAVE can no longer execute SHOW BINLOG EVENTS. SHOW BINLOG EVENTS requires BINLOG MONITOR.

  • If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.

  • The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later.

REPLICATION REPLICA ADMIN

no

yes

REPLICATION SLAVE ADMIN

no

yes

SET USER

no

yes

  • Allows the user to set the definer of views, triggers, stored procedures, stored functions, and events.

  • Allows the user to view the definer of an object, even if the user account no longer exists.

SLAVE MONITOR

no

yes

  • SLAVE MONITOR is a new privilege in ES10.5.8-5 and was not present in earlier releases.

  • SLAVE MONITOR can execute:

  • If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the SLAVE MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.

  • The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later.

  • SLAVE MONITOR is an alias for REPLICA MONITOR which is also new in ES10.5.8-5.

SUPER

yes

yes

  • The SUPER privilege is present in ES10.4 and ES10.5 but the capabilities have changed. New privileges have been added in ES10.5 to provide finer grained control and reduce the need to grant SUPER privileges.

  • With the addition of the new privileges in ES10.5, SUPER:

    • no longer executes SHOW MASTER STATUS, SHOW BINLOG STATUS, and SHOW BINARY LOGS. Those require BINLOG MONITOR in ES10.5.

    • no longer sets the definer for views, triggers, functions, procedures, and events in ES10.5. Those capabilities require SET USER in ES10.5.

    • no longer ignores the read_only system variable in ES10.5. That capability requires READ ONLY ADMIN in ES10.5

    • no longer kills threads owned by other users and bypass limits on connection and authentication failures. Those capabilities require CONNECTION ADMIN in ES10.5

    • no longer executes CREATE SERVER, ALTER SERVER, DROP SERVER in ES10.5. Those capabilities require FEDERATED ADMIN in ES10.5.

    • no longer executes PURGE BINARY LOGS in ES10.5. PURGE BINARY LOGS requires BINLOG ADMIN in ES10.5.

Privileges Comparison ES10.4 and ES10.5 before ES10.5.8-5

MariaDB Enterprise Server 10.5 adds privileges that allow operations that previously required the SUPER. The following table is a summary of the changes between MariaDB Enterprise Server 10.4 and MariaDB Enterprise Server 10.5 before MariaDB Enterprise Server 10.5.8-5. More specific detail is found in MariaDB Replication, and in MariaDB Privileges Reference.

Privilege

Present in ES10.4?

Present in ES10.5 before ES10.5.8-5?

Notes

BINLOG ADMIN

no

yes

BINLOG MONITOR

no

yes

  • Legacy REPLICATION CLIENT privilege is an alias for this new privilege, but the capabilities have changed.

  • BINLOG MONITOR can no longer execute SHOW SLAVE STATUS, SHOW REPLICA STATUS in ES10.5.

  • BINLOG MONITOR allows the user to execute SHOW BINLOG EVENTS statements.

  • BINLOG MONITOR allows the user to execute SHOW BINLOG STATUS statements.

  • BINLOG MONITOR allows the user to execute SHOW BINARY LOGS statements.

  • BINLOG MONITOR allows the user to execute SHOW MASTER STATUS statements.

  • If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.

  • The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later.

BINLOG REPLAY

no

yes

CONNECTION ADMIN

no

yes

FEDERATED ADMIN

no

yes

READ_ONLY ADMIN

no

yes

REPLICATION CLIENT

yes

no

  • Replaced by BINLOG MONITOR in 10.5.

  • If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.

  • The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later.

REPLICATION MASTER ADMIN

no

yes

REPLICATION REPLICA

no

yes

  • Added in ES10.5 as an alias for REPLICATION SLAVE

  • If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.

  • The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later..

REPLICATION SLAVE

yes

yes

REPLICATION REPLICA ADMIN

no

yes

REPLICATION SLAVE ADMIN

no

yes

SET USER

no

yes

  • Allows the user to set the definer of views, triggers, stored procedures, stored functions, and events.

  • Allows the user to view the definer of an object, even if the user account no longer exists.

SUPER

yes

yes

  • The SUPER privilege is present in ES10.4 and ES10.5 but the capabilities have changed. New privileges have been added in ES10.5 to provide finer grained control and reduce the need to grant SUPER privileges.

  • With the addition of the new privileges in ES10.5, SUPER:

    • no longer executes SHOW MASTER STATUS, SHOW BINLOG STATUS, and SHOW BINARY LOGS. Those require BINLOG MONITOR in ES10.5.

    • no longer sets the definer for views, triggers, functions, procedures, and events in ES10.5. Those capabilities require SET USER in ES10.5.

    • no longer ignores the read_only system variable in ES10.5. That capability requires READ ONLY ADMIN in ES10.5

    • no longer kills threads owned by other users and bypass limits on connection and authentication failures. Those capabilities require CONNECTION ADMIN in ES10.5

    • no longer executes CREATE SERVER, ALTER SERVER, DROP SERVER in ES10.5. Those capabilities require FEDERATED ADMIN in ES10.5.

    • no longer executes PURGE BINARY LOGS in ES10.5. PURGE BINARY LOGS requires BINLOG ADMIN in ES10.5.

MariaDB Replication

MariaDB Enterprise Server 10.5 improves MariaDB Replication:

  • It allows extended table metadata to be written to the binary log by configuring the binlog_row_metadata system variable.

  • It changes the default parallel replication mode from conservative to optimistic.

  • It renames the REPLICATION CLIENT privilege to BINLOG MONITOR, but it still supports the old name.

  • It allows replication-related operations that previously required the SUPER privilege to the BINLOG MONITOR (formerly REPLICATION CLIENT):

    Privilege

    Newly Granted Operations

    BINLOG MONITOR (formerly REPLICATION CLIENT)

MariaDB Enterprise Cluster

MariaDB Enterprise Server 10.5 improves support for Galera ClusterGalera Cluster:

  • It allows Galera Cluster to be configured to prohibit DDL replication to only the storage engines that support Galera Cluster by configuring the wsrep_strict_ddl system variable.

  • It adds full GTID support to Galera Cluster.

  • It adds an inconsistency voting protocol to mitigate the harm of inconsistencies by choosing very carefully which inconsistent nodes need to abort.

  • It adds support for non-blocking operations when wsrep_OSU_method is set to NBO, including:

  • It adds a "black box" for Galera troubleshooting. The black box holds debug log messages in memory, which can be analyzed in case of a crash.

  • The default value for gcache.size in wsrep_provider_options has been changed to 1 GB.

Temporal Data

MariaDB Enterprise Server 10.5 improves support for Temporal Data Tables:

  • It allows system-versioned tables that are partitioned on an interval of SYSTEM_TIME to be configured with a specific start date and time, which can make partition management more user-friendly.

  • It allows application-time period tables to be configured to prohibit overlapping time periods.

SQL Functionality

MariaDB Enterprise Server 10.5 improves SQL functionality in several areas:

  • It changes the behavior of the DROP TABLE statement to forcefully drop the table, even if the storage engine can't find the table.

  • It changes the behavior of the ANALYZE TABLE statement, so that it no longer flushes the table definition cache, so that it performs better under concurrency.

  • It changes the behavior of the ANALYZE statement to show the time spent checking the WHERE clause.

  • It adds support for INSERT ... RETURNING statements.

  • It adds support for REPLACE ... RETURNING statements.

  • It adds support for the EXCEPT ALL clause in SELECT statements.

  • It adds support for the INTERSECT ALL clause in SELECT statements.

  • It adds support for the CYCLE clause in common table expressions (CTEs).

  • It adds support for COMMENT option for CREATE DATABASE and ALTER DATABASE statements.

  • It adds support for ALTER TABLE IF EXISTS ....

  • It adds support for ALTER TABLE ... RENAME INDEX.

  • It adds support for ALTER TABLE ... RENAME COLUMN.

  • It adds support for defining foreign keys using REFERENCE clauses in column definitions.

  • It adds support for the VISIBLE option in index definitions, which can be needed to import dumps from MySQL.

  • It adds support for the WITHOUT OVERLAP option in index definitions that are defined for application-time period tables.

  • It adds support for the STARTS option for system-versioned tables that are partitioned on an interval of SYSTEM_TIME.

  • It adds support for the JSON_ARRAYAGG() function.

  • It adds support for the JSON_OBJECTAGG() function.

  • It adds support for the RELEASE_ALL_LOCKS() function.

  • It adds support for the OVERLAPS() function.

  • It adds support for a new Data Type API, so that plugins can define custom data types.

  • It adds support for the INET6 data type, which can be used to represent IPv4 and IPv6 addresses.

  • It changes the way that TIMESTAMP, DATETIME, and TIME columns that use the pre-MariaDB 10.0 format are displayed in the output of SHOW CREATE TABLE and DESCRIBE and in the value of the information_schema.COLUMNS.COLUMN_TYPE column. Columns using the older format will have a comment that says /* mariadb-5.3 */.

Security

MariaDB Enterprise Server 10.5 includes several security improvements:

  • It allows a server to be configured to require secure connections by configuring the require_secure_transport system variable.

    • If this mode is enabled, then all TCP connections must use TLS.

    • Local connections that connect using a Unix socket or a named pipe are also allowed.

  • It adds the CONNECTION_TYPE column to the performance_schema.threads table, which can be used to determine which connections are using TLS.

  • It renames the REPLICATION CLIENT privilege to BINLOG MONITOR, but it still supports the old name.

  • It allows replication-related operations that previously required the SUPER privilege to the BINLOG MONITOR (formerly REPLICATION CLIENT):

    Privilege

    Newly Granted Operations

    BINLOG MONITOR (formerly REPLICATION CLIENT)

HashiCorp Vault Encryption Plugin

MariaDB Enterprise Server 10.5 introduces an encryption plugin to support for HashiCorp Vault:

  • It allows HashiCorp Vault to manage encryption keys for data-at-rest encryption.

  • It communicates with the remote KMS using TLS.

  • It supports key rotation.

Information Schema

MariaDB Enterprise Server 10.5 includes several Information Schema improvements:

Thread Pool

MariaDB Enterprise Server 10.5 includes several thread pool improvements:

Protocol

MariaDB Enterprise Server 10.5 includes several protocol improvements:

  • It adds protocol support for the new Data Type API.

  • It adds protocol support for the JSON data type.

  • It adds protocol support for the GEOMETRY data type.

XA Transactions

MariaDB Enterprise Server 10.5 includes some XA transaction improvements:

  • It allows prepared XA transactions to be properly recovered after a client disconnects.

Internals

MariaDB Enterprise Server 10.5 includes some internal improvements:

  • Its internal regular expression library has been upgraded from PCRE to PCRE2.

  • It adds support for a new Data Type API, so that plugins can define custom data types.

For a complete list of changes, see MariaDB Enterprise Server 10.5.4-2 release notes.