"LTS = No need to apply patches" is not correct. Please continue to apply the latest patch releases regularly.
During the duration of an Aurora MySQL LTS release, new patch levels introduce fixes for important issues. Patch levels do not include new features. You can choose whether to apply such patches to DB clusters running the LTS release. We recommend that customers running an LTS release upgrade to the latest patch release of the LTS minor version at least once a year to benefit from critical security and operational fixes. For certain critical fixes, Amazon might perform managed upgrades to a patch level within the same LTS release. Such managed upgrades happen automatically within your cluster's maintenance window. All Aurora MySQL releases, both LTS and non-LTS, undergo extensive stability and operational testing. Some minor versions are designated as LTS releases, enabling customers to use those minor versions for a longer period without upgrading to a new minor version.
Amazon Aurora MySQL long-term support (LTS) and Beta releases - Amazon Aurora
:::## Understanding Aurora MySQL Support Deadlines
I will organize the support deadlines for Aurora MySQL.
Aurora MySQL version
Aurora MySQL release date
Aurora MySQL end of standard support date
3.10 (Compatible with Community MySQL 8.0.42) (LTS)
July 31, 2025
April 30, 2028
3.09 (Compatible with Community MySQL 8.0.40)
May 14, 2025
May 14, 2026
3.08 (Compatible with Community MySQL 8.0.39)
November 18, 2024
March 31, 2026
3.07 (Compatible with Community MySQL 8.0.36)
June 4, 2024
August 31, 2025
3.06 (Compatible with Community MySQL 8.0.34)
March 7, 2024
August 31, 2025
3.05 (Compatible with Community MySQL 8.0.32)
October 25, 2023
August 31, 2025
3.04 (Compatible with Community MySQL 8.0.28) (LTS)
July 31, 2023
October 31, 2026
Excerpt from: Release calendars for Amazon Aurora MySQL - Amazon Aurora
The standard support for Aurora MySQL 3.10.0 will last until April 30, 2028.
Since the standard support end date for Aurora MySQL 3 matches with Aurora MySQL 3.10.0 (April 30, 2028), it appears that Aurora MySQL 3.10.0 will be the final LTS version for Aurora MySQL 3.
At the major version level, we can confirm this using AWS CLI as follows:
> aws rds describe-db-major-engine-versions --engine aurora-mysql
{
"DBMajorEngineVersions" : [
{
"Engine" : "aurora-mysql" ,
"MajorEngineVersion" : "5.7" ,
"SupportedEngineLifecycles" : [
{
"LifecycleSupportName" : "open-source-rds-standard-support" ,
"LifecycleSupportStartDate" : "2018-02-06T00:00:00+00:00" ,
"LifecycleSupportEndDate" : "2024-10-31T23:59:59.999000+00:00"
} ,
{
"LifecycleSupportName" : "open-source-rds-extended-support" ,
"LifecycleSupportStartDate" : "2024-11-01T00:00:00+00:00" ,
"LifecycleSupportEndDate" : "2027-02-28T23:59:59.999000+00:00"
}
]
} ,
{
"Engine" : "aurora-mysql" ,
"MajorEngineVersion" : "8.0" ,
"SupportedEngineLifecycles" : [
{
"LifecycleSupportName" : "open-source-rds-standard-support" ,
"LifecycleSupportStartDate" : "2021-11-18T00:00:00+00:00" ,
"LifecycleSupportEndDate" : "2028-04-30T23:59:59.999000+00:00"
} ,
{
"LifecycleSupportName" : "open-source-rds-extended-support" ,
"LifecycleSupportStartDate" : "2028-05-01T00:00:00+00:00" ,
"LifecycleSupportEndDate" : "2029-07-31T23:59:59.999000+00:00"
}
]
}
]
}
```
Let's review the major feature additions from Aurora MySQL 3.04 to Aurora MySQL 3.10 .
For more details, please refer to the AWS official documentation.
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraMySQLReleaseNotes/AuroraMySQL.Updates.30Updates.html
- Added support for saving Aurora MySQL database cluster data to text files in SSE-KMS encrypted Amazon S3 buckets
- Added ` aurora_tmz_version` global status variable that shows the current version of timezone information
- Added Amazon Bedrock integration support
- Added reserved keywords such as ` accept` , ` aws_bedrock_invoke_model` , ` aws_sagemaker_invoke_endpoint` , etc.
- Improved binary log replica performance when replicating transactions for large tables with multiple secondary indexes
- Added stored procedure ` mysql.rds_set_read_only`
- Added stored procedure ` mysql.rds_set_binlog_source_ssl`
- Added Truncating Undo Tablespaces
- Added FIPS validated encryption support
- Added binary log replication privilege check user ` rdsrepladmin_priv_checks_user`
- Added the following CloudWatch metrics to monitor the InnoDB purge process:
- PurgeBoundary
- PurgeFinishedPoint
- TruncateFinishedPoint
- Added ` TransactionAgeMaximum` CloudWatch metric representing the elapsed time of the oldest active running transaction
- Added the following CloudWatch metrics for OOM prevention:
- AuroraMillisecondsSpentInOomRecovery
- AuroraNumOomRecoverySuccessful
- AuroraNumOomRecoveryTriggered
- Changed the following CloudWatch metrics from execution totals to incremental for OOM prevention:
- AuroraMemoryNumDeclinedSqlTotal
- AuroraMemoryNumKillConnTotal
- AuroraMemoryNumKillQueryTotal
- Added the following global status variables showing the amount of memory used by internal temporary tables:
- aurora_temptable_ram_allocation
- aurora_temptable_max_ram_allocation
- Added system variable ` aurora_optimizer_trace_print_before_purge` to output optimizer traces to the error log before the server clears traces from memory
- Modified Aurora MySQL Global Database so that secondary reader instances can complete startup and process read requests during unexpected events
- Reduced Writer downtime during cross-region switchover in Aurora MySQL Global Database to typically less than 1 minute
- Extended support for binary log replica in-memory relay log cache
- Increased maximum storage capacity from 128 TiB to 256 TiB
The DB instance classes that support Aurora MySQL 3.10 are as follows:
- db.serverless
- db.x2g.large - db.x2g.16xlarge
- db.r8g.large - db.r8g.48xlarge
- db.r7g.large - db.r7g.16xlarge
- db.r7i.large - db.r7i.48xlarge
- db.r6g.large - db.r6g.16xlarge
- db.r6i.large - db.r6i.32xlarge
- db.r5.large - db.r5.24xlarge
- db.t4g.medium - db.t4g.large
- db.t3.medium - db.t3.large
Reference: [ Supported DB engines for DB instance classes \ - Amazon Aurora] ( https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Concepts.DBInstanceClass.SupportAurora.html)
I'm particularly happy that db.r8g can now be used. Previously, when using the LTS version 3.0.4, we could only use up to db.r7g.
By upgrading to Aurora MySQL 3.10.0, we can benefit from infrastructure performance improvements.## Aurora MySQL 3.10 Properties
Let' s check the properties of Aurora MySQL 3.10 .
` ``bash
> aws rds describe-db-engine-versions --engine aurora-mysql --engine-version 8.0 .mysql_aurora.3.10.0
{
"DBEngineVersions" : [
{
"Engine" : "aurora-mysql" ,
"EngineVersion" : "8.0.mysql_aurora.3.10.0" ,
"DBParameterGroupFamily" : "aurora-mysql8.0" ,
"DBEngineDescription" : "Aurora MySQL" ,
"DBEngineVersionDescription" : "Aurora MySQL 3.10.0 (compatible with MySQL 8.0.42)" ,
"ValidUpgradeTarget" : [ ] ,
"ExportableLogTypes" : [
"audit" ,
"error" ,
"general" ,
"iam-db-auth-error" ,
"instance" ,
"slowquery"
] ,
"SupportsLogExportsToCloudwatchLogs" : true,
"SupportsReadReplica" : false,
"SupportedEngineModes" : [
"provisioned"
] ,
"SupportedFeatureNames" : [
"Bedrock"
] ,
"Status" : "available" ,
"SupportsParallelQuery" : true,
"SupportsGlobalDatabases" : true,
"MajorEngineVersion" : "8.0" ,
"SupportsBabelfish" : false,
"SupportsLimitlessDatabase" : false,
"SupportsCertificateRotationWithoutRestart" : true,
"SupportedCACertificateIdentifiers" : [
"rds-ca-ecc384-g1" ,
"rds-ca-rsa4096-g1" ,
"rds-ca-rsa2048-g1"
] ,
"SupportsLocalWriteForwarding" : true,
"SupportsIntegrations" : true,
"ServerlessV2FeaturesSupport" : {
"MinCapacity" : 0.0 ,
"MaxCapacity" : 256.0
}
}
]
}
Trying it out### For Aurora MySQL 3.4.0
It's known that Aurora MySQL 3 series has issues with slow SELECT COUNT(*)
performance.
https://ca-srg.dev/5f1e696584b94b7fa848115ef7dae63e
https://ca-srg.dev/dba9a0f2aa9049259a9610274b258bf2
Let's check if there have been improvements with the upgrade.
First, let's look at Aurora MySQL 3.0.4:
$ mysql -h database-304.cluster-cicjym7lykmq.us-east-1.rds.amazonaws.com -u admin -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \ g.
Your MySQL connection id is 51
Server version: 8.0 .28 8a6fbbbd
Copyright ( c) 2000 , 2018 , Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [ ( none) ] > SELECT VERSION( ) ;
+-----------+
| VERSION( ) |
+-----------+
| 8.0 .28 |
+-----------+
1 row in set ( 0.001 sec)
MySQL [ ( none) ] > SELECT aurora_version( ) ;
+------------------+
| aurora_version( ) |
+------------------+
| 3.04 .4 |
+------------------+
1 row in set ( 0.001 sec)
We'll test using the procedure introduced in bugs.mysql :
MySQL [ non____97_db] > DROP SCHEMA IF EXISTS example;
Query OK, 0 rows affected ( 0.007 sec)
MySQL [ non____97_db] > CREATE SCHEMA example;
Query OK, 1 row affected ( 0.002 sec)
MySQL [ non____97_db] > USE example;
Database changed
MySQL [ example] >
MySQL [ example] > DROP TABLE IF EXISTS table1;
Query OK, 0 rows affected, 1 warning ( 0.001 sec)
MySQL [ example] > CREATE TABLE table1
-> (
-> id INT AUTO_INCREMENT,
-> col_idx VARCHAR( 28 ) ,
-> col_data LONGTEXT,
-> PRIMARY KEY ( id) ,
-> KEY ` idx` ( ` col_idx` )
-> ) CHARSET = utf8mb4
-> COLLATE = utf8mb4_general_ci;
Query OK, 0 rows affected ( 0.020 sec)
MySQL [ example] >
MySQL [ example] > DROP PROCEDURE IF EXISTS fill_data;
Query OK, 0 rows affected, 1 warning ( 0.000 sec)
MySQL [ example] > DELIMITER //
MySQL [ example] >
MySQL [ example] > CREATE PROCEDURE fill_data( )
-> BEGIN
-> DECLARE i INT DEFAULT 0 ;
-> WHILE i < 100000
-> DO
-> INSERT INTO table1 ( col_idx, col_data)
-> VALUES ( REPEAT( 'a' , 28 ) ,
-> REPEAT( 'a' , 5000 )) ;
-> SET i = i + 1 ;
-> END WHILE;
-> END
-> //
Query OK, 0 rows affected ( 0.003 sec)
MySQL [ example] > DELIMITER ;
MySQL [ example] > SET AUTOCOMMIT = true ;
Query OK, 0 rows affected ( 0.000 sec)
MySQL [ example] > call fill_data( ) ;
Query OK, 1 row affected ( 9.393 sec)
MySQL [ example] > call fill_data( ) ;
Query OK, 1 row affected ( 9.564 sec)
MySQL [ example] > call fill_data( ) ;
Query OK, 1 row affected ( 9.607 sec)
MySQL [ example] > call fill_data( ) ;
Query OK, 1 row affected ( 10.555 sec)
MySQL [ example] > call fill_data( ) ;
Query OK, 1 row affected ( 9.550 sec)
MySQL [ example] > SELECT COUNT( *) FROM table1;
+----------+
| COUNT( *) |
+----------+
| 500000 |
+----------+
1 row in set ( 0.087 sec)
``` 0.087 seconds, which doesn't feel particularly slow.
I performed an in-place upgrade of the Aurora MySQL DB cluster from 3.0 .4 to 3.10 .0.
Checking the logs, the following output indicates that the upgrade was performed using ZDP ( zero-downtime patching) :
` ``bash
Attempt to upgrade the database instance 'database-304-instance-1' with zero downtime finished. The process took 14357 ms, 7 connections preserved, 0 connections dropped. See the database error log for details.
For more information about ZDP, please refer to the following AWS official documentation:
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.ZDP.html
Existing sessions were maintained. Let's check the version:
MySQL [ example] > SELECT VERSION( ) ;
+-----------+
| VERSION( ) |
+-----------+
| 8.0 .42 |
+-----------+
1 row in set ( 0.001 sec)
MySQL [ example] > SELECT aurora_version( ) ;
+------------------+
| aurora_version( ) |
+------------------+
| 3.10 .0 |
+------------------+
1 row in set ( 0.000 sec)
The upgrade was successful.
Now let's run SELECT COUNT(*)
:
MySQL [ example] > SELECT COUNT( *) FROM table1;
+----------+
| COUNT( *) |
+----------+
| 500000 |
+----------+
1 row in set ( 0.375 sec)
MySQL [ example] > SELECT COUNT( *) FROM table1;
+----------+
| COUNT( *) |
+----------+
| 500000 |
+----------+
1 row in set ( 0.078 sec)
MySQL [ example] > SELECT COUNT( *) FROM table1;
+----------+
| COUNT( *) |
+----------+
| 500000 |
+----------+
1 row in set ( 0.098 sec)
MySQL [ example] > SELECT COUNT( *) FROM table1;
+----------+
| COUNT( *) |
+----------+
| 500000 |
+----------+
1 row in set ( 0.081 sec)
It was slow only once, but after that, it consistently performed in under 0.1 seconds.
Plan to Upgrade to the LTS Version Early
I've introduced the new LTS version of Amazon Aurora MySQL 3.10.
Let's plan early to upgrade to the LTS version.
The following AWS official documentation can be helpful when upgrading:
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.Patching.html
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments.html
I hope this article helps someone.
That's all from nonpi (@non____97 ), Cloud Business Headquarters, Consulting Department!