diff --git a/cdk/lib/db.ts b/cdk/lib/db.ts index 32048d3..81a4973 100644 --- a/cdk/lib/db.ts +++ b/cdk/lib/db.ts @@ -373,10 +373,15 @@ export class CacclRdsDb extends CacclDbBase { * e.g. '8.0.mysql_aurora.3.02.0' -> '8.0' */ const majorVersion = engineVersion.substring(0, 3); + const auroraMysqlEngineVersion = rds.DatabaseClusterEngine.auroraMysql({ version: rds.AuroraMysqlEngineVersion.of(engineVersion, majorVersion), }); + const auroraMysqlEngineVersionV3 = rds.DatabaseClusterEngine.auroraMysql({ + version: rds.AuroraMysqlEngineVersion.of(engineVersion, '8.0'), + }); + // performance insights for rds mysql not supported on t3 instances const enablePerformanceInsights = !instanceType.startsWith('t3'); @@ -398,6 +403,18 @@ export class CacclRdsDb extends CacclDbBase { }, ); + const clusterParameterGroupV3 = new rds.ParameterGroup( + this, + 'ClusterParameterGroupV3', + { + engine: auroraMysqlEngineVersionV3, + description: `RDS parameter group for ${Stack.of(this).stackName}`, + parameters: { + lower_case_table_names: '1', + }, + }, + ); + this.instanceParameterGroupParams.slow_query_log = '1'; this.instanceParameterGroupParams.log_output = 'TABLE'; this.instanceParameterGroupParams.long_query_time = '3'; @@ -416,6 +433,18 @@ export class CacclRdsDb extends CacclDbBase { }, ); + const instanceParameterGroupV3 = new rds.ParameterGroup( + this, + 'InstanceParameterGroupV3', + { + engine: auroraMysqlEngineVersionV3, + description: `RDS instance parameter group for ${ + Stack.of(this).stackName + }`, + parameters: this.instanceParameterGroupParams, + }, + ); + this.dbCluster = new rds.DatabaseCluster(this, 'RdsDbCluster', { engine: auroraMysqlEngineVersion, clusterIdentifier: `${Stack.of(this).stackName}-db-cluster`, @@ -445,6 +474,10 @@ export class CacclRdsDb extends CacclDbBase { // this needs to happen after the parameter group has been associated with the cluster clusterParameterGroup.applyRemovalPolicy(this.etcRemovalPolicy); instanceParameterGroup.applyRemovalPolicy(this.etcRemovalPolicy); + clusterParameterGroupV3.bindToCluster({}); + clusterParameterGroupV3.applyRemovalPolicy(this.etcRemovalPolicy); + instanceParameterGroupV3.bindToInstance({}); + instanceParameterGroupV3.applyRemovalPolicy(this.etcRemovalPolicy); // for rds/mysql we do NOT include the port as part of the host value this.host = this.dbCluster.clusterEndpoint.hostname;