Skip to content

Commit

Permalink
regional MySQL DBs - automatic backup conf
Browse files Browse the repository at this point in the history
  • Loading branch information
Natalia Strelkova committed Sep 21, 2022
1 parent 40b3aa3 commit d6c6ae9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
9 changes: 5 additions & 4 deletions modules/cloudsql-instance/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ locals {
prefix = var.prefix == null ? "" : "${var.prefix}-"
is_mysql = can(regex("^MYSQL", var.database_version))
has_replicas = try(length(var.replicas) > 0, false)
is_regional = var.availability_type == "REGIONAL" ? true : false

// Enable backup if the user asks for it or if the user is deploying
// MySQL with replicas
enable_backup = var.backup_configuration.enabled || (local.is_mysql && local.has_replicas)
// MySQL in HA configuration (regional or with specified replicas)
enable_backup = var.backup_configuration.enabled || (local.is_mysql && local.has_replicas) || (local.is_mysql && local.is_regional)

users = {
for user, password in coalesce(var.users, {}) :
Expand Down Expand Up @@ -76,11 +77,11 @@ resource "google_sql_database_instance" "primary" {
content {
enabled = true

// enable binary log if the user asks for it or we have replicas,
// enable binary log if the user asks for it or we have replicas (default in regional),
// but only for MySQL
binary_log_enabled = (
local.is_mysql
? var.backup_configuration.binary_log_enabled || local.has_replicas
? var.backup_configuration.binary_log_enabled || local.has_replicas || local.is_regional
: null
)
start_time = var.backup_configuration.start_time
Expand Down
11 changes: 11 additions & 0 deletions tests/modules/cloudsql_instance/test_plan.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,17 @@ def test_mysql_replicas_enables_backup(plan_runner):
assert backup_config['binary_log_enabled']


def test_mysql_binary_log_for_regional(plan_runner):
"Test that the binary log will be enabled for regional MySQL DBs."

_, resources = plan_runner(database_version="MYSQL_8_0", availability_type="REGIONAL")
assert len(resources) == 1
primary = [r for r in resources if r['name'] == 'primary'][0]
backup_config = primary['values']['settings'][0]['backup_configuration'][0]
assert backup_config['enabled']
assert backup_config['binary_log_enabled']


def test_users(plan_runner):
"Test user creation."

Expand Down

0 comments on commit d6c6ae9

Please sign in to comment.