MySQL

MySQL 8.4 LTS Production Readiness Checklist: Upgrade Safely from 8.0

MySQL 8.4 LTS removes variables, enforces new replication defaults, and ships changed InnoDB settings that can silently break 8.0 configurations. This production checklist covers every item to verify before upgrading.

JusDB Team
January 7, 2025
9 min read
191 views

A fintech client running MySQL 8.0.36 scheduled their 8.4 LTS upgrade for Q2 — and discovered during our pre-upgrade audit that three variables in their my.cnf were completely removed in 8.4. The upgrade would have prevented MySQL from starting on their 12-replica cluster.

MySQL 8.4 is the first Long Term Support release in the 8.x series. It removes features deprecated since 8.0.0, enforces stricter replication defaults, and ships new InnoDB parameters that replace old ones. This checklist covers every production-critical item to verify before upgrading.

TL;DR
  • MySQL 8.4 removes innodb_log_file_size, all slave_* variables, and query_cache_* — these prevent startup.
  • Run mysqlsh checkForServerUpgrade on every node before touching packages.
  • Upgrade replicas first, monitor 24 hours, then upgrade the primary.
  • Replace innodb_log_file_size × innodb_log_files_in_group with a single innodb_redo_log_capacity.

What Was Removed in MySQL 8.4

Any of these variables in your my.cnf will cause MySQL 8.4 to refuse to start:

bash
expire_logs_days          # replaced by binlog_expire_logs_seconds
slave_*                   # all slave_* replaced by replica_*
query_cache_size          # query cache fully removed
innodb_log_file_size      # replaced by innodb_redo_log_capacity
innodb_log_files_in_group # replaced by innodb_redo_log_capacity

Key InnoDB Default Changes

Variable8.0 Default8.4 Default
innodb_flush_methodfsyncO_DIRECT
binlog_formatROWROW (enforced)
innodb_redo_log_capacityN/A104857600 (100MB)
Warning

Replace innodb_log_file_size=2G + innodb_log_files_in_group=2 with innodb_redo_log_capacity=4294967296 (4GB).

Pre-Upgrade Checklist

Step 1: Run the MySQL Shell Upgrade Checker

bash
mysqlsh -- util checkForServerUpgrade root@localhost:3306   --target-version=8.4.0 --output-format=JSON   > upgrade_check_$(hostname).json

Step 2: Scan my.cnf for Removed Variables

bash
grep -E "expire_logs_days|slave_|query_cache|innodb_log_file_size|innodb_log_files" /etc/mysql/my.cnf

Step 3: Validate Replication

sql
SHOW REPLICA STATUS\G
SELECT @@GLOBAL.gtid_mode, @@GLOBAL.enforce_gtid_consistency, @@GLOBAL.binlog_format;
SELECT TIMESTAMPDIFF(SECOND, MIN(last_applied_transaction_end_apply_timestamp), NOW()) AS lag_seconds
FROM performance_schema.replication_applier_status_by_worker;

Step 4: Fix Deprecated SQL in Stored Routines

sql
SELECT ROUTINE_SCHEMA, ROUTINE_NAME FROM information_schema.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%START SLAVE%'
   OR ROUTINE_DEFINITION LIKE '%STOP SLAVE%';

Step 5: Backup Then Upgrade Replica First

bash
xtrabackup --backup --user=backup_user --target-dir=/backup/pre-84-$(date +%Y%m%d)
systemctl stop mysql
apt-get install -y mysql-server-8.4
mysqld --upgrade=FORCE && systemctl start mysql
mysql -e "SELECT VERSION(); SHOW REPLICA STATUS\G"
Tip

MySQL supports replication between an 8.0 primary and an 8.4 replica. Run your 8.4 replica in production for 24 hours before upgrading the primary.

Post-Upgrade Validation

sql
SELECT @@innodb_redo_log_capacity, @@innodb_flush_method;
SELECT * FROM performance_schema.replication_connection_status\G
SHOW ENGINE INNODB STATUS\G
Key Takeaways
  • Run mysqlsh checkForServerUpgrade on every node — it catches most blockers before you touch a package.
  • Replace innodb_log_file_size with innodb_redo_log_capacity equal to the product of the old values.
  • Rename all slave_* variables to replica_* in config files, scripts, and stored routines.
  • Upgrade replicas first, monitor 24 hours, then promote the primary — never upgrade both simultaneously.

Working with JusDB on MySQL Upgrades

JusDB manages MySQL major version upgrades with a full pre-flight audit, replica-first upgrade, automated validation, and 48-hour post-upgrade monitoring.

Explore JusDB MySQL Consulting →  |  Talk to a DBA

Share this article

JusDB Team

Official JusDB content team