导入 DMP 文件

本页介绍了如何将 pg_dump 工具使用 customdirectory 格式创建的 DMP 文件导入 AlloyDB 数据库。

如需导入使用 plain 格式由 pg_dump 工具创建的文件,请参阅导入 SQL 文件

执行导入的流程涉及以下任务:

  1. 将 DMP 文件上传到 Cloud Storage 存储分区。

  2. 准备客户端主机以执行导入操作。

  3. 将 DMP 文件导入数据库。

  4. 清理执行该过程时创建的资源

准备工作

  • 您必须在所使用的 Google Cloud 项目中拥有 Owner (roles/owner) 或 Editor (roles/editor) 基本 IAM 角色,或者必须拥有以下预定义 IAM 角色:
    • AlloyDB 管理员 (roles/alloydb.admin) 或 AlloyDB 查看者 (roles/alloydb.viewer)
    • Storage Admin (roles/storage.admin)
    • Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1)

上传 DMP 文件

如需上传 DMP 文件,您需要创建一个 Cloud Storage 存储桶,然后将该 DMP 文件上传到此存储桶。

  1. 在您的 AlloyDB 数据库所在的项目和区域中创建一个 Standard Storage Regional Storage 存储分区

  2. 将 DMP 文件上传到您创建的存储桶。

准备客户端主机

如需准备客户端主机以执行导入操作,您需要创建一个可连接到数据库所在的 AlloyDB 主实例的 Compute Engine 虚拟机,并在该虚拟机上安装 pg_restore 工具和 Google Cloud CLI。

  1. 按照将 psql 客户端连接到实例中的说明,创建具有适当连接性且安装了 pg_restore 工具的 Compute Engine 虚拟机。按照以下说明操作时,请务必为 Compute Engine 虚拟机分配足够的本地存储空间,以容纳您要导入的 DMP 文件。

  2. 安装 gcloud CLI,以通过命令行访问 Cloud Storage 存储桶中的 DMP 文件。

导入 DMP 文件

如需导入 DMP 文件,您需要获取数据库所在的 AlloyDB 主实例的 IP 地址,然后使用 pg_restore 工具将该文件导入数据库。

  1. 通过查看其详细信息,获取您的数据库所在的 AlloyDB 主实例的 IP 地址。
  2. 通过 SSH 连接到 Compute Engine 虚拟机。

    控制台

    1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

      转到“虚拟机实例”

    2. 在虚拟机实例列表中,点击您创建的实例行中的 SSH

      实例名称旁边的 SSH 按钮。

    gcloud

    使用 gcloud compute ssh 命令连接到您创建的实例。

    gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME

    替换以下内容:

    • PROJECT_ID:包含实例的项目的 ID。
    • ZONE:实例所在可用区的名称。
    • VM_NAME:实例的名称。
  3. 将 DMP 文件复制到客户端主机的本地文件系统:
    gcloud storage cp gs://BUCKET_NAME/DMP_FILE_NAME .
  4. 运行以下命令可创建一个目录文件,其中会注释掉所有 EXTENSION 语句:
    pg_restore \
    -l DMP_FILE_NAME | sed -E 's/(.* EXTENSION )/; \1/g' > TOC_FILE_NAME
    • DMP_FILE_NAME:本地文件系统上的 DMP 文件。
    • TOC_FILE_NAME:为要在本地文件系统上创建的 TOC 文件提供文件名。
  5. 导入 DMP 文件:
    pg_restore -h IP_ADDRESS -U postgres \
      -d DB_NAME \
      -L TOC_FILE_NAME \
      DMP_FILE_NAME
    
    • IP_ADDRESS:主实例的 IP 地址。
    • DB_NAME:要导入到其中的数据库的名称。
    • TOC_FILE_NAME:您在上一步中创建的 TOC 文件。
    • DMP_FILE_NAME:DMP 文件。

    pg_restore 命令提供了几个额外的选项来控制数据导入操作。

清理资源

成功导入 DMP 文件后,您可以删除 Cloud Storage 存储桶,并删除您在导入过程中使用的 Compute Engine 虚拟机