MySQL Community Server 8.0.23 has been released [ part 1/2 ]
Posted by: Bjørn Munch
Date: January 18, 2021 08:00AM
Date: January 18, 2021 08:00AM
[ Due to size limitations, the post is split in two. This is part 1. ]
Dear MySQL users,
MySQL Server 8.0.23, a new version of the popular Open Source
Database Management System, has been released. MySQL 8.0.23 is
recommended for use on production systems.
For an overview of what's new in MySQL 8.0, please see
http://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html
For information on installing MySQL 8.0.23 on new servers, please see
the MySQL installation documentation at
http://dev.mysql.com/doc/refman/8.0/en/installing.html
MySQL Server 8.0.23 is available in source and binary form for a number of
platforms from our download pages at
http://dev.mysql.com/downloads/mysql/
MySQL Server 8.0.23 is also available from our repository for Linux
platforms, go here for details:
http://dev.mysql.com/downloads/repo/
Windows packages are available via the Installer for Windows:
http://dev.mysql.com/downloads/installer/
along with .ZIP (no-install) packages for more advanced needs.
8.0.23 also comes with a web installer as an alternative to the full
installer.
The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.
We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:
http://bugs.mysql.com/report.php
The following link lists the changes in the MySQL 8.0 since
the release of MySQL 8.0.22. It may also be viewed
online at
http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html
Enjoy!
[ To be continued ]
Dear MySQL users,
MySQL Server 8.0.23, a new version of the popular Open Source
Database Management System, has been released. MySQL 8.0.23 is
recommended for use on production systems.
For an overview of what's new in MySQL 8.0, please see
http://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html
For information on installing MySQL 8.0.23 on new servers, please see
the MySQL installation documentation at
http://dev.mysql.com/doc/refman/8.0/en/installing.html
MySQL Server 8.0.23 is available in source and binary form for a number of
platforms from our download pages at
http://dev.mysql.com/downloads/mysql/
MySQL Server 8.0.23 is also available from our repository for Linux
platforms, go here for details:
http://dev.mysql.com/downloads/repo/
Windows packages are available via the Installer for Windows:
http://dev.mysql.com/downloads/installer/
along with .ZIP (no-install) packages for more advanced needs.
8.0.23 also comes with a web installer as an alternative to the full
installer.
The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.
We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:
http://bugs.mysql.com/report.php
The following link lists the changes in the MySQL 8.0 since
the release of MySQL 8.0.22. It may also be viewed
online at
http://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html
Enjoy!
Changes in MySQL 8.0.23 (2021-01-18, General Availability) This release adds support for macOS 11 (Big Sur). * Account Management Notes * C API Notes * Compilation Notes * Connection Management Notes * Deprecation and Removal Notes * Optimizer Notes * Performance Schema Notes * Pluggable Authentication * Security Notes * Spatial Data Support * SQL Syntax Notes * X Plugin Notes * Functionality Added or Changed * Bugs Fixed Account Management Notes * Granting the RELOAD privilege enables a user to perform a wide variety of operations. In some cases, it may be desirable for a user to be able to perform only some of these operations. To enable DBAs to avoid granting RELOAD and tailor user privileges more closely to the operations permitted, these new privileges of more limited scope are available: + FLUSH_OPTIMIZER_COSTS: Enables use of the FLUSH OPTIMIZER_COSTS statement. + FLUSH_STATUS: Enables use of the FLUSH STATUS statement. + FLUSH_TABLES: Enables use of the FLUSH TABLES statement. + FLUSH_USER_RESOURCES: Enables use of the FLUSH USER_RESOURCES statement. The new privileges apply only at the global level. For more information, see Privileges Provided by MySQL (https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html), and FLUSH Statement (https://dev.mysql.com/doc/refman/8.0/en/flush.html). The mysql_refresh() C API function performs operations similar to those of various FLUSH statements, but is unaffected by this change. It still requires the RELOAD privilege regardless of the operation for which it is invoked. C API Notes * For some applications, it may be useful to define metadata on a per-query basis. Examples include the URL of the page that produced a query, or extra processing information to be passed with a query for use by a plugin such as an audit plugin or query rewrite plugin. MySQL now supports this capability without the use of workarounds such as specially formatted comments included in query strings: + On the client side, the mysql_bind_param() C API function enables defining query attributes. These attributes apply to the next SQL statement sent to the server for execution. Additionally, the mysql and mysqltest clients have a query_attributes command that enables defining query attributes. + On the server side, a component service provides access to query attributes. A component named query_attributes uses this service to implement a mysql_query_attribute_string() user-defined function (UDF) that enables obtaining attribute values within SQL statements. The query_attributes component is optional but must be installed for the UDF to be available. For more information, see Query Attributes (https://dev.mysql.com/doc/refman/8.0/en/query-attributes.html). Thanks to Facebook for suggesting the idea (and for contributing code, although it was not used). (Bug #27855905, Bug #28686334) Compilation Notes * Thanks to Tzachi Zidenberg, who contributed a patch for compiling MySQL on aarch64 (ARM64). (Bug #31815236, Bug #100664) Connection Management Notes * Selection of the account that matches incoming TCP client connections could be affected by account creation order. To make the matching algorithm more deterministic, matching the host name part of accounts now checks accounts specified using host IP addresses, in a specific order, before attempting to match accounts specified using host names. Host name matching remains unchanged. See Access Control, Stage 1: Connection Verification (https://dev.mysql.com/doc/refman/8.0/en/connection-access.html). Deprecation and Removal Notes * The gen_blacklist() user-defined function is deprecated. Use gen_blocklist() instead, which performs the same term-replacement operation. * Flushing the host cache can be done using any of these methods: + Execute a TRUNCATE TABLE statement that truncates the Performance Schema host_cache table. This requires the DROP privilege for the table. + Execute a FLUSH HOSTS statement. This requires the RELOAD privilege. + Execute a mysqladmin flush-hosts command. This requires the RELOAD privilege. Although those methods are equivalent in effect, granting the RELOAD privilege enables a number of other operations in addition to host cache flushing, which is undesirable from a security standpoint. Granting the DROP privilege for the host_cache table is preferable because it has a more limited scope. Therefore, the FLUSH HOSTS statement is deprecated and will be removed in a future MySQL release. Instead, truncate the host_cache table. mysqladmin flush-hosts previously executed a FLUSH HOSTS statement. Now it attempts to truncate the host_cache table, falling back to FLUSH HOSTS only if the truncate operation fails. Optimizer Notes * Switched the hash table used for hash joins from an unordered multimap to an unordered flat map implemented with a multimap adapter. This change yields the following improvements: + A faster hash table + Less memory usage due to less hash table overhead, less space used for alignment and key/value lengths, and better memory usage with many equal keys; this should also reduce the frequency at which it is necessary to spill to disk + Better memory control by approaching the allowed join buffer size more closely rather than being effectively limited to approximately 2/3 of join_buffer_size, and by making it possible to free old memory when the hash table grows (Bug #99933, Bug #31516149) Performance Schema Notes * Performance Schema macros that previously expanded to dynamic calls now expand to static calls when possible to reduce processing overhead. (Bug #32028160) * Performance overhead of timer code was reduced. This should be of most benefit to workloads with high concurrency using the Performance Schema. Thanks to Georgy Kirichenko for the contribution. (Bug #31960377, Bug #101018) Pluggable Authentication * The MySQL Enterprise Edition SASL LDAP authentication plugin now supports SCRAM-SHA-256 as an authentication method for MySQL clients and servers. SCRAM-SHA-256 is similar to SCRAM-SHA-1 but is more secure. Use of SCRAM-SHA-256 requires an OpenLDAP server built using Cyrus SASL 2.1.27 or higher. See LDAP Authentication Methods (https://dev.mysql.com/doc/refman/8.0/en/ldap-pluggable-authentication.html#ldap-pluggable-authentication-auth-methods). Security Notes * For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 1.1.1i. Issues fixed in the new OpenSSL version are described at https://www.openssl.org/news/cl111.txt and https://www.openssl.org/news/vulnerabilities.html. (Bug #32260610) Spatial Data Support * The new ST_HausdorffDistance() and ST_FrechetDistance() functions return the discrete Fréchet and Hausdorff distances between two geometries, reflecting how similar the geometries are. See Spatial Relation Functions That Use Object Shapes (https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html). SQL Syntax Notes * MySQL now supports invisible columns, which normally are hidden to queries, but can be accessed if explicitly referenced. See Invisible Columns (https://dev.mysql.com/doc/refman/8.0/en/invisible-columns.html). X Plugin Notes * For X Protocol connections using the MYSQL41 authentication method, if the nonce sent by the server was shorter than 20 bytes, the connection logic did not handle it correctly. (Bug #32036194) * If a query that was building up a resultset was killed, X Plugin interpreted this as meaning the server session had been killed, and dropped the connection. The status of a query is now checked separately from the status of the server session. (Bug #31954296) * A deadlock could occur if an X Protocol session attempted to display X Plugin status variables or settings at the same time as another X Protocol session was being released and reset. The situation is now handled appropriately. (Bug #31931873) * If an X Protocol client with a connection to a server remains idle (not sending to the server) for longer than the relevant X Plugin timeout setting (read, write, or wait timeout), X Plugin closes the connection. In the case of a read timeout, the plugin returns a warning notice with the error code ER_IO_READ_ERROR to the client application. From MySQL 8.0.23, X Plugin now also sends a warning notice if a connection is actively closed due to a server shutdown, or by the connection being killed from another client session. In the case of a server shutdown, the warning notice is sent to all authenticated X Protocol clients with open connections, with the ER_SERVER_SHUTDOWN error code. In the case of a killed connection, the warning notice is sent to the relevant client with the ER_SESSION_WAS_KILLED error code, unless the connection was killed during SQL execution, in which case a fatal error is returned with the ER_QUERY_INTERRUPTED error code. Client applications can use the warning notices to display to users, or to analyze the reason for disconnection and decide whether to attempt reconnection to the same server, or to a different server. * For classic MySQL protocol, if an SQL query is using metadata locking or the sleep function, the connection to the server is checked periodically to verify that it is still alive. If not, the query can be stopped so that it does not continue to consume resources. Previously, X Protocol did not carry out these checks, and assumed that the connection was still alive. The check has now been added for X Protocol. Functionality Added or Changed * InnoDB: Performance was improved for the following operations: + Dropping a large tablespace on a MySQL instance with a large buffer pool (>32GBs). + Dropping a tablespace with a significant number of pages referenced from the adaptive hash index. + Truncating temporary tablespaces. The pages of dropped or truncated tablespaces and associated AHI entries are now removed from the buffer pool passively as pages are encountered during normal operations. Previously, dropping or truncating tablespaces initiated a full list scan to remove pages from the buffer pool immediately, which negatively impacted performance. (Bug #31008942, Bug #98869) * InnoDB: The new AUTOEXTEND_SIZE option defines the amount by which InnoDB extends the size of a tablespace when it becomes full, making it possible to extend tablespace size in larger increments. Allocating space in larger increments helps to avoid fragmentation and facilitates ingestion of large amounts of data. The AUTOEXTEND_SIZE option is supported with the CREATE TABLE, ALTER TABLE, CREATE TABLESPACE, and ALTER TABLESPACE statements. For more information, see Tablespace AUTOEXTEND_SIZE Configuration (https://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-autoextend-size.html). An AUTOEXTEND_SIZE size column was added to the INFORMATION_SCHEMA.INNODB_TABLESPACES table. * InnoDB: InnoDB now supports encryption of doublewrite file pages belonging to encrypted tablespaces. The pages are encrypted using the encryption key of the associated tablespace. For more information, see InnoDB Data-at-Rest Encryption (https://dev.mysql.com/doc/refman/8.0/en/innodb-data-encryption.html). * InnoDB: InnoDB atomics code was revised to use C++ std::atomic. * From MySQL 8.0.23, the statement CHANGE MASTER TO is deprecated. The alias CHANGE REPLICATION SOURCE TO should be used instead. The parameters for the statement also have aliases that replace the term MASTER with the term SOURCE. For example, MASTER_HOST and MASTER_PORT can now be entered as SOURCE_HOST and SOURCE_PORT. The START REPLICA | SLAVE statement's parameters MASTER_LOG_POS and MASTER_LOG_FILE now have aliases SOURCE_LOG_POS and SOURCE_LOG_FILE. The statements work in the same way as before, only the terminology used for each statement has changed. A deprecation warning is issued if the old versions are used. A new status variable, Com_change_replication_source, has been added as an alias for the Com_change_master status variable. Both the old and new version of the statement update both the old and new version of the status variable. The server rewrites all CHANGE MASTER TO statements as CHANGE REPLICATION SOURCE TO statements in the query log. The same is done for the statements START SLAVE, STOP SLAVE, SHOW SLAVE STATUS, SHOW SLAVE HOSTS and RESET SLAVE. The event name for the CHANGE MASTER TO statement is set to statement/sql/change_replication_source in the statement history table. (Bug #32145023) * When invoked with the --all-databases option, mysqldump now dumps the mysql database first, so that when the dump file is reloaded, any accounts named in the DEFINER clause of other objects will already have been created. (Bug #32141046) * Some overhead for disabled Performance Schema and LOCK_ORDER tool instrumentation was identified and eliminated. (Bug #32105698) * For BLOB and TEXT columns that have a default value expression, the INFORMATION_SCHEMA.COLUMNS table and SHOW COLUMNS statement now display the expression. (Bug #31856459) * CRC calculations for binlog checksums are faster on ARM platforms. Thanks to Krunal Bauskar for the contribution. (Bug #99118, Bug #31101633, Bug #32163391) * MySQL Server's asynchronous connection failover mechanism now supports Group Replication topologies, by automatically monitoring changes to group membership and distinguishing between primary and secondary servers. When you add a group member to the source list and define it as part of a managed group, the asynchronous connection failover mechanism updates the source list to keep it in line with membership changes, adding and removing group members automatically as they join or leave. The new asynchronous_connection_failover_add_managed() and asynchronous_connection_failover_add_managed() UDFs are used to add and remove managed sources. The connection is failed over to another group member if the currently connected source goes offline, leaves the group, or is no longer in the majority, and also if the currently connected source does not have the highest weighted priority in the group. For a managed group, a source's weight is assigned depending on whether it is a primary or a secondary server. So assuming that you set up the managed group to give a higher weight to a primary and a lower weight to a secondary, when the primary changes, the higher weight is assigned to the new primary, so the replica changes over the connection to it. This function also applies to single (non- managed) servers, so the connection is now failed over if another source server is available that has a higher weighted priority. * Replication channels can now be set to assign a GTID to replicated transactions that do not already have one, using the ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS option of the CHANGE REPLICATION SOURCE TO statement. This feature enables replication from a source that does not use GTID-based replication, to a replica that does. For a multi-source replica, you can have a mix of channels that use ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS, and channels that do not. The GTID can include the replica's own server UUID or a server UUID that you assign to identify transactions from different sources. Note that a replica set up with ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS on any channel cannot be promoted to replace the replication source server in the event that a failover is required, and a backup taken from the replica cannot be used to restore the replication source server. The same restriction applies to replacing or restoring other replicas that use ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS on any channel. The GTID set (gtid_executed) from a replica set up with ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS is nonstandard and should not be transferred to another server, or compared with another server's gtid_executed set. * For a multithreaded replica (where slave_parallel_workers is greater than 0), setting slave_preserve_commit_order=1 ensures that transactions are executed and committed on the replica in the same order as they appear in the replica's relay log. Each executing worker thread waits until all previous transactions are committed before committing. If a worker thread fails to execute a transaction because a possible deadlock was detected, or because the transaction's execution time exceeded a relevant wait timeout, it automatically retries the number of times specified by slave_transaction_retries before stopping with an error. Transactions with a non-temporary error are not retried. The replication applier on a multithreaded replica has always handled data access deadlocks that were identified by the storage engines involved. However, some other types of lock were not detected by the replication applier, such as locks involving access control lists (ACLs) or metadata locking (for example, FLUSH TABLES WITH READ LOCK statements). This could lead to three-actor deadlocks with the commit order locking, which could not be resolved by the replication applier, and caused replication to hang indefinitely. From MySQL 8.0.23, deadlock handling on multithreaded replicas that preserve the commit order has been enhanced to mitigate these types of deadlocks. The deadlocks are not specifically resolved by the replication applier, but the applier is aware of them and initiates automatic retries for the transaction, rather than hanging. If the retries are exhausted, replication stops in a controlled manner so that the deadlock can be resolved manually. * The use of the system variables master_info_repository and relay_log_info_repository is now deprecated, and a warning message is issued if you attempt to set them or read their values. The system variables will be removed in a future release. These system variables were used to specify whether the replica's connection metadata repository and applier metadata repository were written to an InnoDB table in the mysql system database, or to a file in the data directory. The FILE setting was already deprecated in a previous release, and tables are the default for the replication metadata repositories in MySQL 8.0. * The new temptable_max_mmap variable defines the maximum amount of memory the TempTable storage engine is permitted to allocate from memory-mapped temporary files before it starts storing data to InnoDB internal temporary tables on disk. A setting of 0 disables allocation of memory from memory-mapped temporary files. For more information, see Internal Temporary Table Use in MySQL (https://dev.mysql.com/doc/refman/8.0/en/internal-temporary-tables.html).
[ To be continued ]
Subject
Views
Written By
Posted
MySQL Community Server 8.0.23 has been released [ part 1/2 ]
4742
January 18, 2021 08:00AM
Sorry, you can't reply to this topic. It has been closed.
Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.