Skip to content

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_password is disabled by default in 8.4; new users default to caching_sha2_password.

  • The mysql_native_password plugin can still be loaded using --mysql-native-password=ON if needed for backward compatibility.

  • In the 9.x series, mysql_native_password will be completely removed.

  • default_authentication_plugin variable 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_password and plan migration to caching_sha2_password.
  • If necessary for temporary compatibility, you can enable mysql_native_password with --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_password and 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, and SHOW SLAVE STATUS are 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 TO and 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 UPDATE that slightly changes a geometry’s MBR (Minimum Bounding Rectangle) is immediately followed by a DELETE of 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=0 to 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:

Data type restrictions

Impact:

  • AUTO_INCREMENT is not permitted on FLOAT or DOUBLE.

Action:

  • Convert these columns to INTEGER before 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_days variable is removed.

Replacement:

  • binlog_expire_logs_seconds.

Action:

  • Adjust configuration and automation to use seconds-based retention.

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