本页面介绍如何创建 Cloud SQL for MySQL 实例。
如需详细了解所有实例设置,请参阅实例设置。
新创建的实例具有四个系统数据库:
information_schema
:提供对数据库元数据的访问权限,这些元数据是关于 MySQL 服务器的信息。mysql
:系统架构。它包含一些表,这些表用于存储 MySQL 服务器运行时所需的信息。performance_schema
:用于在较低级别监控 MySQL 服务器执行的功能。sys
:包含一组对象,可帮助 DBA 和开发者解释由性能架构收集的数据。
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
确保您的用户账号具有 Cloud SQL Admin 和 Compute Viewer 角色。
详细了解角色和权限。
创建一个 MySQL 实例
控制台
-
在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。
- 点击创建实例。
- 在创建实例页面的选择数据库引擎面板上,点击选择 MySQL。
- 在实例信息窗格的实例 ID 字段中,输入您的实例的 ID。
无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。
- 为根用户设置密码。
虽然可以选择设置无密码,但出于安全考虑,不建议这样做。
可选:按如下方式为实例配置密码政策:
- 选中启用密码政策复选框。
- 点击设置密码政策按钮,设置以下一个或多个选项,然后点击保存。
- 最短长度:指定密码必须包含的字符数下限。
- 密码复杂度:检查密码是否为小写字母、大写字母、数字和非字母数字字符的组合。
- 限制密码重用:指定不能重复使用的先前密码数量。
仅受 Cloud SQL for MySQL 8.0 及更高版本支持。
- 禁止使用用户名:禁止在密码中使用用户名。
- 为您的实例选择数据库版本:MySQL 8.4、MySQL 8.0(默认)、MySQL 5.7 或 MySQL 5.6。
- 可选:选择显示次要版本。 然后,选择默认次要版本以外的次要版本。
- 为您的实例选择 Cloud SQL 版本:
Enterprise
或Enterprise plus
。 如需详细了解 Cloud SQL 版本,请参阅 Cloud SQL 版本简介。 - 在选择区域和可用区可用性部分,为实例选择区域和可用区。
区域可用性可能因 Cloud SQL 版本而异。如需了解详情,请参阅实例设置简介。
将实例与访问实例的资源置于相同区域内。以后无法更改选择的区域。大多数情况下,您不需要指定可用区。
如果将实例配置为高可用性示例,则可以同时选择主要可用区和次要可用区。
在创建实例期间使用次要可用区时,适用以下条件:
- 主要可用区默认为
Any
,次要可用区默认为Any (different from primary)
。 - 如果同时指定主要可用区和次要可用区,则它们必须是不同的可用区。
- 主要可用区默认为
- 在自定义实例部分,更新实例的设置。首先点击显示配置选项以显示设置组。然后展开所需群组以查看和自定义设置。所有选定选项的总结会显示在右侧。
自定义这些实例设置是可选操作。系统会为没有进行自定义的所有设置分配默认值。
下表是实例设置的快速参考。如需详细了解各项设置,请参阅实例设置页面。
设置 备注 机器类型 机器类型 从共享核心或专用核心中进行选择。对于共享核心,每种机器类型都按实例的 CPU(核心)数量和内存量进行分类。 核心数 实例的 vCPU 数。 了解详情。 内存 实例的内存量(以 GB 为单位)。 了解详情。 自定义 对于专用核心机器类型,请选择自定义按钮以创建具有自定义配置的实例,而不是选择预定义的配置。选择此选项后,需要为实例选择核心数量和内存量。了解详情。 存储 存储类型 此设置决定您的实例使用 SSD 还是 HDD 存储空间。了解详情。 存储空间容量 为实例预配的存储空间量。了解详情。 启用存储空间自动扩容功能 该设置决定了在可用空间不足时,Cloud SQL 是否自动为您的实例提供更多存储空间。了解详情。 加密 由 Google 管理的加密 默认选项。 客户管理的加密密钥 (CMEK) 选择此项以将您的密钥与 Google Cloud Key Management Service 搭配使用。了解详情。 连接 专用 IP 为您的实例添加专用 IP 地址。需要进行额外配置,才能连接到实例。
(可选)您可以为实例指定分配的 IP 地址范围以用于连接。- 展开显示分配的 IP 范围选项。
- 从下拉菜单中选择一个 IP 地址范围。
您的实例可同时具有公共 IP 地址和专用 IP 地址。
- 详细了解如何使用专用 IP。
- 详细了解分配的 IP 地址范围。
公共 IP 为您的实例添加公共 IP 地址。然后,您可以添加已获授权的网络来连接到该实例。 您的实例可同时具有公共 IP 地址和专用 IP 地址。
详细了解如何使用公共 IP 地址。
已获授权的网络 添加新网络的名称和网络地址。了解详情。 Google Cloud 服务的专用路径 选中此复选框即表示您允许其他 Google Cloud 服务(例如 BigQuery)访问 Cloud SQL 中的数据,并通过专用连接对此数据进行查询。
数据保护 自动备份 您希望系统开始执行备份的时间范围。 了解详情。 选择存储备份的位置 对于大多数用例,请选择多区域。如果需要将备份存储在特定区域中(例如出于监管原因而需要这样做),请选择“区域”并从“位置”下拉菜单中选择您的区域。 选择要存储多少个自动备份 您想要保留的自动备份数量(1 到 365 天)。了解详情。 启用时间点恢复 启用时间点恢复和预写式日志记录。了解详情。 启用删除防护 决定是否保护实例免遭意外删除。了解详情。 选择要保留多少天的日志 将预写式日志保留时间配置为 1 到 7 天。默认设置为 7 天。了解详情。 维护 首选时段 该设置用于确定 Cloud SQL 可对您的实例执行中断性维护的时段(时长为一小时)。如果您没有设置此时段,则系统可能会随时执行中断性维护。了解详情。 更新顺序 相对于同一项目内的其他实例,此实例的首选更新时间。了解详情。 标志 添加标志 您可以使用数据库标志来控制实例的设置和参数。了解详情。 标签 添加标签 为您添加的每个标签添加键和值。您可以使用标签来帮助组织实例。 数据缓存 启用数据缓存(可选) 为 Cloud SQL for MySQL Enterprise Plus 版本实例启用数据缓存。如需详细了解数据缓存,请参阅数据缓存。 -
点击创建实例。
注意:创建实例可能需要几分钟时间。但是,您可以在创建实例时查看实例的相关信息。
如需以明文形式查看密码,请点击显示密码图标。
您可以手动输入密码,也可以点击生成以让 Cloud SQL 自动为您创建密码。
在创建实例后,数据库版本便无法修改。
gcloud
如需了解如何安装和开始使用 gcloud CLI,请参阅安装 gcloud CLI。如需了解如何启动 Cloud Shell,请参阅 Cloud Shell 文档。
- 使用
gcloud sql instances create
命令创建实例: - vCPU 的数量必须为 1 或介于 2 至 96 之间的偶数。
- 内存必须符合以下条件:
- 每个 vCPU 的内存量介于 0.9 至 6.5 GB 之间
- 内存量是 256 MB 的倍数
- 内存量至少为 3.75 GB (3840 MB)
- 可用区必须是有效的可用区。
- 如果指定了次要可用区,则必须指定主要可用区。
- 如果同时指定主要可用区和次要可用区,则它们必须是不同的可用区。
- 如果指定了主要可用区和次要可用区,则它们必须属于同一区域。
- 使用
--no-assign-ip
参数。 - 使用
--network
参数指定要用于创建专用连接的 VPC 网络的名称。 - 可用区必须是有效的可用区。
- 如果指定了次要可用区,则必须指定主要可用区。
- 请记下系统自动分配的 IP 地址。
如果您未使用 Cloud SQL Auth 代理,则需要使用此地址作为应用或工具用来连接实例的主机地址。
- 为 MySQL 用户“root@%”设置密码:
gcloud sql users set-password root \ --host=% \ --instance INSTANCE_NAME \ --password PASSWORD
对于 Cloud SQL 企业 Plus 版实例:
gcloud sql instances create INSTANCE_NAME \ --region=REGION \ --tier=TIER \ --database-version=DATABASE_VERSION \ --edition=ENTERPRISE_PLUS
对于 Cloud SQL 企业版实例:
gcloud sql instances create INSTANCE_NAME \ --cpu=NUMBER_CPUS \ --memory=MEMORY_SIZE \ --region=REGION
--tier
标志:gcloud sql instances create INSTANCE_NAME \ --tier=API_TIER_STRING \ --region=REGION
vCPU 和内存大小值存在一定的限制:
例如,以下字符串会创建一个具有两个 vCPU 和 7,680 MB 内存的 Cloud SQL 企业版实例:
gcloud sql instances create myinstance \ --database-version=MYSQL_8_0 \ --cpu=2 \ --memory=7680MB \ --region=us-central1
以下命令会创建一个具有四个核心的 Cloud SQL 企业 Plus 版实例:
gcloud sql instances create myinstance \ --database-version=MYSQL_8_0_31 \ --tier=db-perf-optimized-N-4 \ --edition=ENTERPRISE_PLUS \ --region=us-central1
REGION 的默认值为 us-central1
。
请勿在实例名称中包含敏感信息或个人身份信息,因为此名称对外可见。
无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。
如果您要创建高可用性实例,则可以使用 --zone
和 --secondary-zone
参数同时指定主要可用区和次要可用区。在创建或修改实例期间使用次要可用区时,适用以下条件:
您可以添加更多参数来确定其他实例设置:
设置 | 参数 | 备注 |
---|---|---|
必需参数 | ||
数据库版本 | --database-version |
数据库版本,它基于您的 Cloud SQL 版本。 |
区域 | --region |
查看有效值。 |
设置密码政策 | ||
启用密码政策 | --enable-password-policy |
使用时启用密码政策。默认情况下,密码政策处于停用状态。使用 --clear-password-policy 参数停用时,其他密码政策参数会被重置。 |
密码长度下限 | --password-policy-min-length |
指定密码必须包含的最少字符数。 |
密码复杂度 | --password-policy-complexity |
启用密码复杂度检查,以确保密码包含以下所有字符类型:小写字母、大写字母、数字和非字母数字字符。将值设置为 COMPLEXITY_DEFAULT : |
限制重用密码 | --password-policy-reuse-interval |
指定不能重复使用的先前密码数量。 仅受 Cloud SQL for MySQL 8.0 及更高版本支持。 |
不允许用户名 | --password-policy-disallow-username-substring |
禁止在密码中使用用户名。使用 --no-password-policy-disallow-username-substring 参数停用该检查。 |
连接 | ||
专用 IP | --network
|
--network :指定您要用于此实例的 VPC 网络的名称。网络必须已配置专用服务访问通道。仅适用于 Beta 版命令 (gcloud beta sql instances create )。
此参数仅在以下情况下有效: 详细了解如何配置专用 IP 地址。 |
公共 IP | --authorized-networks |
只有来自已获授权网络的公共 IP 连接才能连接到您的实例。了解详情。 |
强制执行 SSL |
|
|
机器类型和存储空间 | ||
机器类型 | --tier |
用于指定共享核心实例(db-f1-micro 或 db-g1-small )。对于自定义实例配置,请使用 --cpu 或 --memory 参数。请参阅自定义实例配置。 |
存储类型 | --storage-type |
此设置决定您的实例使用 SSD 还是 HDD 存储空间。了解详情。 |
存储空间容量 | --storage-size |
为实例预配的存储空间量(以 GB 为单位)。 了解详情。 |
存储空间自动扩容 | --storage-auto-increase |
该设置决定了在可用空间不足时,Cloud SQL 是否自动为您的实例提供更多存储空间。了解详情。 |
存储空间自动扩容上限 | --storage-auto-increase-limit |
此设置决定了 Cloud SQL 能自动将存储空间扩容到多大的程度。仅适用于 Beta 版命令 (gcloud beta sql instances create )。
了解详情。
|
数据缓存(可选) | --enable-data-cache |
为实例启用或停用数据缓存。如需了解详情,请参阅数据缓存。 |
自动备份和高可用性 | ||
高可用性 | --availability-type |
对于高可用性实例,请将此项设置为 REGIONAL 。
了解详情。
|
次要可用区 | --secondary-zone |
如果要创建高可用性实例,则可以使用 --zone 和 --secondary-zone parameters 指定主要可用区和次要可用区。在创建或修改实例期间使用次要可用区时,适用以下条件:如果指定了主要可用区和次要可用区,则它们必须是不同的可用区。 如果指定了主要可用区和次要可用区,则它们必须属于同一区域。 |
自动备份 | --backup-start-time |
您希望系统开始执行备份的时间范围。 了解详情。 |
自动备份的保留设置 | --retained-backups-count |
要保留的自动备份数量。了解详情。 |
二进制日志 | --enable-bin-log |
二进制日志记录支持副本和时间点恢复。了解详情。 |
二进制日志记录的保留设置 | --retained-transaction-log-days |
要为时间点恢复保留二进制日志的天数。了解详情。 |
添加数据库标志 | ||
数据库标志 | --database-flags |
您可以使用数据库标志来控制实例的设置和参数。详细了解数据库标志。 详细了解如何设置此参数的格式。 |
维护时间表 | ||
维护窗口 | --maintenance-window-day 、
--maintenance-window-hour |
该设置用于确定 Cloud SQL 可对您的实例执行中断性维护的时间范围(时长为一小时)。如果您没有设置此时间范围,则系统可能会随时执行中断性维护。 了解详情。 |
维护时间 | --maintenance-release-channel |
相对于同一项目内的其他实例,此实例的首选更新时间。如果提前更新,则使用 preview ;如果延后更新,则使用 production 。了解详情。 |
Terraform
如需创建实例,请使用 Terraform 资源。
应用更改
如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。
准备 Cloud Shell
- 启动 Cloud Shell。
-
设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。
您只需为每个项目运行一次以下命令,即可在任何目录中运行它。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。
准备目录
每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。
-
在 Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有
.tf
扩展名,例如main.tf
。在本教程中,该文件称为main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。
将示例代码复制到新创建的
main.tf
中。(可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。
- 查看和修改要应用到您的环境的示例参数。
- 保存更改。
-
初始化 Terraform。您只需为每个目录执行一次此操作。
terraform init
(可选)如需使用最新的 Google 提供程序版本,请添加
-upgrade
选项:terraform init -upgrade
应用更改
-
查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
terraform plan
根据需要更正配置。
-
通过运行以下命令并在提示符处输入
yes
来应用 Terraform 配置:terraform apply
等待 Terraform 显示“应用完成!”消息。
- 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。
删除更改
如需删除更改,请执行以下操作:
- 如需停用删除防护,请在 Terraform 配置文件中将
deletion_protection
参数设置为false
。deletion_protection = "false"
- 运行以下命令并在提示符处输入
yes
,以应用更新后的 Terraform 配置:terraform apply
-
运行以下命令并在提示符处输入
yes
,以移除之前使用 Terraform 配置应用的资源:terraform destroy
REST v1
创建实例
本示例创建一个实例。此外,还包括一些可选参数,例如备份和二进制日志记录。如需查看此调用的完整参数列表,请参阅 Instances:insert 页面。如需了解实例设置,包括针对区域的有效值,请参阅实例设置。
请勿在实例 ID 中包含敏感信息或个人身份信息,因为此 ID 对外可见。
无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目 ID
- INSTANCE_ID:您的实例 ID
- DATABASE_VERSION:数据库版本。例如:
MYSQL_8_4
或MYSQL_8_0_37
。如果您未指定数据库版本,则默认数据库版本为MYSQL_8_0
。 - REGION:区域
- MACHINE_TYPE:您的机器类型
- EDITION_TYPE:您的 Cloud SQL 版本
- DATA_CACHE_ENABLED:(可选)设置为
true
可为您的实例启用数据缓存 - PRIVATE_NETWORK:指定要用于此实例的 Virtual Private Cloud (VPC) 网络的名称。该网络必须已配置专用服务访问通道。
- AUTHORIZED_NETWORKS:对于公共 IP 连接,请指定可连接到实例的已获授权网络的连接。
如需在创建实例时设置密码政策,请在请求中添加 passwordValidationPolicy 对象。根据需要设置以下参数:
enablePasswordPolicy
:设置为true
时启用密码政策。如需移除密码政策,您可以使用
PATCH
请求,并使用null
作为enablePasswordPolicy
的值。在这种情况下,其他密码政策参数会重置。minLength
:指定密码必须包含的最少字符数。complexity
:检查密码是否为小写字母、大写字母、数字和非字母数字字符的组合。默认值为COMPLEXITY_DEFAULT
。reuseInterval
:指定不能重复使用的先前密码数量。仅受 Cloud SQL for MySQL 8.0 及更高版本支持。
disallowUsernameSubstring
:设置为true
时,禁止在密码中使用用户名。
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
请求 JSON 正文:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "settings": { "tier": "MACHINE_TYPE", "edition": "EDITION_TYPE", "dataCacheConfig" = { "dataCacheEnabled": DATA_CACHE_ENABLED }, "backupConfiguration": { "binaryLogEnabled": true, "enabled": true }, "passwordValidationPolicy": { "enablePasswordPolicy": true "minLength": "MIN_LENGTH", "complexity": COMPLEXITY_DEFAULT, "reuseInterval": "REUSE_INTERVAL", "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING", } "ipConfiguration": { "privateNetwork": "PRIVATE_NETWORK", "authorizedNetworks": [AUTHORIZED_NETWORKS], "ipv4Enabled": false, "enablePrivatePathForGoogleCloudServices": true } } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2019-09-25T22:19:33.735Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
该响应是一个长时间运行的操作,可能需要几分钟才能完成。
更新 root 密码
实例完成初始化后,请更新 root 密码:
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:在上一步中创建的实例 ID
- root-password:所需的 root 密码
HTTP 方法和网址:
PUT https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=%25&name=root
请求 JSON 正文:
{ "name": "root", "host": "%", "password": "root-password" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2019-09-26T14:32:30.592Z", "startTime": "2019-09-26T14:32:30.594Z", "endTime": "2019-09-26T14:32:33.518Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id", "targetProject": "project-id" }
检索 IPv4 地址
检索为新实例自动分配的 IPv4 地址:
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:在上一步中创建的实例 ID
HTTP 方法和网址:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "MYSQL_8_0_18", "settings": { "authorizedGaeApplications": [], "tier": "db-f1-micro", "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "authorizedNetworks": [], "ipv4Enabled": true }, "locationPreference": { "zone": "us-west1-a", "kind": "sql#locationPreference" }, "dataDiskType": "PD_SSD", "backupConfiguration": { "startTime": "18:00", "kind": "sql#backupConfiguration", "enabled": true, "binaryLogEnabled": true }, "settingsVersion": "1", "storageAutoResizeLimit": "0", "storageAutoResize": true, "dataDiskSizeGb": "10" }, "etag": "--redacted--", "ipAddresses": [ { "type": "PRIMARY", "ipAddress": "10.0.0.1" } ], "serverCaCert": { ... }, "instanceType": "CLOUD_SQL_INSTANCE", "project": "project-id", "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com", "backendType": "SECOND_GEN", "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id", "connectionName": "project-id:region:instance-id", "name": "instance-id", "region": "us-west1", "gceZone": "us-west1-a" }
在响应中查找 ipAddress
字段。
REST v1beta4
创建实例
本示例创建一个实例。此外,还包括一些可选参数,例如备份和二进制日志记录。如需查看此调用的完整参数列表,请参阅 instances:insert 页面。如需了解实例设置,包括针对区域的有效值,请参阅实例设置。
请勿在实例 ID 中包含敏感信息或个人身份信息,因为此 ID 对外可见。
无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的项目 ID
- INSTANCE_ID:您的实例 ID
- DATABASE_VERSION:数据库版本。例如:
MYSQL_8_4
或MYSQL_8_0_37
。如果您未指定数据库版本,则默认版本为MYSQL_8_0
。 - REGION:区域
- MACHINE_TYPE:您的机器类型
- EDITION_TYPE:您的 Cloud SQL 版本
- DATA_CACHE_ENABLED:(可选)设置为
true
可为您的实例启用数据缓存
如需在创建实例时设置密码政策,请在请求中添加 passwordValidationPolicy 对象。根据需要设置以下参数:
enablePasswordPolicy
:设置为true
时启用密码政策。如需移除密码政策,您可以使用
PATCH
请求,并使用null
作为enablePasswordPolicy
的值。在这种情况下,其他密码政策参数会重置。minLength
:指定密码必须包含的最少字符数。complexity
:检查密码是否为小写字母、大写字母、数字和非字母数字字符的组合。默认值为COMPLEXITY_DEFAULT
。reuseInterval
:指定不能重复使用的先前密码数量。仅受 Cloud SQL for MySQL 8.0 及更高版本支持。
disallowUsernameSubstring
:设置为true
时,禁止在密码中使用用户名。
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances
请求 JSON 正文:
{ "name": "INSTANCE_ID", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "settings": { "tier": "MACHINE_TYPE", "edition": "EDITION_TYPE", "dataCacheConfig" { "dataCacheEnabled": DATA_CACHE_ENABLED }, "backupConfiguration": { "binaryLogEnabled": true, "enabled": true }, "passwordValidationPolicy": { "enablePasswordPolicy": true "minLength": "MIN_LENGTH", "complexity": COMPLEXITY_DEFAULT, "reuseInterval": "REUSE_INTERVAL", "disallowUsernameSubstring": "DISALLOW_USERNAME_SUBSTRING", } } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID", "status": "PENDING", "user": "user@example.com", "insertTime": "2019-09-25T22:19:33.735Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
该响应是一个长时间运行的操作,可能需要几分钟才能完成。
更新 root 密码
实例完成初始化后,请更新 root 密码:
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:在上一步中创建的实例 ID
- root-password:所需的 root 密码
HTTP 方法和网址:
PUT https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=root
请求 JSON 正文:
{ "name": "root", "host": "%", "password": "root-password" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "status": "DONE", "user": "user@example.com", "insertTime": "2019-09-26T14:32:30.592Z", "startTime": "2019-09-26T14:32:30.594Z", "endTime": "2019-09-26T14:32:33.518Z", "operationType": "UPDATE_USER", "name": "operation-id", "targetId": "instance-id", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id", "targetProject": "project-id" }
该响应是一个长时间运行的操作,可能需要几分钟才能完成。
检索 IPv4 地址
检索为新实例自动分配的 IPv4 地址:
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的项目 ID
- instance-id:在上一步中创建的实例 ID
HTTP 方法和网址:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "MYSQL_8_0_18", "settings": { "authorizedGaeApplications": [], "tier": "db-f1-micro", "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "activationPolicy": "ALWAYS", "ipConfiguration": { "authorizedNetworks": [], "ipv4Enabled": true }, "locationPreference": { "zone": "us-west1-a", "kind": "sql#locationPreference" }, "dataDiskType": "PD_SSD", "backupConfiguration": { "startTime": "18:00", "kind": "sql#backupConfiguration", "enabled": true, "binaryLogEnabled": true }, "settingsVersion": "1", "storageAutoResizeLimit": "0", "storageAutoResize": true, "dataDiskSizeGb": "10" }, "etag": "--redacted--", "ipAddresses": [ { "type": "PRIMARY", "ipAddress": "10.0.0.1" } ], "serverCaCert": { ... }, "instanceType": "CLOUD_SQL_INSTANCE", "project": "project-id", "serviceAccountEmailAddress": "redacted@gcp-sa-cloud-sql.iam.gserviceaccount.com", "backendType": "SECOND_GEN", "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id", "connectionName": "project-id:region:instance-id", "name": "instance-id", "region": "us-west1", "gceZone": "us-west1-a" }
在响应中查找 ipAddress
字段。
为 MySQL 8.0 指定数据库次要版本
您可以使用 gcloud
或 REST API 指定现有 MySQL 8.0 实例的次要版本。
gcloud
结合使用 gcloud sql instances create
和 --database-version
标志。
在运行命令之前替换以下变量:
- INSTANCE_NAME:实例的名称。
- DATABASE_VERSION:实例的数据库次要版本:
MYSQL_8_0_18
、MYSQL_8_0_26
、MYSQL_8_0_27
、MYSQL_8_0_28
、MYSQL_8_0_29
、MYSQL_8_0_30
、MYSQL_8_0_31
(MySQL 8.0 的默认次要版本)、MYSQL_8_0_32
、MYSQL_8_0_33
、MYSQL_8_0_34
、MYSQL_8_0_35
、MYSQL_8_0_36
或MYSQL_8_0_37
。如果您指定MYSQL_8_0
,则系统使用默认次要版本。如果您未指定此标志,则系统使用默认主要版本
MYSQL_8_0
。
gcloud sql instances create INSTANCE_NAME \ --database-version=DATABASE_VERSION
如需了解详情,请参阅有关使用 gcloud
创建实例的文档。
REST v1
使用带有 instances:insert 方法和 databaseVersion
标志的 POST 请求。
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
- project_id:项目的 ID。
- instance_id:实例的名称。
- databaseVersion:实例的数据库版本:
MYSQL_8_0_18
、MYSQL_8_0_26
、MYSQL_8_0_27
、MYSQL_8_0_28
、MYSQL_8_0_29
、MYSQL_8_0_30
、MYSQL_8_0_31
(MySQL 8.0 的默认次要版本)、MYSQL_8_0_32
、MYSQL_8_0_33
、MYSQL_8_0_34
、MYSQL_8_0_35
、MYSQL_8_0_36
或MYSQL_8_0_37
。如果您将版本指定为MYSQL_8_0
,则系统会使用默认次要版本。如果您未指定databaseVersion
标志,则系统使用默认主要版本MYSQL_8_0
。
如需了解详情,请参阅有关使用 REST v1 API 创建实例的文档。
REST v1beta4
使用带有 instances:insert 方法和 databaseVersion
标志的 POST 请求。
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
在使用任何请求数据之前,请先替换以下变量:
- project_id:项目的 ID。
- instance_id:实例的名称。
- databaseVersion:实例的数据库版本:
MYSQL_8_0_18
、MYSQL_8_0_26
、MYSQL_8_0_27
、MYSQL_8_0_28
、MYSQL_8_0_29
、MYSQL_8_0_30
、MYSQL_8_0_31
(MySQL 8.0 的默认次要版本)、MYSQL_8_0_32
或MYSQL_8_0_33
。MYSQL_8_0_34
、MYSQL_8_0_35
、MYSQL_8_0_36
或MYSQL_8_0_37
。如果您指定MYSQL_8_0
,则系统使用默认次要版本。如果您未指定databaseVersion
标志,则系统使用默认主要版本MYSQL_8_0
。
如需了解详情,请参阅有关使用 REST v1beta4 API 创建实例的文档。
读取副本、克隆和 PITR 的数据库次要版本
创建读取副本时,您可以为这个读取副本指定数据库次要版本。默认情况下,系统会使用默认次要版本创建新的读取副本。
克隆实例时,新创建的实例与源实例使用相同的次要版本。
执行时间点恢复时,新创建的实例与源实例使用相同的数据库次要版本。
自定义实例配置
确定可供 Cloud SQL 实例使用的内存和虚拟核心。 机器类型可用性由您的 Cloud SQL 版本决定。
对于需要实时处理的工作负载(例如在线事务处理 [OLTP]),请确保实例具有足够的内存,能够容纳整个工作集。但是,还存在其他影响内存要求的因素,例如活跃连接数和内部开销进程。您应该执行负载测试,避免在生产环境中出现性能问题。
配置实例时,请选择足够的内存和 vCPU 来处理您的工作负载,并随着工作负载的增加进行升级。机器 vCPU 不足的机器配置可能会导致不再纳入服务等级协议 (SLA) 的覆盖范围。如需了解详情,请参阅运维指南。
Cloud SQL Enterprise Plus 版实例的机器类型
对于 Cloud SQL Enterprise Plus 版本实例,机器类型预定义如下:
企业 Plus 版机器类型 | vCPUs | 内存 (GB) | 本地 SSD |
---|---|---|---|
db-perf-optimized-N-2 | 2 | 16 | 375 |
db-perf-optimized-N-4 | 4 | 32 | 375 |
db-perf-optimized-N-8 | 8 | 64 | 375 |
db-perf-optimized-N-16 | 16 | 128 | 750 |
db-perf-optimized-N-32 | 32 | 256 | 1500 |
db-perf-optimized-N-48 | 48 | 384 | 3000 |
db-perf-optimized-N-64 | 64 | 512 | 6000 |
db-perf-optimized-N-80 | 80 | 640 | 6000 |
db-perf-optimized-N-96 | 96 | 768 | 6000 |
db-perf-optimized-N-128 | 128 | 864 | 9000 |
Cloud SQL Enterprise 版实例的机器类型
对于 Cloud SQL Enterprise 版实例,您还可以使用 gcloud sql
instances create
命令来创建自定义实例配置。自定义实例配置允许您选择实例需要的内存大小和 CPU。这种灵活性可让您选择适合您的工作负载的虚拟机类型。
机器类型名称使用以下格式:db-custom-#-#
将第一个 # 占位符替换为机器中的 CPU 数量,将第二个 # 占位符替换为机器中的内存量。
例如,如果您的机器名称为 db-custom
,并且您的机器具有 1 个 CPU 和 3840 MB RAM,则机器格式为 db-custom-1-3840
。
选择 CPU 数量和内存量时,您选择的配置有一些限制:
- vCPU 的数量必须为 1 或介于 2 至 96 之间的偶数。
- 内存必须符合以下条件:
- 每个 vCPU 的内存量介于 0.9 至 6.5 GB 之间
- 内存量是 256 MB 的倍数
- 内存量至少为 3.75 GB (3840 MB)
下表列出了每种旧版机器类型的名称、每种机器类型的 CPU 数和 RAM 以及每种机器类型生成的字符串。
您可以通过在 Google Cloud 控制台中指定等效的 CPU 和 RAM、使用 gcloud CLI 或在 API 中指定 db-custom-#-#
来创建等效的机器类型。
旧版机器类型 | vCPUs | 内存 (MB) | db-custom-CPU-RAM 字符串(API 层字符串) |
---|---|---|---|
db-n1-standard-1 | 1 | 3840 | db-custom-1-3840 |
db-n1-standard-2 | 2 | 7680 | db-custom-2-7680 |
db-n1-standard-4 | 4 | 15360 | db-custom-4-15360 |
db-n1-standard-8 | 8 | 30720 | db-custom-8-30720 |
db-n1-standard-16 | 16 | 61440 | db-custom-16-61440 |
db-n1-standard-32 | 32 | 122880 | db-custom-32-122880 |
db-n1-standard-64 | 64 | 245760 | db-custom-64-245760 |
db-n1-standard-96 | 96 | 368640 | db-custom-96-368640 |
db-n1-highmem-2 | 2 | 13312 | db-custom-2-13312 |
db-n1-highmem-4 | 4 | 26624 | db-custom-4-26624 |
db-n1-highmem-8 | 8 | 53248 | db-custom-8-53248 |
db-n1-highmem-16 | 16 | 106496 | db-custom-16-106496 |
db-n1-highmem-32 | 32 | 212992 | db-custom-32-212992 |
db-n1-highmem-64 | 64 | 425984 | db-custom-64-425984 |
db-n1-highmem-96 | 96 | 638976 | db-custom-96-638976 |
问题排查
问题 | 问题排查 |
---|---|
错误消息:Failed to create subnetwork. Couldn't
find free blocks in allocated IP ranges. Please allocate new ranges for
this service provider 。 |
分配的 IP 范围中没有更多的可用地址。可能存在多种潜在情况:
如需解决此问题,您可以扩展现有已分配的 IP 范围,也可以为专用服务连接分配其他 IP 范围。如需了解详情,请参阅分配 IP 地址范围。 如果您在创建 Cloud SQL 实例时使用 如果您要分配新范围,请注意分配的范围不会与任何现有的分配范围重叠。 创建新的 IP 地址范围后,使用以下命令更新 VPC 对等互连: gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com \ --ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID \ --force 如果要扩大现有的分配范围,请注意只能扩大分配范围,不能缩减分配范围。例如,如果原始分配范围是 10.0.10.0/24,则新分配范围至少为 10.0.10.0/23。 一般来说,如果从 /24 分配范围开始,对于每个条件(额外的实例类型组、额外的区域),将“/子网掩码位数”递减 1 是一种较好的做法。例如,如果尝试在同一分配范围中创建两个实例类型组,则从 /24 递减到 /23 就足够了。 扩大现有 IP 地址范围后,使用以下命令更新 VPC 对等互连: gcloud services vpc-peerings update \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID |
错误消息:Failed to create subnetwork. Router status is
temporarily unavailable. Please try again later. Help Token:
[token-ID] 。 |
尝试再次创建 Cloud SQL 实例。 |
错误消息:Failed to create subnetwork. Required
'compute.projects.get' permission for PROJECT_ID 。 |
当您使用专用 IP 地址创建实例时,系统会使用 Service Networking API 即时创建一个服务账号。如果您是最近才启用了 Service Networking API,则服务账号可能无法创建,实例创建会失败。在这种情况下,您必须等待服务账号在整个系统中传播,或使用所需权限手动添加。 |