MySQL 8.0 to 8.4 LTS Upgrade Guide — Part 5: Change Management, Troubleshooting, and Complete Checklist

Complete MySQL 8.4 upgrade checklist with 41 items, 8 common troubleshooting scenarios, project timeline estimates, and change management templates for production upgrades.

MySQL 8.0 to 8.4 LTS Upgrade Guide — 5-Part Series

  1. Part 1: Pre-Upgrade Preparation
  2. Part 2: Upgrade Testing
  3. Part 3: Upgrade Execution
  4. Part 4: Rollback and Post-Upgrade Validation
  5. Part 5: Change Management, Troubleshooting, and Checklist (You Are Here)

A major version upgrade is not just a technical task. Proper change management ensures organizational readiness and reduces risk. This final part covers the operational planning, common pitfalls you'll encounter, and the complete 41-item checklist to track your progress.

Change Ticket Requirements

Your change ticket (ServiceNow, Jira, or equivalent) should include:

Go / No-Go Criteria

Define clear criteria before entering the maintenance window. If any criterion is not met, postpone the upgrade.

CriterionRequired StateChecked By
Backups completed and verifiedLogical + Physical backup, restore testedDBA
Upgrade Checker errors resolvedZero errors, warnings reviewedDBA
pt-upgrade testing completedNo critical query failuresDBA
Staging dry-run successfulFull procedure validatedDBA
Application team sign-offApp testing passed on stagingApp Team Lead
Rollback procedure testedRestore tested with time estimateDBA
Monitoring dashboards readyPMM/Grafana configured for 8.4DBA / SRE
Stakeholders notifiedChange window communicatedChange Manager

Maintenance Window Monitoring

During the cutover window, monitor these metrics in real-time:

Communication Template

Send notifications at these milestones:

Full Upgrade Project Timeline

Actual times vary significantly based on data size, complexity, team experience, and hardware. The estimates below are based on real-world upgrade projects.

PhaseActivityEstimated Hours
1. Test Env SetupRestore 2 instances from production backup15-20
2. Upgrade TestingSlow log collection, pt-upgrade RO/RW tests, analysis, upgrade checker20-25
3. Fix IssuesRemediate all errors and warnings5-15
4. Staging Dry-RunComplete upgrade procedure on staging8-12
5. Architecture SetupRestore 8.4 from fresh backup, setup replication, monitoring20-25
6. CutoverCutover planning and execution5-10
7. Post-Upgrade MonitoringMonitor production for stability8-16
TOTAL81-123

Time Estimates by Data Size

The most variable component is backup/restore time, which is heavily dependent on data size:

Database SizeLogical BackupLogical RestoreXtraBackupXtraBackup Restore
< 100 GB30-60 min1-2 hours15-30 min15-30 min
100 GB - 1 TB1-4 hours4-12 hours30-90 min30-90 min
1 TB - 5 TB4-12 hours12-36 hours1-4 hours1-4 hours
5 TB - 10 TB+12-24+ hours24-72+ hours4-12+ hours4-12+ hours

WARNING: For datasets over 5TB, the rollback window using logical backup restore can exceed 24 hours. This makes the replication-based upgrade approach essential, not optional, for large production databases.

Simplified Timeline (Skipping pt-upgrade)

If hardware constraints prevent a full compatibility test, the project can be reduced to 40-60 hours. This carries significantly higher risk:

PhaseEstimated Hours
Pre-upgrade checks and preparation8-12
Staging dry-run5-8
Upgrade execution5-15
Application testing (customer-led)10-20
Cutover5-10
TOTAL33-65

CRITICAL: Skipping pt-upgrade testing means you're accepting the risk that queries may fail or return wrong results in production. For large datasets, this risk includes a rollback that could take 10-20+ hours. This decision must be explicitly acknowledged by stakeholders.

Common Pitfalls and Troubleshooting

Server Refuses to Start: Removed Parameters in my.cnf

Symptom: mysqld fails to start with "unknown variable" or "unknown option" errors.

Cause: Removed parameters (default_authentication_plugin, master_info_repository, etc.) still present in my.cnf.

Solution: Remove all parameters listed in Part 1, Removed Parameters. Check the error log for the specific parameter name causing the failure.

Redo Log Incompatibility

Symptom: "This redo log was created with MySQL 8.0.x and it appears logically non empty."

Cause: MySQL was shut down with innodb_fast_shutdown = 2 or crashed before upgrade.

CRITICAL: Do NOT delete redo log files. This causes data loss. You MUST restore from backup.

Prevention: Always set innodb_fast_shutdown = 0 and perform a clean shutdown before any upgrade.

Data Directory Deleted on Debian/Ubuntu

Symptom: /var/lib/mysql is empty or missing after removing MySQL 8.0 packages.

Cause: Used apt-get purge instead of apt-get remove. Purge removes data directories.

Solution: Restore from your pre-upgrade backup. Prevention: ALWAYS use apt-get remove, never apt-get purge.

Authentication Failures After Upgrade

Symptom: Applications or users cannot connect after upgrading to 8.4.

Cause: mysql_native_password plugin is removed in 8.4.

Immediate fix: Add mysql_native_password=ON to my.cnf and restart MySQL. Then migrate users per Part 1, Authentication Migration.

InnoDB Storage Engine Error for System Tables

Symptom: Error 1726 "Storage engine InnoDB Does Not Support System Tables."

Cause: my.cnf forces default_storage_engine = MyISAM. System tables require InnoDB.

Solution: Remove default_storage_engine = MyISAM from my.cnf, or set it to InnoDB.

Deprecated Plugin Errors

Symptom: Errors referencing missing shared libraries (e.g., query_response_time.so).

Cause: Percona-specific plugins from older versions registered in the data dictionary.

Solution:

DELETE FROM mysql.plugin WHERE name = 'QUERY_RESPONSE_TIME';
DELETE FROM mysql.plugin WHERE name = 'SCALABILITY_METRICS';

Query Failures from sql_mode Changes

Symptom: Queries that worked in 8.0 return errors like "Expression #N of SELECT list is not in GROUP BY clause."

Cause: ONLY_FULL_GROUP_BY is enforced in 8.4 default sql_mode.

Immediate fix: Set sql_mode explicitly in my.cnf to match your 8.0 mode. Long-term fix: Rewrite queries to comply with ONLY_FULL_GROUP_BY.

View and Routine Warnings

Symptom: "View is no more valid to use" warnings in the error log.

Cause: Views or stored routines reference deprecated syntax or changed objects.

Solution: Identify affected views with CHECK TABLE, then recreate them.

Want ReliaDB to handle the entire upgrade?

From pre-upgrade preparation through post-upgrade monitoring, our DBA team has executed MySQL major version upgrades for production databases up to 10TB+. Book a free assessment to discuss your upgrade.

Book Free Assessment →

Complete Upgrade Checklist (41 Items)

Use this checklist to track progress through each phase of the upgrade.

Pre-Upgrade Preparation

#TaskOwner
1Take full logical backup (mysqldump/mydumper) and verify restoreDBA
2Take full physical backup (XtraBackup/LVM snapshot) and verify restoreDBA
3Verify sufficient disk space (2.5x datadir free)DBA
4Run mysqlcheck --all-databases --check for corruptionDBA
5Run MySQL Shell Upgrade Checker targeting 8.4.8DBA
6Resolve all Upgrade Checker ERRORSDBA
7Address all Upgrade Checker WARNINGSDBA
8Identify and migrate mysql_native_password users (or plan transitional)DBA
9Identify and fix AUTO_INCREMENT on FLOAT/DOUBLE columnsDBA
10Audit my.cnf: remove all deprecated/removed parametersDBA
11Set explicit values for parameters with changed defaultsDBA
12Review and fix sql_mode-dependent queries (GROUP BY, zero dates)DBA / Dev
13Audit all scripts/code for MASTER/SLAVE syntaxDBA / Dev
14Upgrade ProxySQL to 2.5.4+ (if applicable)DBA
15Test auth chain through ProxySQL in staging (if applicable)DBA
16Verify all tool versions are 8.4-compatible (PMM, XtraBackup, etc.)DBA

Testing

#TaskOwner
17Set up test environment (8.0 baseline + 8.4 target)DBA
18Collect slow query log from production (1-3 hours peak)DBA
19Run pt-upgrade read-only test and analyze resultsDBA
20Run pt-upgrade read-write test and analyze resultsDBA
21Run application test suites against 8.4 test instanceApp Team
22Load test 8.4 instance and compare performanceDBA / QA
23Complete full dry-run upgrade on stagingDBA
24Canary test with partial traffic (optional)DBA / SRE

Change Management

#TaskOwner
25Create and approve change ticketDBA / Manager
26Schedule maintenance window with stakeholdersChange Mgr
27Send pre-upgrade notification (1 week prior)DBA
28Confirm Go/No-Go criteria metAll

Execution

#TaskOwner
29Take final pre-upgrade backupDBA
30Execute upgrade (replication-based, rolling, or in-place)DBA
31Verify MySQL 8.4 starts and runs without errorsDBA

Post-Upgrade Validation

#TaskOwner
32Verify version: SELECT VERSION()DBA
33Review error log for warningsDBA
34Run mysqlcheck on all databasesDBA
35Run ANALYZE TABLE on key tablesDBA
36Verify replication health (if applicable)DBA
37Run application smoke testsApp Team
38Monitor performance for 24-48 hoursDBA / SRE
39Update monitoring, scripts, and documentationDBA
40Archive pre-upgrade backups per retention policyDBA
41Close change ticket with post-implementation reviewDBA

References and Resources

Series Complete! You've reached the end of the MySQL 8.0 to 8.4 LTS Upgrade Guide. With thorough preparation, testing, and a solid rollback plan, your upgrade will go smoothly. If you need hands-on help at any stage, reach out to ReliaDB.

Complete Series

  1. Part 1: Pre-Upgrade Preparation
  2. Part 2: Upgrade Testing
  3. Part 3: Upgrade Execution
  4. Part 4: Rollback and Post-Upgrade Validation
  5. Part 5: Change Management, Troubleshooting, and Checklist (You Are Here)
M

Mughees — ReliaDB

ReliaDB is a specialist DBA team for PostgreSQL and MySQL performance, high availability, and cloud database optimization. More about ReliaDB →