配置数据库标志

本页面介绍如何为 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 仅支持本部分列出的标志。

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
cloud sql xe 存储桶名称 string
存储桶名称必须以 gs:// 前缀开头。
cloud sql xe 输出总磁盘大小 (mb) integer
10512
cloud sql xe 文件保留时间(分钟) integer
010080
cloud sql xe 上传间隔时间(分钟) integer
160
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
1000 ... 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 标志的更多信息。

max server memory (mb)

此标志会限制 Cloud SQL 可为其内部池分配的内存量。一般建议将此标志的值设置为大约 80%,以防止 SQL Server 耗尽 Cloud SQL 实例的所有可用内存。如果您将此值设置为高于 80%,则可能会因内存不足问题而导致不稳定、性能下降和数据库崩溃。

如果您未为此标志设置值,Cloud SQL 会根据实例的 RAM 大小自动管理此值。此外,如果您调整实例大小,Cloud SQL 会自动调整此标志的值,以满足我们对新实例大小的建议。这可确保数据库高效利用资源,防止实例过度分配、崩溃和性能下降。

问题排查

问题 问题排查
您想要修改 Cloud SQL 实例的时区。

如需了解如何更新实例的时区,请参阅实例设置

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

后续步骤