在导入数据之前,您必须:
创建数据库集群,以便将数据导入其中。
将转储文件上传到存储桶。如需了解相关说明,请参阅将对象上传到存储桶。
向数据库服务导入服务账号授予对转储文件的读取权限。 请参阅授予和获取存储空间访问权限。 例如,您可以向导入服务账号授予
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 将转储文件导入数据库集群:
控制台
在 GDC 控制台中打开数据库集群概览页面,查看包含要导入的数据库的集群。
点击导入。将数据导入到账号面板随即打开。
在将数据导入账号面板的来源部分中,指定您之前上传的 SQL 数据转储文件的位置。
在目标字段中,指定要导入到的现有目标数据库。
点击导入。GDC 控制台上的横幅会显示导入状态。
gdcloud
运行以下命令,将转储文件导入数据库:
gdcloud database import sql DATABASE_CLUSTER BUCKET_NAME/sample.dmp \ --project=PROJECT_NAME替换以下内容:
- 将 DATABASE_CLUSTER 替换为要将数据导入到的数据库集群的名称。
- 将 BUCKET_NAME/SAMPLE.dmp 替换为转储文件的位置。
- PROJECT_NAME 替换为数据库集群所在项目的名称。
运行以下命令,检查导入状态:
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:存储文件的对象存储路径的名称。