You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Terraform(google/provider ≥4.0.0)实现GCP Cloud SQL导入存储桶SQL Dump?

用Terraform实现Cloud SQL SQL文件导入(等价于gcloud sql import sql)

你可以直接使用Terraform Google Provider的google_sql_import_job资源来实现和gcloud sql import sql完全等价的操作,无需依赖本地执行命令。以下是具体实现方案:

核心配置代码

假设你已经创建了Cloud SQL实例、目标数据库和存储桶,只需添加以下资源定义:

resource "google_sql_import_job" "sql_dump_import" {
  provider = google # 或google-beta,版本≥4.0.0均支持
  name     = "import-sql-dump-${timestamp()}" # 生成唯一Job名称,避免重复执行冲突
  instance = google_sql_database_instance.my_mysql_instance.name
  database = google_sql_database.my_database.name

  import_context {
    file_type = "SQL"
    uri       = "gs://${google_storage_bucket.sql_dump_bucket.name}/sql-dump.sql"

    # 若你的实例需要指定导入用户(如root),可取消注释以下配置
    # user = "root"
  }

  # 确保所有前置资源就绪后再执行导入
  depends_on = [
    google_sql_database_instance.my_mysql_instance,
    google_sql_database.my_database,
    google_storage_bucket.sql_dump_bucket
  ]
}

关键注意事项

  1. 权限配置:必须确保Cloud SQL实例的服务账号拥有存储桶的storage.objects.get权限,否则导入会失败。可通过以下IAM资源配置:
resource "google_storage_bucket_iam_member" "sql_import_access" {
  bucket = google_storage_bucket.sql_dump_bucket.name
  role   = "roles/storage.objectViewer"
  member = "serviceAccount:${google_sql_database_instance.my_mysql_instance.service_account_email}"
}

# 将IAM权限配置加入导入Job的依赖链
resource "google_sql_import_job" "sql_dump_import" {
  # ... 原有配置
  depends_on = [
    google_sql_database_instance.my_mysql_instance,
    google_sql_database.my_database,
    google_storage_bucket.sql_dump_bucket,
    google_storage_bucket_iam_member.sql_import_access
  ]
}
  1. Job唯一性:name字段必须唯一,使用timestamp()可以保证每次执行terraform apply时生成新的Job名称,适合需要重复导入的场景。如果只需要执行一次,也可以手动指定固定名称,但后续修改配置时不会重新触发导入。

  2. 超时处理:若导入的SQL文件较大,可通过timeouts块延长等待时间:

resource "google_sql_import_job" "sql_dump_import" {
  # ... 原有配置
  timeouts {
    create = "2h" # 根据文件大小调整,默认超时时间可能不足
  }
}

内容的提问来源于stack exchange,提问作者agotfrid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:15:22