工具:clone_instance
创建 Cloud SQL 实例作为源实例的克隆。
- 此工具会返回一个长时间运行的操作。使用
get_operation工具轮询其状态,直到操作完成。 - 克隆操作可能需要几分钟时间。使用命令行工具暂停 30 秒,然后再重新检查状态。
以下示例演示了如何使用 curl 调用 clone_instance MCP 工具。
| Curl 请求 |
|---|
curl --location 'https://sqladmin.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "clone_instance", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
输入架构
实例克隆请求。
SqlInstancesCloneRequest
| JSON 表示法 |
|---|
{
"instance": string,
"project": string,
"body": {
object ( |
| 字段 | |
|---|---|
instance |
必需。要克隆的 Cloud SQL 实例的 ID(源)。不包括项目 ID。 |
project |
必需。源实例以及克隆 Cloud SQL 实例的项目 ID。 |
body |
|
InstancesCloneRequest
| JSON 表示法 |
|---|
{
"cloneContext": {
object ( |
| 字段 | |
|---|---|
cloneContext |
必需。包含有关克隆操作的详细信息。 |
CloneContext
| JSON 表示法 |
|---|
{ "kind": string, "pitrTimestampMs": string, "destinationInstanceName": string, "binLogCoordinates": { object ( |
| 字段 | |
|---|---|
kind |
始终为 |
pitrTimestampMs |
留待将来使用。 |
destinationInstanceName |
必需。要创建为克隆的 Cloud SQL 实例的名称。 |
binLogCoordinates |
二进制日志坐标(如果已指定),用于标识源实例的克隆位置。如果未指定,则源实例会被克隆到最近的二进制日志坐标。 |
pointInTime |
时间戳(如果已指定),用于标识源实例的克隆时间。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
allocatedIpRange |
专用 IP Cloud SQL 实例的已分配 IP 范围的名称。例如:“google-managed-services-default”。如果设置,则克隆的实例 IP 将在分配的范围内创建。范围名称必须符合 RFC 1035 的要求。具体而言,名称的长度必须为 1-63 个字符,并且必须与正则表达式 a-z 匹配。留待将来使用。 |
databaseNames[] |
(仅限 SQL Server)仅克隆源实例中的指定数据库。如果为空,则克隆所有数据库。 |
联合字段
|
|
preferredZone |
可选。将实例的克隆和时间点恢复克隆复制到指定可用区。如果未指定可用区,则克隆到与源实例相同的主可用区。此字段适用于所有数据库类型。 |
联合字段
|
|
preferredSecondaryZone |
可选。复制指定可用区中区域级实例的克隆和时间点恢复克隆。如果未指定,则克隆到与源实例相同的次要可用区。此值不能与 preferred_zone 字段相同。此字段适用于所有数据库类型。 |
联合字段
|
|
sourceInstanceDeletionTime |
用于标识源实例删除时间的相应时间戳。如果此实例被删除,则必须设置时间戳。 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
联合字段
|
|
destinationProject |
可选。克隆实例将创建到的目标项目的项目 ID。如需执行跨项目克隆,此字段为必填字段。如果未指定,则克隆将在源实例所在的同一项目中创建。 |
联合字段
|
|
destinationNetwork |
可选。VPC 网络的完全限定 URI,克隆的实例将通过专用服务访问通道连接到该网络以获取专用 IP。例如: |
BinLogCoordinates
| JSON 表示法 |
|---|
{ "binLogFileName": string, "binLogPosition": string, "kind": string } |
| 字段 | |
|---|---|
binLogFileName |
Cloud SQL 实例的二进制日志文件的名称。 |
binLogPosition |
二进制日志文件中的位置(偏移)。 |
kind |
始终为 |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值),对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代项。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
输出架构
Operation 资源。对于返回 Operation 资源的成功操作,仅会在资源中填充与操作相关的字段。
操作
| JSON 表示法 |
|---|
{ "kind": string, "targetLink": string, "status": enum ( |
| 字段 | |
|---|---|
kind |
始终为 |
targetLink |
|
status |
操作的状态。 |
user |
启动此操作的用户的电子邮件地址。 |
insertTime |
此操作已加入队列的时间,采用 UTC 时区,采用 RFC 3339 格式,例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
startTime |
此操作真正开始的时间,采用 UTC 时区,采用 RFC 3339 格式,例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
endTime |
此操作完成的时间,采用 UTC 时区,采用 RFC 3339 格式,例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
error |
如果在处理此操作期间发生错误,系统将填充此字段。 |
apiWarning |
Admin API 警告消息。 |
operationType |
操作的类型。有效值为:* |
importContext |
导入操作的上下文(如果适用)。 |
exportContext |
导出操作的上下文(如果适用)。 |
backupContext |
备份操作的上下文(如果适用)。 |
preCheckMajorVersionUpgradeContext |
仅当 operation_type 为 PRE_CHECK_MAJOR_VERSION_UPGRADE 时,系统才会填充此字段。PreCheckMajorVersionUpgradeContext 消息本身包含相应预检查的详细信息,例如升级的目标数据库版本和检查结果(包括发现的任何警告或错误)。 |
name |
唯一标识操作的标识符。您可以使用此标识符检索包含操作相关信息的操作资源。 |
targetId |
运行相应操作的资源的名称。 |
selfLink |
此资源的 URI。 |
targetProject |
与此操作相关的目标实例的项目 ID。 |
acquireSsrsLeaseContext |
获取 SSRS 租约操作的上下文(如果适用)。 |
subOperationType |
可选。基于操作类型的子操作。 |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值),对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代项。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
OperationErrors
| JSON 表示法 |
|---|
{
"kind": string,
"errors": [
{
object ( |
| 字段 | |
|---|---|
kind |
始终为 |
errors[] |
处理此操作时遇到的错误的列表。 |
OperationError
| JSON 表示法 |
|---|
{ "kind": string, "code": string, "message": string } |
| 字段 | |
|---|---|
kind |
始终为 |
code |
确定发生的具体错误。 |
message |
有关遇到的错误的其他信息。 |
ApiWarning
| JSON 表示法 |
|---|
{
"code": enum ( |
| 字段 | |
|---|---|
code |
用于标识警告类型的唯一代码。 |
message |
警告消息。 |
region |
REGION_UNREACHABLE 警告的区域名称。 |
ImportContext
| JSON 表示法 |
|---|
{ "uri": string, "database": string, "kind": string, "fileType": enum ( |
| 字段 | |
|---|---|
uri |
Cloud Storage 中导入文件的路径,格式为 |
database |
导入的目标数据库。如果 |
kind |
始终为 |
fileType |
指定 URI 的文件类型。`SQL |
csvImportOptions |
用于以 CSV 格式导入数据的选项。 |
importUser |
此导入操作的 PostgreSQL 用户。仅 PostgreSQL 实例。 |
bakImportOptions |
特定于 SQL Server .BAK 文件的导入参数 |
sqlImportOptions |
可选。用于从 SQL 语句导入数据的选项。 |
tdeImportOptions |
可选。特定于 SQL Server TDE 证书的导入参数 |
SqlCsvImportOptions
| JSON 表示法 |
|---|
{ "table": string, "columns": [ string ], "escapeCharacter": string, "quoteCharacter": string, "fieldsTerminatedBy": string, "linesTerminatedBy": string } |
| 字段 | |
|---|---|
table |
将导入 CSV 数据的表格。 |
columns[] |
将导入 CSV 数据的列。如果未指定,则数据库表的所有列都将加载 CSV 数据。 |
escapeCharacter |
指定应出现在需要转义的数据字符之前的字符。 |
quoteCharacter |
指定在引用数据值时要使用的引用字符。 |
fieldsTerminatedBy |
指定用于在文件的每行中分隔列的字符。 |
linesTerminatedBy |
用于分隔行。如果某行不包含所有字段,则其余列会设置为默认值。 |
SqlBakImportOptions
| JSON 表示法 |
|---|
{ "encryptionOptions": { object ( |
| 字段 | |
|---|---|
encryptionOptions |
|
striped |
正在恢复的备份集是否为条带化备份集。仅适用于 Cloud SQL for SQL Server。 |
noRecovery |
备份导入是否会使用 NORECOVERY 选项恢复数据库。仅适用于 Cloud SQL for SQL Server。 |
recoveryOnly |
备份导入请求是否只会使数据库联机,而不会下载 Bak 内容。只能将“no_recovery”和“recovery_only”中的一个设置为 true,否则将返回错误。仅适用于 Cloud SQL for SQL Server。 |
bakType |
bak 内容的类型,FULL 或 DIFF |
stopAt |
可选。导入应停止的时间戳。此时间戳采用 RFC 3339 格式(例如, 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
stopAtMark |
可选。导入应停止的标记交易。此字段等同于 STOPATMARK 关键字,仅适用于 Cloud SQL for SQL Server。 |
EncryptionOptions
| JSON 表示法 |
|---|
{ "certPath": string, "pvkPath": string, "pvkPassword": string, "keepEncrypted": boolean } |
| 字段 | |
|---|---|
certPath |
Cloud Storage 中证书 (.cer) 的路径,格式为 |
pvkPath |
Cloud Storage 中证书私钥 (.pvk) 的路径,格式为 |
pvkPassword |
加密私钥的密码 |
keepEncrypted |
可选。导入的文件是否保持加密状态。 |
BoolValue
| JSON 表示法 |
|---|
{ "value": boolean } |
| 字段 | |
|---|---|
value |
布尔值。 |
SqlImportOptions
| JSON 表示法 |
|---|
{
"threads": integer,
"parallel": boolean,
"postgresImportOptions": {
object ( |
| 字段 | |
|---|---|
threads |
可选。用于并行导入的线程数。 |
parallel |
可选。导入是否应并行进行。 |
postgresImportOptions |
可选。用于从 Cloud SQL for PostgreSQL 实例导入数据的选项。 |
Int32Value
| JSON 表示法 |
|---|
{ "value": integer } |
| 字段 | |
|---|---|
value |
int32 值。 |
PostgresImportOptions
| JSON 表示法 |
|---|
{ "clean": boolean, "ifExists": boolean } |
| 字段 | |
|---|---|
clean |
可选。pg_restore 实用程序的 --clean 标志。此标志仅在您启用 Cloud SQL 并行导入文件时适用。 |
ifExists |
可选。pg_restore 实用程序的 --if-exists 标志。此标志仅在您启用 Cloud SQL 并行导入文件时适用。 |
SqlTdeImportOptions
| JSON 表示法 |
|---|
{ "certificatePath": string, "privateKeyPath": string, "privateKeyPassword": string, "name": string } |
| 字段 | |
|---|---|
certificatePath |
必需。TDE 证书公钥的路径,格式为 gs://bucketName/fileName。实例必须拥有文件的读取权限。仅适用于 SQL Server 实例。 |
privateKeyPath |
必需。TDE 证书私钥的路径,格式为 gs://bucketName/fileName。实例必须拥有文件的读取权限。仅适用于 SQL Server 实例。 |
privateKeyPassword |
必需。加密私钥的密码。 |
name |
必需。证书名称。仅适用于 SQL Server 实例。 |
ExportContext
| JSON 表示法 |
|---|
{ "uri": string, "databases": [ string ], "kind": string, "sqlExportOptions": { object ( |
| 字段 | |
|---|---|
uri |
Google Cloud Storage 中将存储导出的文件的路径。URI 的格式为 |
databases[] |
要导出的数据库。 |
kind |
始终为 |
sqlExportOptions |
用于将数据导出为 SQL 语句的选项。 |
csvExportOptions |
用于将数据导出为 CSV 的选项。仅限 |
fileType |
指定 URI 的文件类型。 |
offload |
是否执行无服务器导出。 |
bakExportOptions |
用于将数据导出为 BAK 文件的选项。 |
tdeExportOptions |
可选。特定于 SQL Server TDE 证书的导出参数 |
SqlExportOptions
| JSON 表示法 |
|---|
{ "tables": [ string ], "schemaOnly": boolean, "mysqlExportOptions": { object ( |
| 字段 | |
|---|---|
tables[] |
要从指定数据库导出或已导出的表。如果指定表,请指定一个且仅指定一个数据库。对于 PostgreSQL 实例,您只能指定一个表。 |
schemaOnly |
仅导出架构。 |
mysqlExportOptions |
|
threads |
可选。用于并行导出的线程数。 |
parallel |
可选。导出是否应并行进行。 |
postgresExportOptions |
可选。从 Cloud SQL for PostgreSQL 实例导出数据的选项。 |
MysqlExportOptions
| JSON 表示法 |
|---|
{ "masterData": integer } |
| 字段 | |
|---|---|
masterData |
包含设置复制所需的 SQL 语句的选项。如果设置为 |
PostgresExportOptions
| JSON 表示法 |
|---|
{ "clean": boolean, "ifExists": boolean } |
| 字段 | |
|---|---|
clean |
可选。使用此选项可包含 DROP
SQL 语句。在运行导入操作之前,请使用以下语句删除数据库对象。 |
ifExists |
可选。用于在 clean 生成的每个 DROP 语句中添加 IF EXISTS SQL 语句的选项。 |
SqlCsvExportOptions
| JSON 表示法 |
|---|
{ "selectQuery": string, "escapeCharacter": string, "quoteCharacter": string, "fieldsTerminatedBy": string, "linesTerminatedBy": string } |
| 字段 | |
|---|---|
selectQuery |
用于提取数据的 select 查询。 |
escapeCharacter |
指定应出现在需要转义的数据字符之前的字符。 |
quoteCharacter |
指定在引用数据值时要使用的引用字符。 |
fieldsTerminatedBy |
指定用于在文件的每行中分隔列的字符。 |
linesTerminatedBy |
用于分隔行。如果某行不包含所有字段,则其余列会设置为默认值。 |
SqlBakExportOptions
| JSON 表示法 |
|---|
{
"striped": boolean,
"stripeCount": integer,
"bakType": enum ( |
| 字段 | |
|---|---|
striped |
导出是否应条带化。 |
stripeCount |
用于指定导出时要使用的条带数量的选项。如果留空,且条带化字段的值为 true,则系统会自动选择条带数。 |
bakType |
相应 BAK 文件的类型,可以是 export、FULL 或 DIFF,仅限 SQL Server |
copyOnly |
已弃用:copy_only 已弃用。请改用 differential_base |
differentialBase |
备份是否可用作差分库 copy_only 备份不能用作差分库 |
exportLogStartTime |
可选。导出操作中将包含交易日志的开始时间戳。采用 RFC 3339 格式(例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
exportLogEndTime |
可选。导出操作中将包含交易日志的结束时间戳。采用 RFC 3339 格式(例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
SqlTdeExportOptions
| JSON 表示法 |
|---|
{ "certificatePath": string, "privateKeyPath": string, "privateKeyPassword": string, "name": string } |
| 字段 | |
|---|---|
certificatePath |
必需。TDE 证书公钥的路径,格式为 gs://bucketName/fileName。实例必须拥有存储桶的写入权限。仅适用于 SQL Server 实例。 |
privateKeyPath |
必需。TDE 证书私钥的路径,格式为 gs://bucketName/fileName。实例必须对该位置具有写入权限。仅适用于 SQL Server 实例。 |
privateKeyPassword |
必需。加密私钥的密码。 |
name |
必需。证书名称。仅适用于 SQL Server 实例。 |
BackupContext
| JSON 表示法 |
|---|
{ "backupId": string, "kind": string, "name": string } |
| 字段 | |
|---|---|
backupId |
备份的标识符。 |
kind |
始终为 |
name |
备份的名称。格式:projects/{project}/backups/{backup} |
PreCheckMajorVersionUpgradeContext
| JSON 表示法 |
|---|
{ "targetDatabaseVersion": enum ( |
| 字段 | |
|---|---|
targetDatabaseVersion |
必需。要升级到的目标数据库版本。 |
preCheckResponse[] |
仅限输出。预检操作的响应。 |
kind |
可选。始终为 |
PreCheckResponse
| JSON 表示法 |
|---|
{ "actionsRequired": [ string ], // Union field |
| 字段 | |
|---|---|
actionsRequired[] |
用户需要采取的操作。使用 repeated 属性表示多个操作。 |
联合字段
|
|
message |
要向用户显示的消息。 |
联合字段
|
|
messageType |
消息类型,是信息、警告还是错误。 |
AcquireSsrsLeaseContext
| JSON 表示法 |
|---|
{ // Union field |
| 字段 | |
|---|---|
联合字段
|
|
setupLogin |
用作设置登录名以连接到数据库服务器进行 SSRS 设置的用户名。 |
联合字段
|
|
serviceLogin |
在 SSRS 设置期间用作服务登录名以连接到报告数据库的用户名。 |
联合字段
|
|
reportDatabase |
用于 SSRS 设置的报告数据库。 |
联合字段
|
|
duration |
设置 SSRS 所需的租约时长。 该时长以秒为单位,最多包含九个小数位,以“ |
时长
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
时间段的带符号秒数。必须介于 -315,576,000,000 到 +315,576,000,000 之间(含边界值)。注意:这些界限是通过以下计算得出的:60 秒/分钟 * 60 分钟/小时 * 24 小时/天 * 365.25 天/年 * 10000 年 |
nanos |
时间跨度的有符号秒数小数部分(以纳秒为单位)。小于 1 秒的时长用 0 |
SqlSubOperationType
| JSON 表示法 |
|---|
{ // Union field |
| 字段 | |
|---|---|
联合字段 sub_operation_details。与操作类型对应的子操作详细信息。sub_operation_details 只能是下列其中一项: |
|
maintenanceType |
要对实例执行的维护类型。 |
工具注释
破坏性提示:❌ | 等幂性提示:❌ | 只读提示:❌ | 开放世界提示:❌