Databases 8 min read

What’s New in MySQL 8.1 and 8.0.34? Key Features, Changes, and Deprecations

MySQL 8.1 and 8.0.34, released on July 18, 2023, introduce a mix of innovative features—such as JSON EXPLAIN INTO, enhanced replication controls, TLS certificate enforcement, and new SHOW PARSE_TREE—while also aligning many adjustments with 8.0.34, adding user‑management options, audit enhancements, binary‑log APIs, and a series of deprecations for future versions.

ITPUB
ITPUB
ITPUB
What’s New in MySQL 8.1 and 8.0.34? Key Features, Changes, and Deprecations

New Features in MySQL 8.1 (Innovation Release)

EXPLAIN FORMAT=JSON now supports an INTO option, allowing the JSON output to be stored directly in a user variable.

Client‑side comments are preserved by default; use the --skip-comments option to revert to the previous behavior.

Replication changes: the default SOURCE_RETRY_COUNT is now 10. Combined with the default SOURCE_CONNECT_RETRY of 60 seconds, a replica will wait 60 seconds between reconnection attempts and will try for up to 10 minutes before timing out or failing over.

The group_replication_set_as_primary() function now waits for any ongoing DDL statements to finish before a new primary can be selected.

Version‑specific comment syntax now accepts one‑ or two‑digit major version numbers, enabling five‑ or six‑digit version identifiers.

Shutdown logging is enhanced for the server, plugins, and components, providing richer information for troubleshooting long shutdowns.

Added SHOW PARSE_TREE statement, which displays a SELECT statement’s parse tree in JSON format. Intended for testing and development only.

New system variable tls_certificates_enforced_validation forces certificate validation at server start or when reloading TLS via ALTER INSTANCE RELOAD TLS . Invalid certificates now stop the server from starting.

Group replication plugin now exposes additional status variables that help diagnose network instability and provide per‑member statistics on network usage, control messages, and data messages.

Added a server system variable that controls the wait time for LDAP pluggable authentication when the LDAP server is down or unresponsive. The default timeout is 30 seconds and can be configured on Linux platforms.

Additional Adjustments (Aligned with MySQL 8.0.34)

In user management, a new system variable validate_password.changed_characters_percentage defines the minimum percentage of characters that must change when a password is altered.

Audit improvements include the ability to specify a database for storing log‑filter conditions during plugin installation, and the introduction of a scheduler component for configuring and executing recurring tasks as well as refreshing in‑memory caches.

Binary‑log support is expanded with three new functions in libmysqlclient.so: mysql_binlog_open(), mysql_binlog_fetch(), and mysql_binlog_close(), enabling applications to read MySQL binary logs.

Compatibility updates improve MSVC_CPPCHECK support on Windows and refine warning handling for the “maintenance” mode.

Windows builds now better support WIN_DEBUG_NO_INLINE=1, allowing more than 65 535 objects.

Versions of third‑party libraries such as robin‑hood‑hashing, ICU, and ZSTD have been upgraded.

Deprecations and Future Removal

mysqlpump is downgraded with a warning and will be removed in a future release.

Server variables sync_relay_log_info and binlog_format are deprecated; after deprecation, binlog_format will only support the row‑based format, and related variables log_bin_trust_function_creators and log_statements_unsafe_for_binlog are also slated for removal.

Group replication variable group_replication_recovery_complete_at and the mysql_native_password authentication plugin are deprecated.

Traditional audit‑log filter mode, the mysql_ssl_rsa_setup utility, and the keyring file plugin are also marked for deprecation.

Version‑comment syntax now requires a space after the version number; future versions may change this behavior.

SQL Syntax Enhancements

The functions CURRENT_USER(), SESSION_USER(), USER(), and SYSTEM_USER() can now be used as default values for VARCHAR or TEXT columns in CREATE or ALTER TABLE statements.

Numerous bug fixes have been applied, bringing MySQL 8.0 to a more stable state. For a complete list of changes, refer to the official MySQL release notes.

$ mysql -u root -D database_name -p < audit_log_filter_linux_install.sql
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

SQLmysqlReplicationRelease NotesDatabase Features
ITPUB
Written by

ITPUB

Official ITPUB account sharing technical insights, community news, and exciting events.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.