MariaDB数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB 10.4.6 发布了,MariaDB 10.4.6 是一个 GA 稳定版。MariaDB主要由开源社区在维护,采用 GPL 授权许可。
发布日期: 2019.06.18
MariaDB 10.4 是 MariaDB 10.3 的演进版,带来了几个全新功能,并且具有 MySQL 的后端和重新实现的功能。
Authentication
- See Authentication from MariaDB 10.4 for an overview of the changes.
- The unix_socket authentication plugin is now default on Unix-like systems, which is a major change to authentication in MariaDB (MDEV-12484)
- User password expiry (MDEV-7597)
- Account Locking (MDEV-13095)
- The obsolete mysql.host table is no longer created (MDEV-15851)
- Much faster privilege checks for MariaDB setups with many user accounts or many database grants (MDEV-15649)
- mysql.user table is retired. User accounts and global privileges are now stored in the mysql.global_priv table (MDEV-17658)
- SET PASSWORD support for ed25519 and other authentication plugins (MDEV-12321)
InnoDB
- Added instant DROP COLUMN and changing of the order of columns (MDEV-15562)
- Reduced redo log volume for undo tablespace initialization (MDEV-17138)
- Removed crash-upgrade support for pre-10.2.19 TRUNCATE TABLE (MDEV-13564)
- Added key rotation for innodb_encrypt_log (MDEV-12041)
- Implement innodb_checksum_algorithm=full_crc32 (MDEV-12026)
- More Instant VARCHAR extension (MDEV-15563)
- Instant collation or charset changes for non-indexed columns (MDEV-15564)
- Use in-memory PK filters built from range index scans (MDEV-16188)
Optimizer
- Implementation of the optimizer trace, one can enable the optimizer trace by enabling the system variable optimizer_trace (MDEV-6111)
- Engine Independent Table Statistics is now enabled by default; new default values are use_stat_tables=PREFERABLY_FOR_QUERIES and optimizer_use_condition_selectivity=4 (MDEV-15253)
- Two new values for the variable use_stat_tables:
COMPLEMENTARY_FOR_QUERIES
andPREFERABLY_FOR_QUERIES
(MDEV-17255) - Histograms are now collected by default (MDEV-18608).
- analyze_sample_percentage variable added. The default value is 100 (
ANALYZE
will use the whole table), but one can also set analyze to only use a sample of table data to collect the statistics.
- Two new values for the variable use_stat_tables:
- Push conditions into materialized IN subqueries (MDEV-12387)
- The optimizer switch flag
optimize_join_buffer_size
now defaults toon
(MDEV-17903) - New optimizer switch flags
rowid_filter
andcondition_pushdown_from_having
Syntax
- System-versioning extended with support for application-time periods.
- Support of brackets (parentheses) for specifying precedence in UNION/EXCEPT/INTERSECT operations (MDEV-11953)
- New FLUSH SSL command to reload SSL certificates without server restart (MDEV-16266)
- New
CAST
target —CAST(x AS INTERVAL DAY_SECOND(N))
(MDEV-17776) IF NOT EXISTS
clause added to INSTALL PLUGIN andIF EXISTS
clause added to UNINSTALL PLUGIN and UNINSTALL SONAME (MDEV-16294)
Variables
For a list of all new variables, see System Variables Added in MariaDB 10.4 and Status Variables Added in MariaDB 10.4.
- Added to the tcp_nodelay system variable (MDEV-16277)
- Removed the Innodb_pages0_read status variable (MDEV-15705).
- New sql-mode setting,
TIME_ROUND_FRACTIONAL
(MDEV-16991) - New variable gtid_cleanup_batch_size for determining how many old rows must accumulate in the mysql.gtid_slave_pos table before a background job will be run to delete them.
- The default for eq_range_index_dive_limit is now
200
(previously0
) (MDEV-18551) - core_file on Windows now defaults to
ON
(MDEV-18439)
Galera
Galera 4 version 26.4.0 has been added to MariaDB 10.4
Upgrading to Galera 4 version 26.4.0
Rolling upgrades from earlier 10.3 (or older) MariaDB releases are not supported in this release. For upgrading a 10.3-based cluster, any applications accessing the cluster should be stopped and the cluster shut down. Then for each cluster node the following procedure should be carried out:
- Install MariaDB 10.4.2 and Galera 4 version 26.4.0
- Start MariaDB server, but make sure it is not trying to connect to the cluster by configuring
wsrep_provider=none
- While MariaDB server is running, run
mysql_upgrade
for the server - Stop MariaDB server
After that, you can bootstrap the cluster. If there was ongoing application load on the cluster during the initial cluster shutdown phase, you should make sure to bootstrap the cluster with the node which was shutdown last.
We are working on rolling upgrade support for the final GA version of MariaDB 10.4. With a rolling upgrade, a live cluster can be upgraded node by node, and the cluster is able to process application load when having a hybrid setup of 10.3 and 10.4 nodes.
New Features in Galera 26.4.0
The ‘mysql’ schema contains new Galera replication related tables:
wsrep_cluster
wsrep_cluster_members
wsrep_streaming_log
End users may read but not modify these tables.
The new streaming replication feature allows replicating transactions of unlimited size. With streaming replication, a cluster is replicating a transaction in small fragments during transaction execution. This transaction fragmenting is controlled by two new configuration variables:
wsrep_trx_fragment_unit (bytes, rows, statements)
defines the metrics for how to measure transaction size limit for fragmenting. Possible values are:bytes
: transaction’s binlog events buffer size in bytesrows
: number of rows affected by the transactionstatements
: number of SQL statements executed in the multi-statement transaction
wsrep_trx_fragment_size
defines the limit for fragmenting. When a transaction’s size, in terms of the configured fragment unit, has grown over this limit, a new fragment will be replicated.
Transactions replicated through galera replication will now process the commit phase using MariaDB's group commit logic. This will affect transaction throughput, especially when binary logging is enabled in the cluster.
Limitations in Galera 26.4.0
- Upgrading from 10.3 version 25.3.25 to 10.4 version 26.4.0 must happen on a stopped cluster. Only after all nodes have been upgraded to MariaDB 10.4 and Galera 26.4.0 can the cluster be started up
- Splitting transactions of
LOAD DATA
execution will conflict with streaming replication, and should not be used if streaming replication is configured
General
- Crash safe Aria-based system tables (MDEV-16421)
- Added Linux abstract socket support (MDEV-15655)
- Enabled C++11 (MDEV-16410)
- Performance improvements in Unicode collations (MDEV-17534, MDEV-17511, MDEV-17502, MDEV-17474)
- User data type plugins (MDEV-4912, in progress)
- Improvements with SQL standard INTERVAL support to help functions TIMESTAMP() and ADDTIME() return more predictable results.
- Historically, MariaDB uses the TIME data type for both "time of the day" values and "duration" values. In the first meaning the natural value range is from '00:00:00' to '23:59:59.999999', in the second meaning the range is from '-838:59:59.999999' to '+838:59:59.999999'.
- To remove this ambiguity and for the SQL standard conformance we plan to introduce a dedicated data type INTERVAL that will be able to store values in the range at least from '-87649415:59:59.999999' to '+87649415:59:59.999999', which will be enough to represent the time difference between TIMESTAMP'0001-01-01 00:00:00' and TIMESTAMP'9999-12-31 23:59:59.999999'.
- As a first step we support this range of values for intermediate calculations when TIME-alike string and numeric values are used in INTERVAL (i.e. duration) context, e.g. as the second argument of SQL functions TIMESTAMP(ts,interval) and ADDTIME(ts,interval), so the following can now be calculated:
- SELECT ADDTIME(TIMESTAMP'0001-01-01 00:00:00', '87649415:59:59.999999');
- -> '9999-12-31 23:59:59.999999'
- SELECT TIMESTAMP(DATE'0001-01-01', '87649415:59:59.999999')
- -> '9999-12-31 23:59:59.999999'
- SELECT ADDTIME(TIME'-838:59:59.999999', '1677:59:59.999998');
- -> '838:59:59.999999'
- Support for window UDF functions via the new method x_remove (MDEV-15073)
- Json service for plugins (MDEV-5313)
- Change in behavior for FLUSH TABLES (MDEV-5336).
- The JSON_VALID function is automatically used as a CHECK constraint for the JSON data type alias in order to ensure that a valid json document is inserted (MDEV-13916)
- MariaDB Named Commands (MDEV-17591)
有关 MariaDB 10.4.6 所做更改的完整列表,请参阅更新日志。
80%的人都看过的文章
- MySQL之经典SQL语句大全
- MySQL常用工具选择和建议
- MySQL 8.0.13(GA) 发布,新增新特性【下载】
- 数据库管理系统MariaDB 10.3.10发布【下载】
- phpMyAdmin 4.9.0.1 发布
- 11月份数据库排名:Oracle、MySQL迎来寒冬
- 关于MySQL数据库的10个技巧
- PHP网站在Linux服务器上安全配置加固防护方法