This section summarizes what has been added to, deprecated in, and removed from MySQL 8.3. A companion section lists MySQL server options and variables that have been added, deprecated, or removed in MySQL 8.3; see Section 1.4, “Server and Status Variables and Options Added, Deprecated, or Removed in MySQL 8.3”.
The following features have been added to MySQL 8.3:
MySQL Replication: tagged GTIDs. The format of global transaction identifiers (GIDs) used in MySQL Replication and Group Replication has been extended to enable identification of groups of transactions, making it possible to assign a unique name to the GTIDs which belong to a specific group of transactions. For example, transactions containing data operations can easily be distinguished from those arising from administrative operations simply by comparing their GTIDs.
The new GTID format is
TAGis a string of up to 8 characters, which is enabled by setting the value of the
gtid_nextsystem variable to
AUTOMATIC:, added in this release (see the description of the variable for tag format and other information). This tag persists for all transactions originating in the current session (unless changed using
SET gtid_next), and is applied at commit time for such transactions, or, when using Group Replication, at certification time. It is also possible to set
to set the UUID of a single transaction to an arbitrary value, along with assigning it a custom tag. The assignments of
NUMBERare otherwise unchanged from previous MySQL releases. In either case, the user is responsible for making sure that the tag is unique to a given replication topology.
format for GTIDs continues to be supported unchanged, as implemented in previous versions of MySQL; changes to existing replication setups using GTIDs are not required.
requires a new
TRANSACTION_GTID_TAGprivilege which is added in this release; this is true both on the originating server as well as for the
PRIVILEGE_CHECKS_APPLIERfor the replica applier thread. This also means that an administrator can now restrict the use of
to a desired set of MySQL users or roles so that that only those users related to a given data or operational domain can commit new transactions with assigned tags.
When upgrading from a previous version of MySQL to MySQL 8.3, any user accounts or roles which already have the
BINLOG_ADMINprivilege are automatically granted the
For more information, see the descriptions of the
gtid_nextsystem variable and the
TRANSACTION_GTID_TAGprivilege, as well as Section 19.1.4, “Changing GTID Mode on Online Servers”.
EXPLAIN FORMAT=JSON format versioning. It is now possible to choose between 2 versions of the JSON output format used by
EXPLAIN FORMAT=JSONstatements using the
explain_json_format_versionserver system variable introduced in this release. Setting this variable to
1causes the server to use Version 1, which is the linear format which was always used for output from such statements in MySQL 8.2 and earlier. This is the default value and format in MySQL 8.3. Setting
2causes the Version 2 format to be used; this JSON output format is based on access paths, and is intended to provide better compatibility with future versions of the MySQL Optimizer.
See Obtaining Execution Plan Information, for more information and examples.
DDL and DCL statement tracking for group_replication_set_as_primary().
group_replication_set_as_primary()now waits for the following statements to complete before a new primary is elected:
These are in addition to those statements added in MySQL 8.1 or otherwise already supported in this regard. For more information, including a listing of all such statements supported in MySQL 8.3, see the description of the
SASL-based LDAP authentication on Windows. On Microsoft Windows, the server plugin for SASL-based LDAP authentication is now supported. This means that Windows clients can now use GSSAPI/Kerberos for authenticating with the
For more information, see SASL-Based LDAP Authentication.
Change in binlog_transaction_dependency_tracking default value. The
binlog_transaction_dependency_trackingserver system variable was deprecated in MySQL 8.2.0. In preparation for the eventual removal of this variable, its default value is now
WRITESET. There are no plans to replace this variable or its functionality, which is expected later to be made internal to the server.
MySQL Enterprise Data Masking and De-Identification. Data-masking components added support for specifying a dedicated schema to store the related internal table and masking functions. Previously, the
mysqlsystem schema provided the only storage option. The new
component_masking.masking_databaseread-only variable enables setting and persisting an alternative schema name at server startup.
Thread pool plugin connection information. Added thread pool connection information to the MySQL Performance Schema, as follows:
tp_connectionstable, with information about each thread pool connection.
Added the following columns to the
Added the following columns to the
For more information, see Section 7.6.3, “MySQL Enterprise Thread Pool”, and Section 29.12.16, “Performance Schema Thread Pool Tables”.
Information Schema PROCESSLIST table usage. Although the
INFORMATION_SCHEMA.PROCESSLISTtable was deprecated in MySQL 8.0.35 and 8.2.0, interest remains in tracking its usage. This release adds two system status variables providing information about accesses to the
PROCESSLISTtable, listed here:
Deprecated_use_i_s_processlist_countprovides a count of the number of references to the
PROCESSLISTtable in queries since the server was last started.
Deprecated_use_i_s_processlist_last_timestampstores the time the
PROCESSLISTtable was last accessed. This is a timestamp value (number of microseconds since the Unix Epoch).
Flushing of data masking dictionaries. The MySQL Enterprise Data Masking and De-Identification component now includes the ability to flush the data on the secondary or replica into memory. This can be done in either of the ways described here:
A flush can be performed by the user at any time using the
masking_dictionaries_flush()function added in this release.
The component can be configured to flush the memory periodically, leveraging the Scheduler component, by setting the new
component_masking.dictionaries_flush_interval_secondssystem variable to an appropriate value.
For more information, see Section 8.5, “MySQL Enterprise Data Masking and De-Identification”, and the descriptions of these items.
The following features are deprecated in MySQL 8.3 and may be removed in a future series. Where alternatives are shown, applications should be updated to use them.
For applications that use features deprecated in MySQL 8.3 that have been removed in a later MySQL version, statements may fail when replicated from a MySQL 8.3 source to a replica running a later version, or may have different effects on source and replica. To avoid such problems, applications that use features deprecated in 8.3 should be revised to avoid them and use alternatives when possible.
Group Replication recovery metadata. Group Replication recovery no longer depends on writing of view change events to the binary log to mark changes in group membership; instead, when all members of a group are MySQL version 8.3.0 or later, members share compressed recovery metadata, and no such event is logged (or assigned a GTID) when a new member joins the group.
Recovery metadata includes the GCS view ID,
GTID_SETof certified transactions, and certification information, as well as a list of online members.
View_change_log_eventno longer plays a role in recovery, the
group_replication_view_change_uuidsystem variable is no longer needed, and so is now deprecated; expect its removal in a future MySQL release. You should be aware that no replacement or alternative for this variable or its functionality is planned, and develop your applications accordingly.
The following items are obsolete and have been removed in MySQL 8.3. Where alternatives are shown, applications should be updated to use them.
For MySQL 8.2 applications that use features removed in MySQL 8.3, statements may fail when replicated from a MySQL 8.2 source to a MySQL 8.3 replica, or may have different effects on source and replica. To avoid such problems, applications that use features removed in MySQL 8.3 should be revised to avoid them and use alternatives when possible.
C API functions removed. The following MySQL C API functions were deprecated in previous versions of MySQL, and have now been removed:
SELECT * FROMinstead. (This is roughly equivalent to executing the statement in the mysql client after starting it with the
char *defmember of the
MYSQL_FIELDstructure was used by this function only, and has also been removed.
Due to the removal of this function, the mysqladmin flush-threads command has also been removed.
mysql_shutdown()was deprecated in MySQL 8.0; the remainder of the functions listed were deprecated in MySQL 5.7.11.
Due to these changes, the MySQL C API library version is raised from 22.1 to 23.0.
Obsolete replication options and variables. A number of options and variables relating to MySQL Replication were deprecated in previous versions of MySQL, and have been removed from MySQL 8.3. Attempting to use any of these now causes the server to raise a syntax error. These options and variables are listed here:
--slave-rows-search-algorithms: The algorithm used by the replication applier to look up table rows when applying updates or deletes is now always
HASH_SCAN,INDEX_SCAN, and is no longer configurable by the user.
log_bin_use_v1_events: This allowed source servers running MySQL 5.7 and newer to replicate to earlier versions of MySQL which are no longer supported or maintained.
--master-info-repository: The use of files for the applier metadata repository and the connection metadata repository has been superseded by crash-safe tables, and is no longer supported. See Section 184.108.40.206, “Replication Metadata Repositories”.
group_replication_primary_member: No longer needed; check the
MEMBER_ROLEcolumn of the Performance Schema
--skip-host-cache server option. This option has been removed; start the server with
--host-cache-size=0instead. See Section 220.127.116.11, “DNS Lookups and the Host Cache”.
--innodb and --skip-innodb server options. These options have been removed. The
InnoDBstorage engine is always enabled, and it is not possible to disable it.
--character-set-client-handshake and --old-style-user-limits server options. These options were formerly used for compatibility with very old versions of MySQL which are no longer supported or maintained, and thus no longer serve any useful purpose.
Obsolete CMake options. The following options for compiling the server with CMake were obsolete and have been removed:
DOWNLOAD_BOOST_TIMEOUT: These options are no longer necessary; MySQL now includes and uses a bundled version of Boost when compiling from source.
GTID-based replication and IGNORE_SERVER_IDS. When global transaction identifiers (GTIDs) are used for replication, transactions that have already been applied are automatically ignored. This means that
IGNORE_SERVER_IDSis not compatible with GTID mode. If
CHANGE REPLICATION SOURCE TOwith a non-empty
IGNORE_SERVER_IDSlist is rejected with an error. Likewise, if any existing replication channel was created with a list of server IDs to be ignored,
SET gtid_mode=ONis also rejected. Before starting GTID-based replication, check for and clear any ignored server ID lists on the servers involved; you can do this by checking the output from
SHOW REPLICA STATUS. In such cases, you can clear the list by issuing
CHANGE REPLICATION SOURCE TOwith an empty list of server IDs, as shown here:
CHANGE REPLICATION SOURCE TO IGNORE_SERVER_IDS = ();
See Section 18.104.22.168, “Restrictions on Replication with GTIDs”, for more information.
Binary log transaction dependency tracking and logging format. Using writeset information for conflict detection has been found to cause issues with dependency tracking; for this reason, we now limit the usage of writesets for conflict checks to when row-based logging is in effect.