Breaking and incompatible changes in 8.4¶
Review these items before upgrading from 8.0 to 8.4. This document covers breaking behavioral changes, removed features, and removed variables that may affect your upgrade. Each entry includes the impact, replacement (if available), and recommended action.
Authentication and user management¶
Impact:
-
mysql_native_passwordis disabled by default in 8.4; new users default tocaching_sha2_password. -
The
mysql_native_passwordplugin can still be loaded using--mysql-native-password=ONif needed for backward compatibility. -
In the 9.x series,
mysql_native_passwordwill be completely removed. -
default_authentication_pluginvariable is removed.
Replacement:
- New users default to
caching_sha2_password; configure authentication via supported mechanisms without this variable.
Action:
- Identify accounts and applications using
mysql_native_passwordand plan migration tocaching_sha2_password. - If necessary for temporary compatibility, you can enable
mysql_native_passwordwith--mysql-native-password=ON, but plan to migrate accounts as this plugin will be removed in future versions. - Validate driver/client support for
caching_sha2_passwordand TLS. - Ensure drivers and clients support
caching_sha2_password.
Replication terminology and commands¶
Impact:
-
MASTER/SLAVE terms and statements are removed in 8.4 and will cause syntax errors if used.
-
Statements such as
CHANGE MASTER TO,START SLAVE,STOP SLAVE, andSHOW SLAVE STATUSare no longer supported. -
Related status variables and counters (for example,
Com_show_slave_status) are also removed.
Replacement:
- Use SOURCE/REPLICA equivalents:
START REPLICA,SHOW REPLICA STATUS,CHANGE REPLICATION SOURCE TOand updated status fields.
Action:
-
Update operational scripts, automation, and runbooks to new commands before upgrading.
-
Search for and replace all MASTER/SLAVE statements in your codebase with their SOURCE/REPLICA equivalents.
-
Update scripts, automation, and monitoring that reference removed statements or counters.
-
Re-test replication lifecycle: provisioning, change-source, failover.
Spatial indexes¶
Impact:
- A known issue can corrupt a spatial index (R-Tree index) in MySQL 8.4.0 through 8.4.4. The corruption is triggered when an
UPDATEthat slightly changes a geometry’s MBR (Minimum Bounding Rectangle) is immediately followed by aDELETEof the same row. The R-Tree index can retain a dangling leaf, leading to “Incorrect key file” errors.
Action:
-
Upgrade to 8.4.5 or later, which fixes this issue.
-
If you must remain on 8.4.0-8.4.4, apply one of these workarounds:
- Serialize UPDATE and DELETE statements (ensure they don’t execute in immediate succession)
- Rebuild the spatial index after operations that might trigger the bug
-
Set
innodb_rtree_index_update_interval=0to disable deferred updates -
If you’re planning an upgrade from 8.0 or an earlier 8.4 point release, schedule a pre-upgrade test that exercises an update-then-delete pattern on a table with a spatial index. Verify the index remains healthy with
CHECK TABLE ... EXTENDED. This will surface the bug before you move production data. -
As a precautionary measure, you can drop spatial indexes before upgrade and re-create them after upgrade, then verify integrity.
New reserved keywords¶
Impact:
- New reserved words (for example,
MANUAL,PARALLEL,QUALIFY,TABLESAMPLE) may conflict with unquoted identifiers and break queries.
Action:
-
Scan schemas and queries for unquoted usage; quote or rename objects.
-
See: Keywords and Reserved Words in MySQL 8.4 for the complete list of reserved keywords.
Data type restrictions¶
Impact:
AUTO_INCREMENTis not permitted onFLOATorDOUBLE.
Action:
- Convert these columns to
INTEGERbefore upgrading.
Removed SQL function¶
Impact:
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()function is removed (deprecated in 8.0).
Replacement:
WAIT_FOR_EXECUTED_GTID_SET().
Action:
- Replace function usage in procedures, scripts, and runbooks.
Binary log retention variable¶
Impact:
expire_logs_daysvariable is removed.
Replacement:
binlog_expire_logs_seconds.
Action:
- Adjust configuration and automation to use seconds-based retention.
Memcached-related variables and APIs¶
Impact:
- Built-in memcached integration variables (for example,
daemon_memcached,innodb_api, and related settings) are removed.
Replacement:
- Externalize caching at the application tier or separate cache services.
Action:
- Remove dependencies on the built-in memcached functionality.
Further reading¶
- Upgrade overview
- Upgrade checklist for 8.4
- Upgrade procedures for 8.4
- Upgrade strategies
- MySQL upgrade paths and supported methods
- Upgrade from plugins to components
- Upgrade to Percona Server for MySQL Pro
- Downgrade options
- Compatibility and removed items in 8.4
- Defaults and tuning guidance for 8.4
- Percona Toolkit updates for 8.4