Subchapter 74.10
references/upgrade-post-checklist.mdMarkdown6 KBView on GitHub
References
Bluegreen Advisor Workflowaws rds describe-db-instances \
--db-instance-identifier <instance-id> \
--query "DBInstances[0].{EngineVersion:EngineVersion,DBInstanceStatus:DBInstanceStatus,DBParameterGroups:DBParameterGroups[0].{Name:DBParameterGroupName,Status:ParameterApplyStatus}}" \
--region <region>Confirm:
availablein-sync (if pending-reboot, reboot the instance)Connect to the instance and confirm basic operations work:
MySQL/MariaDB:
SELECT VERSION();
SHOW DATABASES;
SELECT 1;PostgreSQL:
SELECT version();
\l
SELECT 1;Check that:
caching_sha2_password — older clients may need --default-auth=mysql_native_password)If you observe query performance regressions at this step, table statistics may be stale. The new optimizer in the target version relies more heavily on accurate statistics. You can refresh statistics for the affected tables:
MySQL/MariaDB:
ANALYZE TABLE schema_name.table_name;PostgreSQL:
ANALYZE schema_name.table_name;Note: ANALYZE TABLE and OPTIMIZE TABLE are expensive operations. Do NOT run them blanket across all tables while production traffic is active. Target only the tables where you observe performance issues, and run during a low-traffic window.
Beyond basic database connectivity, verify that your actual application connects and operates correctly against the upgraded instance:
caching_sha2_password), TLS negotiation, and connection pooling behavior may differIf you created a custom parameter group to preserve previous behavior, confirm the key settings took effect:
MySQL (5.7 → 8.0):
SELECT @@character_set_server, @@collation_server, @@sql_mode, @@innodb_strict_mode;PostgreSQL:
SHOW server_encoding;
SHOW lc_collate;
SHOW work_mem;
SHOW shared_buffers;If you used the default parameter group for the target family, these will be the new version’s defaults — verify your application handles them correctly.
The optimizer in the target version may choose different execution plans. Run EXPLAIN on your most critical queries and compare with pre-upgrade behavior:
MySQL/MariaDB:
EXPLAIN FORMAT=JSON SELECT ... ;Watch for (MySQL 8.0):
PostgreSQL:
EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON) SELECT ... ;Watch for (PG 15+):
Parameter group changes during an upgrade can reset logging settings. After the upgrade, confirm logging is still enabled:
general_log and slow_query_log settings preservedpgaudit extension settings, log_connections, log_disconnections preservedMonitor these CloudWatch metrics for the first 24-48 hours post-upgrade. These apply to all RDS engines (MySQL, MariaDB, PostgreSQL):
CPUUtilization — should be comparable to pre-upgrade baselineDatabaseConnections — confirm apps reconnected successfullyReadIOPS — watch for unexpected spikes indicating plan regressionsWriteIOPS — watch for unexpected spikesFreeableMemory — the new version may use memory differentlyFreeStorageSpace — upgrade process may temporarily consume extra storageaws cloudwatch get-metric-statistics \
--namespace AWS/RDS \
--metric-name CPUUtilization \
--dimensions Name=DBInstanceIdentifier,Value=<instance-id> \
--start-time <start> --end-time <end> \
--period 300 --statistics Average \
--region <region>If any metric shows a significant regression compared to pre-upgrade baseline, investigate before considering the upgrade successful.
Only proceed with cleanup after you have confirmed the upgrade was successful and you do not observe any performance or operational regressions. Keep the pre-upgrade snapshot and old Blue/Green environment available as a rollback option until you are fully confident.
Once confirmed:
# Delete old snapshot (only after confirming upgrade success)
aws rds delete-db-snapshot \
--db-snapshot-identifier <instance-id>-pre-upgrade-snapshot \
--region <region>