diff --git a/google_cloudsql_mysql/README.md b/google_cloudsql_mysql/README.md
index 363d6bbe..88890602 100644
--- a/google_cloudsql_mysql/README.md
+++ b/google_cloudsql_mysql/README.md
@@ -165,7 +165,7 @@ module "mysql_database" {
| [component](#input\_component) | A logical component of an application | `string` | `"db"` | no |
| [connector\_enforcement](#input\_connector\_enforcement) | Enables the enforcement of Cloud SQL Auth Proxy or Cloud SQL connectors for all the connections. If enabled, all the direct connections are rejected. | `string` | `null` | no |
| [custom\_database\_name](#input\_custom\_database\_name) | Use this field for custom database name. | `string` | `""` | no |
-| [custom\_replica\_name](#input\_custom\_replica\_name) | Custom database replica name. | `string` | `""` | no |
+| [custom\_replica\_name](#input\_custom\_replica\_name) | Custom database replica name. | `list(string)` | `[]` | no |
| [data\_cache\_enabled](#input\_data\_cache\_enabled) | Whether data cache is enabled for the instance. Only available for `ENTERPRISE_PLUS` edition instances. | `bool` | `true` | no |
| [database\_flags](#input\_database\_flags) | The database flags for the primary instance. See [more details](https://cloud.google.com/sql/docs/mysql/flags#list-flags-mysql) | `list(object({ name = string, value = string }))` | `[]` | no |
| [database\_version](#input\_database\_version) | Version of MySQL to run | `string` | `"MYSQL_8_0"` | no |
diff --git a/google_cloudsql_mysql/main.tf b/google_cloudsql_mysql/main.tf
index 5aff97e9..e76939bf 100644
--- a/google_cloudsql_mysql/main.tf
+++ b/google_cloudsql_mysql/main.tf
@@ -12,7 +12,7 @@ locals {
replica_availability_type = coalesce(var.replica_availability_type_override, var.availability_type)
default_replica_name = "${local.database_name}-replica"
- replica_name = coalesce(var.custom_replica_name, local.default_replica_name)
+ replica_names = coalescelist(var.custom_replica_name, [for index in range(var.replica_count) : "${local.default_replica_name}-${index}"])
ip_addresses = google_sql_database_instance.primary.ip_address
@@ -129,7 +129,7 @@ resource "google_sql_database_instance" "primary" {
resource "google_sql_database_instance" "replica" {
count = var.replica_count
- name = "${local.replica_name}-${count.index}"
+ name = local.replica_names[count.index]
project = var.project_id
region = local.replica_region
database_version = var.database_version
diff --git a/google_cloudsql_mysql/variables.tf b/google_cloudsql_mysql/variables.tf
index 311b1c5d..0c1b1199 100644
--- a/google_cloudsql_mysql/variables.tf
+++ b/google_cloudsql_mysql/variables.tf
@@ -39,9 +39,14 @@ variable "custom_database_name" {
}
variable "custom_replica_name" {
- default = ""
+ default = []
description = "Custom database replica name."
- type = string
+ type = list(string)
+
+ validation {
+ condition = length(var.custom_replica_name) == 0 || length(var.custom_replica_name) == var.replica_count
+ error_message = "Replicas must use default replica name or define a replica name for every replica."
+ }
}
variable "data_cache_enabled" {