使用 SQL 转储文件导出和导入

本页面介绍如何将 Cloud SQL 实例数据导出为 SQL 转储文件以及使用 SQL 转储文件将数据导入 Cloud SQL 实例。

SQL Server 不支持从 Cloud SQL 导出到 SQL 转储文件。

须知事项

导出操作会使用数据库资源,但不会干扰正常的数据库操作,除非实例预配不足。

如需最佳实践,请参阅导入和导出数据的最佳实践

完成导入操作后,请验证结果。

从 Cloud SQL for SQL Server 导出数据

SQL Server 不支持从 Cloud SQL 导出到 SQL 转储文件。

将数据导入到 Cloud SQL for SQL Server

导入 Cloud SQL for SQL Server 所需的角色和权限

如需将数据从 Cloud Storage 导入到 Cloud SQL 中,启动导入的用户必须拥有以下角色之一:

此外,Cloud SQL 实例的服务账号必须拥有以下角色之一:

  • storage.objectAdmin IAM 角色
  • 包括以下权限的自定义角色:
    • storage.objects.get
    • storage.objects.list(仅适用于条带式导入)

如需有关 IAM 角色的帮助,请参阅 Identity and Access Management

将 SQL 转储文件导入 Cloud SQL for SQL Server

SQL 文件是包含一系列 SQL 命令的纯文本文件。

在以下过程中,请准备指定一个现有数据库,以从中导入 SQL 文件。

控制台

  1. 在 Google Cloud 控制台中,转到 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 如需打开实例的概览页面,请点击实例名称。
  3. 点击导入
  4. 选择您要从中导入数据的文件部分中,输入要用于导入的存储桶和 SQL 转储文件的路径,或浏览到现有文件。

    您可以导入经过压缩 (.gz) 或未经压缩 (.sql) 的文件。

  5. 对于格式,请选择 SQL
  6. 选择要导入数据的数据库。

    这样,Cloud SQL 会在导入数据之前运行 USE DATABASE 语句。

  7. 如果要指定用户来执行导入,请选择该用户。

    如果导入文件包含必须由特定用户执行的语句,请使用此字段指定该用户。

  8. 点击导入以开始导入。

gcloud

  1. 创建 Cloud Storage 存储桶。
  2. 将文件上传到存储桶。

    如需有关将文件上传到存储桶方面的帮助,请参阅上传对象

  3. 描述要向其中导入数据的实例:
    gcloud sql instances describe INSTANCE_NAME
  4. 复制 serviceAccountEmailAddress 字段。
  5. 使用 gcloud storage buckets add-iam-policy-binding 向服务账号授予该存储桶的 storage.objectAdmin IAM 角色
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    如需有关设置 IAM 权限的帮助,请参阅使用 IAM 权限
  6. 导入数据库:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME

    如需了解如何使用 import sql 命令,请参阅 sql import sql 命令参考页面。

    如果该命令返回 ERROR_RDBMS 之类的错误,请检查权限;此类错误通常是由权限问题导致的。

  7. 如果您不需要保留之前设置的 IAM 权限,请使用 gcloud storage buckets remove-iam-policy-binding 移除这些权限。

REST v1

  1. 创建 Cloud Storage 存储桶。
  2. 将文件上传到存储桶。

    如需有关将文件上传到存储桶方面的帮助,请参阅上传对象

  3. 为您的实例提供存储桶的 legacyBucketWriterobjectViewer IAM 角色。如需有关设置 IAM 权限的帮助,请参阅使用 IAM 权限
  4. 导入转储文件:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID
    • bucket_name:Cloud Storage 存储桶名称
    • path_to_sql_file:SQL 文件的路径
    • database_name:Cloud SQL 实例中数据库的名称

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import

    请求 JSON 正文:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    如需查看请求的完整参数列表,请参阅 instances:import 页面。
  5. 如果您不需要保留之前设置的 IAM 权限,请立即移除这些权限。

REST v1beta4

  1. 创建 Cloud Storage 存储桶。
  2. 将文件上传到存储桶。

    如需有关将文件上传到存储桶方面的帮助,请参阅上传对象

  3. 为您的实例提供存储桶的 storage.objectAdmin IAM 角色。如需有关设置 IAM 权限的帮助,请参阅使用 IAM 权限
  4. 导入转储文件:

    在使用任何请求数据之前,请先进行以下替换:

    • project-id:项目 ID
    • instance-id:实例 ID
    • bucket_name:Cloud Storage 存储桶名称
    • path_to_sql_file:SQL 文件的路径
    • database_name:Cloud SQL 实例中数据库的名称

    HTTP 方法和网址:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import

    请求 JSON 正文:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    如需发送您的请求,请展开以下选项之一:

    您应该收到类似以下内容的 JSON 响应:

    如需查看请求的完整参数列表,请参阅 instances:import 页面。
  5. 如果您不需要保留之前设置的 IAM 权限,请立即移除这些权限。

后续步骤