从转储文件导入

在导入数据之前,您必须:

  1. 创建数据库集群,以便将数据导入其中。

  2. 将转储文件上传到存储桶。如需了解相关说明,请参阅将对象上传到存储桶。

  3. 向数据库服务导入服务账号授予对转储文件的读取权限。 请参阅授予和获取存储空间访问权限。 例如,您可以向导入服务账号授予 project-bucket-object-viewer 角色。

    创建数据库集群时,Database Service 系统会自动创建此服务账号。 数据库集群状态包括导入服务账号的名称和命名空间。

    如需检索导入服务账号的名称和命名空间,请运行以下命令:

    kubectl --kubeconfig=MGMT_API_KUBECONFIG \
      get dbcluster.postgresql -n PROJECT_ID DATABASE_CLUSTER_NAME \
      -o jsonpath='{.status.serviceAccounts.import}'
    

    此命令会返回一个 JSON 对象,其中包含名称和命名空间详细信息: {"name":"postgresql-import-DATABASE_CLUSTER_NAME","namespace":"SERVICE_ACCOUNT_NAMESPACE"}

警告:必须使用 pg_dump 创建数据库转储文件,且归档格式与 pg_restore 兼容。 不支持纯 SQL 格式转储(如果未指定格式选项,则为默认值)。

您可以使用 GDC 控制台或 Distributed Cloud CLI 将转储文件导入数据库集群:

控制台

  1. 在 GDC 控制台中打开数据库集群概览页面,查看包含要导入的数据库的集群。

  2. 点击导入。将数据导入到账号面板随即打开。

  3. 在将数据导入账号面板的来源部分中,指定您之前上传的 SQL 数据转储文件的位置。

  4. 在目标字段中,指定要导入到的现有目标数据库。

  5. 点击导入。GDC 控制台上的横幅会显示导入状态。

gdcloud

  1. 在使用 Distributed Cloud CLI 之前,请先安装并初始化它。 然后,向您的组织进行身份验证。

  2. 运行以下命令,将转储文件导入数据库:

    gdcloud database import sql DATABASE_CLUSTER BUCKET_NAME/sample.dmp \
        --project=PROJECT_NAME
    

    替换以下内容:

    • 将 DATABASE_CLUSTER 替换为要将数据导入到的数据库集群的名称。
    • 将 BUCKET_NAME/SAMPLE.dmp 替换为转储文件的位置。
    • PROJECT_NAME 替换为数据库集群所在项目的名称。
  3. 运行以下命令,检查导入状态:

    gdcloud database operations list --project=PROJECT_NAME --cluster=DATABASE_CLUSTER
    

API

apiVersion: postgresql.dbadmin.gdc.goog/v1
kind: Import
metadata:
  name: IMPORT_NAME
  namespace: USER_PROJECT
spec:
  dbclusterRef: DBCLUSTER_NAME
  dumpStorage:
    s3Options:
      bucket: BUCKET_NAME
      key: DUMP_FILE_PATH
    type: S3

执行以下变量替换操作:

  • IMPORT_NAME:导入操作的名称。
  • USER_PROJECT:在其中创建要导入的数据库集群的用户项目的名称。
  • DBCLUSTER_NAME:数据库集群的名称。
  • BUCKET_NAME:存储导入文件的对象存储桶的名称。
  • DUMP_FILE_PATH:存储文件的对象存储路径的名称。