发送反馈
配置时间点恢复 (PITR)
当您在 Google Cloud 控制台中创建新实例时,自动备份 和时间点恢复 (PITR) 都会自动启用。您可以按以下步骤为任何现有实例配置 PITR:
启用 PITR
当您在 Google Cloud 控制台中创建新实例时,系统会自动启用
自动备份 设置。
以下过程会在现有主实例上启用 PITR。
控制台
在 Google Cloud 控制台中,前往 Cloud SQL 实例 页面。
转到“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。
如需启用 PITR,请使用 Terraform 资源 。
为 Cloud SQL 企业 Plus 版启用 PITR
注意: 如果您创建 Cloud SQL 企业 Plus 版实例,则 PITR 默认处于启用状态,无论实例是用什么方法创建的。如果您想停用此功能 ,则必须手动执行此操作。
使用以下 Terraform 代码示例创建启用了 PITR 的 Cloud SQL 企业 Plus 版实例:
为 Cloud SQL 企业版启用 PITR
注意: 如果您创建 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 示例通常假定您的 Google Cloud 项目中启用了所需的 API。
删除更改
如需删除更改,请执行以下操作:
如需停用防删除保护,请在 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
}
}
}
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME "
PowerShell (Windows)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
响应
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_NAME ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_NAME ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
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
}
}
}
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_NAME "
PowerShell (Windows)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_NAME " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
响应
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_NAME ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_NAME ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
停用 PITR
控制台
在 Google Cloud 控制台中,前往 Cloud SQL 实例 页面。
转到“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
}
}
}
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id "
PowerShell (Windows)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
响应
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
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
}
}
}
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id "
PowerShell (Windows)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
响应
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /instances/instance-id ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "operation-id ",
"targetId": "instance-id ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id /operations/operation-id ",
"targetProject": "project-id "
}
设置事务日志保留
如需设置保留事务日志的天数,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Cloud SQL 实例 页面。
转到“Cloud SQL 实例”
打开要为其设置事务日志的实例对应的“更多操作”菜单 ,然后选择修改 。
在自定义实例 下,展开数据保护 部分。
在启用时间点恢复 部分中,展开高级选项 。
输入保留日志的天数(对于 Cloud SQL 企业 Plus 版为 1-35,对于 Cloud SQL 企业版为 1-7)。
点击保存 。
gcloud
修改实例以设置事务日志的保留天数。
替换以下内容:
gcloud sql instances patch INSTANCE_NAME
--retained-transaction-log-days= DAYS_TO_RETAIN
REST v1
在使用任何请求数据之前,请先进行以下替换:
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID
请求 JSON 正文:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN "
}
}
}
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID "
PowerShell (Windows)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
响应
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
REST v1beta4
在使用任何请求数据之前,请先进行以下替换:
HTTP 方法和网址:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID
请求 JSON 正文:
{
"settings":
{
"backupConfiguration":
{
"transactionLogRetentionDays": "DAYS_TO_RETAIN "
}
}
}
如需发送您的请求,请展开以下选项之一:
curl(Linux、macOS 或 Cloud Shell)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID "
PowerShell (Windows)
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } Invoke-WebRequest ` -Method PATCH ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -InFile request.json ` -Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
响应
{
"kind": "sql#operation",
"targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /instances/INSTANCE_ID ",
"status": "PENDING",
"user": "user@example.com",
"insertTime": "2020-01-21T22:43:37.981Z",
"operationType": "UPDATE",
"name": "OPERATION_ID ",
"targetId": "INSTANCE_ID ",
"selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID /operations/OPERATION_ID ",
"targetProject": "PROJECT_ID "
}
检查用于 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 中。
后续步骤
发送反馈
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可 获得了许可,并且代码示例已根据 Apache 2.0 许可 获得了许可。有关详情,请参阅 Google 开发者网站政策 。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-11-21。
需要向我们提供更多信息?
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-11-21。"],[],[]]