Skip to content

Commit d0ebd64

Browse files
support binary_logging for replica instances (#4907) (#3379)
Signed-off-by: Modular Magician <[email protected]>
1 parent 61e9b53 commit d0ebd64

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

.changelog/4907.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
sql: add support for `binary_logging` on replica instances for `googe_sql_database_instance`
3+
```

google-beta/resource_sql_database_instance.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,6 +852,17 @@ func resourceSqlDatabaseInstanceCreate(d *schema.ResourceData, meta interface{})
852852
}
853853
}
854854

855+
var patchData *sqladmin.DatabaseInstance
856+
857+
// BinaryLogging can be enabled on replica instances but only after creation.
858+
if instance.MasterInstanceName != "" && instance.Settings != nil && instance.Settings.BackupConfiguration != nil {
859+
bc := instance.Settings.BackupConfiguration
860+
instance.Settings.BackupConfiguration = nil
861+
if bc.BinaryLogEnabled {
862+
patchData = &sqladmin.DatabaseInstance{Settings: &sqladmin.Settings{BackupConfiguration: bc}}
863+
}
864+
}
865+
855866
var op *sqladmin.Operation
856867
err = retryTimeDuration(func() (operr error) {
857868
if cloneContext != nil {
@@ -879,6 +890,21 @@ func resourceSqlDatabaseInstanceCreate(d *schema.ResourceData, meta interface{})
879890
return err
880891
}
881892

893+
// patch any fields that need to be sent postcreation
894+
if patchData != nil {
895+
err = retryTimeDuration(func() (rerr error) {
896+
op, rerr = config.NewSqlAdminClient(userAgent).Instances.Patch(project, instance.Name, patchData).Do()
897+
return rerr
898+
}, d.Timeout(schema.TimeoutUpdate), isSqlOperationInProgressError)
899+
if err != nil {
900+
return fmt.Errorf("Error, failed to update instance settings for %s: %s", instance.Name, err)
901+
}
902+
err = sqlAdminOperationWaitTime(config, op, project, "Patch Instance", userAgent, d.Timeout(schema.TimeoutUpdate))
903+
if err != nil {
904+
return err
905+
}
906+
}
907+
882908
err = resourceSqlDatabaseInstanceRead(d, meta)
883909
if err != nil {
884910
return err

google-beta/resource_sql_database_instance_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,7 +1137,7 @@ resource "google_sql_database_instance" "instance" {
11371137
var testGoogleSqlDatabaseInstance_replica = `
11381138
resource "google_sql_database_instance" "instance_master" {
11391139
name = "tf-lw-%d"
1140-
database_version = "MYSQL_5_6"
1140+
database_version = "MYSQL_5_7"
11411141
region = "us-central1"
11421142
deletion_protection = false
11431143
@@ -1154,12 +1154,15 @@ resource "google_sql_database_instance" "instance_master" {
11541154
11551155
resource "google_sql_database_instance" "replica1" {
11561156
name = "tf-lw-%d-1"
1157-
database_version = "MYSQL_5_6"
1157+
database_version = "MYSQL_5_7"
11581158
region = "us-central1"
11591159
deletion_protection = false
11601160
11611161
settings {
11621162
tier = "db-n1-standard-1"
1163+
backup_configuration {
1164+
binary_log_enabled = true
1165+
}
11631166
}
11641167
11651168
master_instance_name = google_sql_database_instance.instance_master.name
@@ -1176,7 +1179,7 @@ resource "google_sql_database_instance" "replica1" {
11761179
11771180
resource "google_sql_database_instance" "replica2" {
11781181
name = "tf-lw-%d-2"
1179-
database_version = "MYSQL_5_6"
1182+
database_version = "MYSQL_5_7"
11801183
region = "us-central1"
11811184
deletion_protection = false
11821185

0 commit comments

Comments
 (0)