本页面介绍如何对实例进行高可用性配置。
您可以在创建实例时对实例进行高可用性配置,也可以为现有实例启用高可用性。
如需详细了解高可用性,请参阅高可用性配置概览。
高可用性的旧版配置使用了failover replica 实例。 新配置不使用 failover replica。
相反,它使用 Google 的区域永久性磁盘,该磁盘会在一个区域的两个可用区之间在块级别同步复制数据。如果您的现有 MySQL 实例使用的是旧版高可用性配置,则可以更新配置以使用当前版本。如需了解与旧版高可用性配置相关的其他过程,请参阅旧版高可用性配置。
创建采用高可用性配置的新实例
在创建实例并为其采用高可用性配置时,Cloud SQL 会将其创建为区域实例。
要创建采用高可用性配置的实例,请按照如下所述操作:
控制台
-
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
- 选择创建实例。
- 选择数据库引擎。
- 在选择区域和可用区可用性部分,选择多个可用区(高可用性)。
- 展开指定可用区。
- 选择主要和次要可用区。在创建或修改实例期间使用次要可用区时,适用以下条件:
- 主要可用区默认为
Any,次要可用区默认为Any (different from primary)。
如果同时指定主要可用区和次要可用区,则它们必须是不同的可用区。
- 主要可用区默认为
- 点击保存。
更新实例时,您会返回到主实例的实例页面。
gcloud
- 创建区域实例:
如需查看可用参数的完整列表,请参阅 gcloud sql instances create 参考页面。gcloud sql instances create REGIONAL_INSTANCE_NAME \ --availability-type=REGIONAL \ --database-version=DATABASE_VERSION \ --tier=MACHINE_TYPE \ --enable-bin-log
-
您可以使用
--zone和--secondary-zone参数指定主要可用区和次要可用区。在创建或修改实例期间使用次要可用区时,适用以下限制:- 可用区必须是有效的可用区。
- 如果指定了次要可用区,则必须指定主要可用区。
- 如果同时指定主要可用区和次要可用区,则它们必须是不同的可用区。
- 如果指定了主要可用区和次要可用区,则它们必须属于同一区域。
- 配置根用户:
gcloud sql users set-password root --host=% \ --instance=PRIMARY_INSTANCE_NAME \ --password=PASSWORD
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 页面。创建区域实例。
-
在使用任何请求数据之前,请先进行以下替换:
- project-id:项目 ID
- instance-name:实例名称
- database-version:数据库版本枚举字符串
- region:GCP 区域
- machine-type:机器类型
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
请求 JSON 正文:
{ "name": "instance-name", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true }, "availabilityType": "REGIONAL" } }如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
- 实例完成初始化后,更新实例上的 root 密码:
在使用任何请求数据之前,请先进行以下替换:
- project-id:项目 ID
- instance-id:实例 ID
- password:新的根用户密码
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?name=root&host=%25'
请求 JSON 正文:
{ "name": "root", "host": "%", "password": "password"}如需发送您的请求,请展开以下选项之一:
您应该会收到一个成功的状态代码 (2xx) 和一个空响应。
REST v1beta4
如需查看该请求的完整参数列表,请参阅 instances:insert 页面。创建区域实例。
-
在使用任何请求数据之前,请先进行以下替换:
- project-id:项目 ID
- instance-name:实例名称
- database-version:数据库版本枚举字符串
- region:GCP 区域
- machine-type:机器类型
HTTP 方法和网址:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
请求 JSON 正文:
{ "name": "instance-name", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true }, "availabilityType": "REGIONAL" } }如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
- 实例完成初始化后,更新实例上的 root 密码:
在使用任何请求数据之前,请先进行以下替换:
- project-id:项目 ID
- instance-id:实例 ID
- password:新的根用户密码
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?name=root&host=%25'
请求 JSON 正文:
{ "name": "root", "host": "%", "password": "password"}如需发送您的请求,请展开以下选项之一: