配置数据库标志

本页面介绍如何为 Cloud SQL 配置数据库标志,并列出了可以为实例设置的标志。您可以将数据库标志用于许多操作,包括调整 SQL Server 参数、调整选项以及配置和优化实例。

当您设置、移除或修改数据库实例的标志时,该数据库可能会重启。除非您主动移除,否则实例的此标志值会一直保留。如果实例是副本的来源,并且实例已经重启,那么系统还会重启副本以与实例的当前配置保持一致。

配置数据库标志

设置数据库标志

控制台

  1. Google Cloud 控制台中,选择包含要为其设置数据库标志的 Cloud SQL 实例的项目。
  2. 打开实例,然后点击修改
  3. 向下滚动至标志部分。
  4. 要在实例上设置先前未设置的标志,请点击添加一项,从下拉菜单中选择该标志,然后设置其值。
  5. 点击保存以保存更改。
  6. 在“概览”页的标志下确认更改。

gcloud

修改实例:

gcloud sql instances patch INSTANCE_NAME --database-flags=FLAG1=VALUE1,FLAG2=VALUE2

此命令将覆盖之前设置的所有数据库标志。如需保留这些标志并添加新标志,请为您要在实例上设置的所有标志添加值;任何未明确添加的标志都会设置为默认值。对于不带值的标志,请指定标志名称并后接一个等号(“=”)。

例如,如需设置 1204remote accessremote query timeout (s) 标志,您可以使用以下命令:

gcloud sql instances patch INSTANCE_NAME \
  --database-flags="1204"=on,"remote access"=on,"remote query timeout (s)"=300

Terraform

如需添加数据库标志,请使用 Terraform 资源

resource "google_sql_database_instance" "instance" {
  name             = "sqlserver-instance-flags"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    database_flags {
      name  = "1204"
      value = "on"
    }
    database_flags {
      name  = "remote access"
      value = "on"
    }
    database_flags {
      name  = "remote query timeout (s)"
      value = "300"
    }
    tier = "db-custom-2-7680"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

应用更改

如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。

准备 Cloud Shell

  1. 启动 Cloud Shell
  2. 设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名,例如 main.tf。在本教程中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。

    将示例代码复制到新创建的 main.tf 中。

    (可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。

  3. 查看和修改要应用到您的环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init

    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:

    terraform init -upgrade

应用更改

  1. 查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
    terraform plan

    根据需要更正配置。

  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply

    等待 Terraform 显示“应用完成!”消息。

  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。

删除更改

如需删除更改,请执行以下操作:

  1. 如需停用删除防护,请在 Terraform 配置文件中将 deletion_protection 参数设置为 false
    deletion_protection =  "false"
  2. 运行以下命令并在提示符处输入 yes,以应用更新后的 Terraform 配置:
    terraform apply
  1. 运行以下命令并在提示符处输入 yes,以移除之前使用 Terraform 配置应用的资源:

    terraform destroy

REST v1

设置现有数据库的标志:

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

如果数据库存在已配置的现有标志,请修改先前的命令,将其包含在内。PATCH 命令会使用请求中指定的标志覆盖现有标志。

REST v1beta4

设置现有数据库的标志:

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "databaseFlags":
    [
      {
        "name": "flag_name",
        "value": "flag_value"
      }
    ]
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

如果数据库存在已配置的现有标志,请修改先前的命令,将其包含在内。PATCH 命令会使用请求中指定的标志覆盖现有标志。

将所有标志恢复为其默认值

控制台

  1. Google Cloud 控制台中,选择包含要清除所有标志的 Cloud SQL 实例的项目。
  2. 打开实例,然后点击修改
  3. 打开数据库标志部分。
  4. 点击显示的所有标志旁的 X
  5. 点击保存以保存更改。

gcloud

将实例上的所有标志恢复为其默认值:

gcloud sql instances patch INSTANCE_NAME \
--clear-database-flags

系统会提示您确认实例将重启。

REST v1

清除现有实例的所有标志:

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "databaseFlags": []
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

REST v1beta4

清除现有实例的所有标志:

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

请求 JSON 正文:

{
  "settings":
  {
    "databaseFlags": []
  }
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

确定已为实例设置的数据库标志

如需查看已为 Cloud SQL 实例设置的标志:

控制台

  1. Google Cloud 控制台中,选择包含要查看其已设置数据库标志的 Cloud SQL 实例的项目。
  2. 选择实例,打开其实例概览页面。

    数据库标志部分列出了已设置的数据库标志。

gcloud

获取实例状态:

gcloud sql instances describe INSTANCE_NAME

在输出中,数据库标志作为 databaseFlags 集合列在 settings 下。要详细了解输出中标志的表示法,请参阅实例资源表示法

REST v1

列出实例的已配置标志:

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

在输出中,查找 databaseFlags 字段。

REST v1beta4

列出实例的已配置标志:

在使用任何请求数据之前,请先进行以下替换:

  • project-id:项目 ID
  • instance-id:实例 ID

HTTP 方法和网址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

在输出中,查找 databaseFlags 字段。

支持的标志

下面未提及的标志不受支持。

Cloud SQL 标志 类型
可接受值及备注
是否需要
重启?
1204(跟踪标志) boolean
on | off
1222(跟踪标志) boolean
on | off
1224(跟踪标志) boolean
on | off
2528(跟踪标志) boolean
on | off
3205(跟踪标志) boolean
on | off
3226(跟踪标志) boolean
on | off
3625(跟踪标志) boolean
on | off
4199(跟踪标志) boolean
on | off
4616(跟踪标志) boolean
on | off
7806(跟踪标志) boolean
on | off
access check cache bucket count integer
065536
access check cache quota integer
02147483647
affinity mask integer
21474836482147483647
agent xps boolean
on | off
automatic soft-numa disabled boolean
on | off
cloudsql enable linked servers boolean
on | off
cost threshold for parallelism integer
032767
contained database authentication boolean
on | off
cross db ownership chaining boolean
on | off
cursor threshold integer
-12147483647
default full-text language integer
02147483647
默认语言 integer
032
default trace enabled boolean
on | off
disallow results from triggers boolean
on | off
external scripts enabled boolean
on | off
ft crawl bandwidth (max) integer
032767
ft crawl bandwidth (min) integer
032767
ft notify bandwidth (max) integer
032767
ft notify bandwidth (min) integer
032767
fill factor (%) integer
0100
index create memory (kb) integer
7042147483647
locks integer
50002147483647
max server memory (mb) integer
128 ... 2147483647
Cloud SQL 可能会根据 Microsoft 的建议值,在实例上为此标志设置值。
max text repl size (b) integer
-12147483647
max worker threads integer
12865535
nested triggers boolean
on | off
optimize for ad hoc workloads boolean
on | off
ph timeout (s) integer
13600
query governor cost limit integer
02147483647
query wait (s) integer
-12147483647
recovery interval (min) integer
032767
remote access boolean
on | off
remote login timeout (s) integer
02147483647
remote query timeout (s) integer
02147483647
transform noise words boolean
on | off
two digit year cutoff integer
17539999
user connections integer
01032767
user options integer
032767

问题排查

问题 问题排查
Cloud SQL for SQL Server 不支持修改现有实例的时区。

在 Cloud SQL 中,SQL Server 支持为新实例设置时区,但不支持对现有实例的时区进行设置。

在 Cloud SQL for SQL Server 中,您可以使用 AT TIME ZONE 函数执行时间转换等操作。如需了解此函数,请参阅 AT TIME ZONE (Transact-SQL)

后续步骤