繁体   English   中英

terraform azure mysql gtid_mode“ON”错误

[英]terraform azure mysql gtid_mode "ON" error

我正在尝试使用 terraform 在 azure 上使用一些默认配置创建 mysql,以下是我的代码。 尽管“enforce_gtid_consistency”和“time_zone”正在工作并正在创建,但“gtid_mode”“ON”不起作用我收到以下错误。

resource "azurerm_mysql_server" "main" {
  name                = var.mysql_server_name != "" ? var.mysql_server_name : "mysql-01-${var.instancesuffix}"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name

  administrator_login          = var.mysql_administrator_login
  administrator_login_password = data.mykv.mysql.value

  sku_name   = var.mysql_sku_name
  storage_mb = var.mysql_storage_mb
  version    = var.mysql_version

  auto_grow_enabled                 = true
  backup_retention_days             = 7
  geo_redundant_backup_enabled      = false
  infrastructure_encryption_enabled = true
  public_network_access_enabled     = true
  ssl_enforcement_enabled           = true
  ssl_minimal_tls_version_enforced  = "TLS1_2"
  lifecycle {
    ignore_changes = [tags]
  }
  threat_detection_policy {
    disabled_alerts      = []
    email_account_admins = false
    email_addresses      = []
    enabled              = true
    retention_days       = 0
  }

}
resource "azurerm_mysql_configuration" "time_zone" {
  name                = "time_zone"
  resource_group_name = azurerm_resource_group.main.name
  server_name         = azurerm_mysql_server.main.name
  value               = "+00:00"
}
resource "azurerm_mysql_configuration" "enforce_gtid_consistency" {
  name                = "enforce_gtid_consistency"
  resource_group_name = azurerm_resource_group.main.name
  server_name         = azurerm_mysql_server.main.name
  value               = "ON"
}
resource "azurerm_mysql_configuration" "gtid_mode" {
  name                = "gtid_mode"
  resource_group_name = azurerm_resource_group.main.name
  server_name         = azurerm_mysql_server.main.name
  value               = "ON"

}
Error: waiting for creation of Configuration: (Name "gtid_mode" / Server Name "mysql-01" / Resource Group "myrg-01"): Code="InternalServerError" Message="An unexpected error occured while processing the request. Tracking ID: 'h59fr7f-18uo-90db-tb20-5y65d34btb04'"
  on resources.tf line 164, in resource "azurerm_mysql_configuration" "gtid_mode":
 164: resource "azurerm_mysql_configuration" "gtid_mode" {

正如我在评论中提到,该gtid_mode只能按顺序启用,直接接通不会evenif依赖工作设定enforce_gtid_consistency

在此处输入图片说明

因此,作为解决方案,您必须按顺序进行设置:

  1. OFF_PERMISSIVE
  2. ON_PERMISSIVE

我对您的代码进行了一些更改,如下所示:

主文件

provider "azurerm"{
    features{}
}
data "azurerm_resource_group" "main"{
    name = "resourcegroup"
}
data "azurerm_key_vault" "kv"{
    name = "ansumantestkv1234"
    resource_group_name = "resourcegroup"
}
data "azurerm_key_vault_secret" "name" {
  name = "mysqlpassword"
  key_vault_id = data.azurerm_key_vault.kv.id
}
resource "azurerm_mysql_server" "main" {
  name                = var.mysql_server_name
  location            = data.azurerm_resource_group.main.location
  resource_group_name = data.azurerm_resource_group.main.name

  administrator_login          = var.mysql_administrator_login
  administrator_login_password = data.azurerm_key_vault_secret.name.value

  sku_name   = var.mysql_sku_name
  storage_mb = var.mysql_storage_mb
  version    = var.mysql_version

  auto_grow_enabled                 = true
  backup_retention_days             = 7
  geo_redundant_backup_enabled      = false
  infrastructure_encryption_enabled = true
  public_network_access_enabled     = true
  ssl_enforcement_enabled           = true
  ssl_minimal_tls_version_enforced  = "TLS1_2"
  threat_detection_policy {
    disabled_alerts      = []
    email_account_admins = false
    email_addresses      = []
    enabled              = true
    retention_days       = 0
  }

}

resource "azurerm_mysql_configuration" "time_zone" {
  name                = "time_zone"
  resource_group_name = data.azurerm_resource_group.main.name
  server_name         = azurerm_mysql_server.main.name
  value               = "+00:00"
}
resource "azurerm_mysql_configuration" "enforce_gtid_consistency" {
  name                = "enforce_gtid_consistency"
  resource_group_name = data.azurerm_resource_group.main.name
  server_name         = azurerm_mysql_server.main.name
  value               = "ON"
  depends_on = [
    azurerm_mysql_configuration.time_zone
  ]
}
resource "azurerm_mysql_configuration" "gtid_mode_OFF_permissive" {
  name                = "gtid_mode"
  resource_group_name = data.azurerm_resource_group.main.name
  server_name         = azurerm_mysql_server.main.name
  value               = "OFF_PERMISSIVE"
 depends_on = [
  azurerm_mysql_configuration.enforce_gtid_consistency,
 ]
}
resource "azurerm_mysql_configuration" "gtid_mode_ON_Permissive" {
  name                = "gtid_mode"
  resource_group_name = data.azurerm_resource_group.main.name
  server_name         = azurerm_mysql_server.main.name
  value               = "ON_PERMISSIVE"
 depends_on = [
  azurerm_mysql_configuration.gtid_mode_OFF_permissive
 ]
}
resource "azurerm_mysql_configuration" "gtid_mode_ON" {
  name                = "gtid_mode"
  resource_group_name = data.azurerm_resource_group.main.name
  server_name         = azurerm_mysql_server.main.name
  value               = "ON"
 depends_on = [
  azurerm_mysql_configuration.gtid_mode_ON_Permissive
 ]
}

变量.tf:

variable "mysql_server_name" {
  default = "ansumanmysqlserver"
}

variable "mysql_administrator_login" {
  default = "ansuman"
}

variable "mysql_sku_name" {
  default = "GP_Gen5_2"
}
variable "mysql_storage_mb" {
  default = "5120"
}
variable "mysql_version" {
  default = "5.7"
}

输出:

在此处输入图片说明

在此处输入图片说明

参考:

MySQL :: MySQL 8.0 参考手册 :: 17.1.4.2 在线启用 GTID 事务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM