当您在 Google Cloud 控制台中创建新实例时,自动备份和时间点恢复 (PITR) 都会自动启用。您可以按以下步骤为任何现有实例配置 PITR:
启用 PITR
当您在 Google Cloud 控制台中创建新实例时,系统会自动启用自动备份设置。以下过程会在现有主实例上启用 PITR。
控制台
-
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
- 打开要启用 PITR 的实例对应的“更多操作”菜单
,然后点击修改。 - 在自定义实例下,展开数据保护部分。
- 选中启用时间点恢复复选框。
- 在日志保留天数字段中,输入保留日志的天数(对于 Cloud SQL 企业 Plus 版为 1-35,对于 Cloud SQL 企业版为 1-7)。
- 点击保存。
gcloud
- 显示实例概览:
gcloud sql instances describe INSTANCE_NAME
- 如果您在
backupConfiguration部分中看到enabled: false,请启用计划备份:gcloud sql instances patch INSTANCE_NAME \ --backup-start-time=HH:MM
使用 UTC±00 时区的 24 小时制时间指定
backup-start-time参数。 - 启用 PITR:
gcloud sql instances patch INSTANCE_NAME \ --enable-point-in-time-recovery
如果您要在主实例上启用 PITR,还可以通过添加以下参数来配置要保留事务日志的天数:
--retained-transaction-log-days=RETAINED_TRANSACTION_LOG_DAYS - 确认更改:
gcloud sql instances describe INSTANCE_NAME
在
backupConfiguration部分中,如果更改成功,您会看到pointInTimeRecoveryEnabled: true。
Terraform
如需启用 PITR,请使用 Terraform 资源。
为 Cloud SQL 企业 Plus 版启用 PITR
使用以下 Terraform 代码示例创建启用了 PITR 的 Cloud SQL 企业 Plus 版实例:为 Cloud SQL 企业版启用 PITR
使用以下 Terraform 代码示例创建启用了 PITR 的 Cloud SQL 企业版实例:应用更改
如需在 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
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
- INSTANCE_NAME:您为实现高可用性而配置的主实例或读取副本实例的名称
- START_TIME:时间(以小时和分钟为单位)
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
请求 JSON 正文:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
REST v1beta4
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:包含实例的 Google Cloud 项目的 ID 或项目编号
- INSTANCE_NAME:您为实现高可用性而配置的主实例或读取副本实例的名称
- START_TIME:时间(以小时和分钟为单位)
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
请求 JSON 正文:
{
"settings":
{
"backupConfiguration":
{
"startTime": "START_TIME",
"enabled": true,
"pointInTimeRecoveryEnabled": true
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
停用 PITR
控制台
-
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
- 打开要停用的实例对应的“更多操作”菜单
,然后选择修改。 - 在自定义实例下,展开数据保护部分。
- 清除启用时间点恢复。
- 点击保存。
gcloud
- 停用时间点恢复:
gcloud sql instances patch INSTANCE_NAME \ --no-enable-point-in-time-recovery
- 确认更改:
gcloud sql instances describe INSTANCE_NAME
在
backupConfiguration部分中,如果更改成功,您会看到pointInTimeRecoveryEnabled: false。
REST v1
在使用任何请求数据之前,请先进行以下替换:
- project-id:项目 ID
- instance-id:实例 ID
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
请求 JSON 正文:
{
"settings":
{
"backupConfiguration":
{
"enabled": false,
"pointInTimeRecoveryEnabled": false
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 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":
{
"backupConfiguration":
{
"enabled": false,
"pointInTimeRecoveryEnabled": false
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
设置事务日志保留
如需设置保留事务日志的天数,请执行以下操作:
控制台
-
在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。
- 打开要为其设置事务日志的实例对应的“更多操作”菜单
,然后选择修改。 - 在自定义实例下,展开数据保护部分。
- 在启用时间点恢复部分中,展开高级选项。
- 输入保留日志的天数(对于 Cloud SQL 企业 Plus 版为 1-35,对于 Cloud SQL 企业版为 1-7)。
- 点击保存。
gcloud
修改实例以设置事务日志的保留天数。
替换以下内容:
- INSTANCE_NAME:要为其设置事务日志的实例的名称。
DAYS_TO_RETAIN:要保留的事务日志的天数。对于 Cloud SQL 企业 Plus 版,有效范围介于 1 到 35 天之间,默认值为 14 天。对于 Cloud SQL 企业版,有效范围介于 1 到 7 天之间,默认值为 7 天。
如果您未指定值,Cloud SQL 会使用默认值。此选项仅在启用 PITR 时有效。保留更多天数的事务日志需要更大的存储空间。
gcloud sql instances patch INSTANCE_NAME
--retained-transaction-log-days=DAYS_TO_RETAIN
REST v1
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID。
- INSTANCE_ID:实例 ID。
DAYS_TO_RETAIN:保留事务日志的天数。对于 Cloud SQL 企业 Plus 版,有效范围介于 1 到 35 天之间,默认值为 14 天。对于 Cloud SQL 企业版,有效范围介于 1 到 7 天之间,默认值为 7 天。
如果未指定任何值,则使用默认值。此选项仅在启用 PITR 时有效。保留更多天数的事务日志需要更大的存储空间。
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
REST v1beta4
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:项目 ID。
- INSTANCE_ID:实例 ID。
DAYS_TO_RETAIN:保留事务日志的天数。对于 Cloud SQL 企业 Plus 版,有效范围介于 1 到 35 天之间,默认值为 14 天。对于 Cloud SQL 企业版,有效范围介于 1 到 7 天之间,默认值为 7 天。
如果未指定任何值,则使用默认值。此选项仅在启用 PITR 时有效。保留更多天数的事务日志需要更大的存储空间。
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
请求 JSON 正文:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN"
}
}
}
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
检查用于 PITR 的事务日志的存储位置
您可以检查 Cloud SQL 实例存储用于 PITR 的事务日志的位置。
gcloud
如需确定您的实例是将 PITR 的日志存储在磁盘还是 Cloud Storage 上,请使用以下命令:
gcloud sql instances describe INSTANCE_NAME
将 INSTANCE_NAME 替换为实例名称。
对于同一项目中的多个实例,您也可以查看事务日志的存储位置。如需确定多个实例的位置,请使用以下命令:
gcloud sql instances list --show-transactional-log-storage-state
示例响应:
NAME DATABASE_VERSION LOCATION TRANSACTIONAL_LOG_STORAGE_STATE my_01 SQLSERVER_2019_STANDARD us-central-1 DISK my_02 SQLSERVER_2019_STANDARD us-central-1 CLOUD_STORAGE ...
在命令的输出中,transactionalLogStorageState 字段或 TRANSACTIONAL_LOG_STORAGE_STATE 列提供有关实例的 PITR 事务日志存储位置的信息。可能的事务日志存储状态如下:
DISK:实例将用于 PITR 的事务日志存储在磁盘上。CLOUD_STORAGE:实例将用于 PITR 的事务日志存储在 Cloud Storage 中。
后续步骤
- 在克隆上配置标志