The latest version of MySQL Server, 8.3, has been available as a General Availability (GA) release for a while. And in case you have missed it, here is a brief recap of the newly available features and enhancements alongside some deprecated and removed functionality. Without further ado, let’s take a closer look.
New features in MySQL 8.3.0
- The format of global transaction identifiers (GIDs) used in MySQL Replication and Group Replication was extended in order to enable the identification of transaction groups. It is now possible to assign a unique name to GTIDs belonging to a specific transaction group.
- It is now possible to choose between 2 versions of the JSON output format used by EXPLAIN FORMAT=JSON statements. Now it’s done via the explain_json_format_version server system variable, which was also included in this release.
- DDL and DCL statement tracking was added for group_replication_set_as_primary().
- The introduced SASL-based LDAP authentication allows Windows clients to use GSSAPI/Kerberos alongside the authentication_ldap_sasl_client plugin for authentication purposes.
- The binlog_transaction_dependency_tracking server system variable was deprecated in MySQL 8.2.0. In preparation for the removal of the said variable, its default value is now WRITESET.
- Data-masking components added support for specifying a dedicated schema to store the related internal table and masking functions. Previously, the mysql system schema provided the only storage option. Now, a new read-only variable called component_masking.masking_database enables setting and persisting an alternative schema name at server startup.
- Thread pool connection information was added to the MySQL Performance Schema.
- Two system status variables were introduced to provide information about accesses to the PROCESSLIST table: Deprecated_use_i_s_processlist_count and Deprecated_use_i_s_processlist_last_timestamp.
- The MySQL Enterprise Data Masking and De-Identification component now includes the ability to flush the data on the secondary or replica into memory.
- For better versatility, SET_ANY_DEFINER and ALLOW_NONEXISTENT_DEFINER privileges were added instead of the previously required SET_USER_ID.
To get a more detailed overview of the abovementioned features, refer to the list of newly added features in MySQL 8.3.
Deprecated and removed features in MySQL 8.3.0
- Group Replication recovery no longer depends on writing view change events to the binary log to mark changes in group membership. Instead, when all members of a group are MySQL 8.3.0 or later, they share compressed recovery metadata, and when a new member joins the group, no such event is logged or assigned a GTID.
- A number of MySQL C API functions, which had been deprecated in previous versions of MySQL, were eventually removed.
- A few options and variables related to MySQL Replication had been deprecated in previous versions of MySQL, and were also removed from MySQL 8.3.
- A few options for compiling the server via CMake were found obsolete and removed as well.
- The FLUSH HOSTS statement, which had been deprecated in MySQL 8.0.23, was also removed. To clear the host cache, one can use TRUNCATE TABLE performance_schema.host_cache or mysqladmin flush-hosts instead.
- When global transaction identifiers (GTIDs) are used for replication, transactions that have already been applied are now automatically ignored.
- Using writeset information for conflict detection was found to cause issues with dependency tracking. Because of that, the usage of writesets for conflict checks was limited to cases when row-based logging is in effect. That said, if binlog_transaction_dependency_tracking is set to WRITESET or WRITESET_SESSION, binlog_format must be ROW, whereas MIXED is no longer supported.
For further information, refer to the list of deprecated and removed features in MySQL 8.3.
Bug fixes and improvements
Here is the list of bugs fixed in MySQL 8.3, which is just too hefty to be covered here in detail; we’ll only mention that quite a few of them deal with InnoDB and replication, so you may want to pay some extra attention to that.
Prepare to upgrade
Before upgrading, take note of the following simple yet helpful tips:
- Check MySQL version
- Make sure you have established root access to your MySQL Server
- Back up your databases beforehand, just in case
- Examine the available upgrade paths to make sure yours is supported
- Review the deprecated and removed features; if you are using them, you may want to reconsider upgrading or introduce corresponding changes to your MySQL Server
- Review the deprecated and removed variables to make sure the upgrade does not affect them
- In case you use replication, check the corresponding section
- Take a look at the upgrade best practices, you might find some of them useful
- Last but by no means least, perform your upgrade on a test environment first to verify that everything works correctly, and only then run the upgrade against your production server
For your convenience, here is the detailed official guide on upgrading your MySQL Server.
Level up your MySQL database management with dbForge tools
Finally, after you upgrade your MySQL Server, it might be a good time to upgrade your toolset for database development and management. We’ve got something to suggest in this respect – dbForge for MySQL – a collection of high-end tools that help you be most efficient at your daily database-related tasks.
The most all-encompassing of those is inarguably dbForge Studio for MySQL, a flagship IDE that has every feature you might need, including database design and version control, SQL development, query optimization, visual query building, data management and migration, identification of differences in schemas and table data, administration, test data generation, and much more. It is also worth mentioning that the Studio offers broad compatibility options beyond MySQL proper.
The entire product line for MySQL looks as follows:
- dbForge Studio for MySQL
- dbForge Compare Bundle for MySQL
- dbForge Schema Compare for MySQL
- dbForge Data Compare for MySQL
- dbForge Query Builder for MySQL
- dbForge Data Generator for MySQL
- dbForge Documenter for MySQL
- dbForge Fusion for MySQL
Each of these tools is available for a free 30-day trial, which is a nice chance to explore them and make sure they’ll be the best fit for your daily work. dbForge Studio for MySQL is probably the best place to get started. Other tools have a narrower focus, but you might want to check them out as well.
We’d also love to remind you that if your daily work goes beyond MySQL, you might as well try our multidatabase solution called dbForge Edge, which delivers a wide coverage of database management systems and cloud services, including MariaDB, Microsoft SQL Server, Oracle Database, and PostgreSQL.