Skip to content

Rate this page
Thanks for your feedback
Thank you! The feedback has been submitted.

For help, click the link below to get free database assistance or contact our experts for personalized support.

Breaking and incompatible changes in 8.4

Review these items before upgrading from 8.0 to 8.4. This document covers the most significant breaking behavioral changes, removed features, and removed variables that may affect your upgrade. Each entry includes the impact, replacement (if available), and recommended action.

Review the MySQL 8.4 Reference manual for more information.

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 that drivers and clients support caching_sha2_password and TLS.

Replication terminology and commands

Impact:

  • Many of the 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.

  • You should replace only the replication‑related statements (for example, CHANGE MASTER TO, START SLAVE, SHOW SLAVE STATUS) with their SOURCE/REPLICA equivalents, while leaving identifiers, the REPLICATION SLAVE privilege, and the slave_* system tables untouched. A scoped, manual review of each occurrence prevents breaking non‑replication code.

  • 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.3. 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.4 or later, which fixes this issue.

  • If you must remain on 8.4.0-8.4.3, 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:

  • Evaluate each case for the best solution.

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