本页介绍了如何将 pg_dump
工具使用 custom
或 directory
格式创建的 DMP 文件导入 AlloyDB 数据库。
如需导入使用 plain
格式由 pg_dump
工具创建的文件,请参阅导入 SQL 文件。
执行导入的流程涉及以下任务:
准备工作
- 您必须在所使用的 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
)
- AlloyDB 管理员 (
上传 DMP 文件
如需上传 DMP 文件,您需要创建一个 Cloud Storage 存储桶,然后将该 DMP 文件上传到此存储桶。
在您的 AlloyDB 数据库所在的项目和区域中创建一个 Standard Storage Regional Storage 存储分区。
将 DMP 文件上传到您创建的存储桶。
准备客户端主机
如需准备客户端主机以执行导入操作,您需要创建一个可连接到数据库所在的 AlloyDB 主实例的 Compute Engine 虚拟机,并在该虚拟机上安装 pg_restore
工具和 Google Cloud CLI。
按照将 psql 客户端连接到实例中的说明,创建具有适当连接性且安装了
pg_restore
工具的 Compute Engine 虚拟机。按照以下说明操作时,请务必为 Compute Engine 虚拟机分配足够的本地存储空间,以容纳您要导入的 DMP 文件。安装 gcloud CLI,以通过命令行访问 Cloud Storage 存储桶中的 DMP 文件。
导入 DMP 文件
如需导入 DMP 文件,您需要获取数据库所在的 AlloyDB 主实例的 IP 地址,然后使用 pg_restore
工具将该文件导入数据库。
- 通过查看其详细信息,获取您的数据库所在的 AlloyDB 主实例的 IP 地址。
- 通过 SSH 连接到 Compute Engine 虚拟机。
控制台
- 在 Google Cloud 控制台中,前往虚拟机实例页面。
- 在虚拟机实例列表中,点击您创建的实例行中的 SSH。
gcloud
使用
gcloud compute ssh
命令连接到您创建的实例。gcloud compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME
替换以下内容:
PROJECT_ID
:包含实例的项目的 ID。ZONE
:实例所在可用区的名称。VM_NAME
:实例的名称。
- 将 DMP 文件复制到客户端主机的本地文件系统:
gcloud storage cp gs://BUCKET_NAME/DMP_FILE_NAME .
- 运行以下命令可创建一个目录文件,其中会注释掉所有
EXTENSION
语句:pg_restore \ -l DMP_FILE_NAME | sed -E 's/(.* EXTENSION )/; \1/g' > TOC_FILE_NAME
DMP_FILE_NAME
:本地文件系统上的 DMP 文件。TOC_FILE_NAME
:为要在本地文件系统上创建的 TOC 文件提供文件名。
- 导入 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 虚拟机。