Recently I wrote an article on how to define a backup policy for MySQL Database Service in OCI using Terraform. We saw that it was possible to define tags (defined_tags
and freeform_tags
) in the backup_policy section of a oci_mysql_mysql_db_system
resource.
However, it seems that these tags are never used for manual or automated backups in the MySQL Database Service backup process. In the strategy implemented on OCI, the backups inherit the tags from the MySQL DB system itself.
This means that if you want to have some custom tags on your backups, you need to specify them in the MySQL Database resource like this (on line 12):
resource "oci_mysql_mysql_db_system" "MDSinstance" {
admin_password = var.admin_password
admin_username = var.admin_username
availability_domain = var.availability_domain
compartment_id = var.compartment_ocid
configuration_id = oci_mysql_mysql_configuration.mds_mysql_configuration.id
shape_name = var.mysql_shape
subnet_id = var.subnet_id
data_storage_size_in_gb = var.mysql_data_storage_in_gb
display_name = var.display_name
freeform_tags = {"backup_defined_by"="Terraform"}
count = var.existing_mds_instance_id == "" ? 1 : 0
is_highly_available = var.deploy_ha
maintenance {
window_start_time = "sun 01:00"
}
backup_policy {
is_enabled = "true"
retention_in_days = "3"
window_start_time = "01:00-00:00"
pitr_policy {
#Required
is_enabled = "true"
}
}
}
With the definition above, when a backup is performed, the tags are set as expected:
Now things are clear and we just need to remember that MySQL database service backups in OCI are inherited by the database system and if we create a manual backup, we have the possibility to eventually add new tags.