管理数据库

GDC 沙盒提供数据库服务,用于测试和管理数据库集群。

创建数据库

如需创建和管理数据库集群,请参阅创建和管理数据库集群

可用的数据库引擎

GDC 沙盒仅支持 PostgreSQL 和 AlloyDB。

使用 GDC 控制台或分布式 Cloud CLI 创建数据库集群:

控制台

  1. 在主菜单中,选择数据库服务
  2. 点击创建数据库集群
  3. 选择数据库引擎对话框中,选择一个数据库引擎

  4. 配置集群对话框中,指定集群 ID、密码和数据库版本。您可以启用备份并配置备份保留期限。

  5. 配置主实例对话框中,指定数据库集群主实例的 CPU、内存和存储空间容量。建议您选择足够大的内存来容纳最大的表。

  6. 点击创建。创建数据库集群可能需要几分钟的时间。 在集群概览页面中检查集群的状态。当集群准备就绪时,状态会从正在创建变为就绪

gdcloud

  1. 在使用 Distributed Cloud CLI 之前,请安装并初始化该工具。然后,通过您的组织进行身份验证

  2. 运行以下命令以创建数据库集群:

    gdcloud database clusters create CLUSTER_NAME \
        --database-version DB_VERSION \
        --admin-password ADMIN_PASSWORD
    

    执行以下变量替换操作:

    • CLUSTER_NAME 替换为新集群的名称。
    • DB_VERSION 替换为新集群的版本字符串。例如,POSTGRESQL_13ALLOYDBOMNI_15
    • ADMIN_PASSWORD 替换为新集群的管理员密码。
  3. 如需详细了解如何为数据库集群配置 CPU、内存和存储空间资源、配置备份、启用高可用性以及其他可用选项,请运行以下命令:

    gdcloud database clusters create --help
    

API

  1. 创建一个包含以下内容的文件 db-cluster-create.yaml

    apiVersion: v1
    kind: Secret
    metadata:
      name: db-pw-DBCLUSTER_NAME
      namespace: USER_PROJECT
    type: Opaque
    data:
      DBCLUSTER_NAME: "BASE64_PASSWORD"
    ---
    apiVersion: DBENGINE_NAME.dbadmin.gdc.goog/v1
    kind: DBCluster
    metadata:
      name: DBCLUSTER_NAME
      namespace: USER_PROJECT
    spec:
      primarySpec:
        adminUser:
          passwordRef:
            name: db-pw-DBCLUSTER_NAME
        version: "DB_VERSION"
        resources:
          memory: DB_MEMORY
          cpu: DB_CPU
          disks:
          - name: DataDisk
            size: DB_DATA_DISK
    

    执行以下变量替换操作:

    • DBCLUSTER_NAME,数据库集群的名称。
    • USER_PROJECT:要在其中创建数据库集群的用户项目的名称。
    • BASE64_PASSWORD:数据库管理员密码的 base64 编码。
    • DBENGINE_NAME,数据库引擎的名称。此值是 alloydbomnipostgresql 中的一个。
    • DB_VERSION,数据库引擎的版本。
    • DB_MEMORY:分配给数据库集群的内存量,例如 5Gi
    • DB_CPU:分配给数据库集群的 CPU 数量,例如 2
    • DB_DATA_DISK:分配给数据库集群的空间量,例如 10 Gi
  2. kubectl --kubeconfig MANAGEMENT_API apply -f db-cluster-create.yaml
    

连接到数据库

默认情况下,数据库集群仅允许来自用户集群和同一项目的连接。

如需允许从其他项目连接到您项目中的所有数据库集群,请参阅启用跨项目连接

如需从 GDC 沙盒组织外部的 IP 地址连接到数据库,请按照连接到数据库集群中的说明启用外部连接。

您可以使用 sshuttle 通过本地数据库客户端(例如 psql)连接到数据库:

  1. 前往数据库集群的数据库服务页面的连接部分。本页包含:

    • 管理员账号的密码(用户名为 dbsadmin
    • 数据库集群的主端点的主机名和端口号
    • 用于连接到集群的 psql 命令(适用于 PostgreSQL 和 AlloyDB Omni 数据库集群)
    • 用于下载数据库集群的证书授权机构 (CA) 证书的链接
  2. 从 GDC 控制台的数据库服务页面中,在数据库集群的连接部分下载 CA 证书。

  3. 配置客户端以使用 CA 证书验证数据库。对于 psql 客户端,请将 PGSSLROOTCERT 环境变量设置为证书文件的路径,并将 PGSSLMODE 环境变量设置为您的偏好设置:

        export PGSSLROOTCERT=path/to/accounts_cert.pem
        export PGSSLMODE="verify-full"
    
  4. 启动安全隧道。如果您有正在运行的 sshuttle 实例(如连接到实例中所述),请终止该进程。

        sshuttle -r zone1-org-1-data@GDC_SANDBOX_INSTANCE_NAME --no-latency-control \
        --ssh-cmd 'gcloud compute ssh --project PROJECT_NAME --zone ZONE --tunnel-through-iap' \
        10.200.0.0/16 --dns
    

    将以下内容替换为 GDC 沙盒团队提供给您的值:

    • GDC_SANDBOX_INSTANCE_NAME:您的 GDC 沙盒实例的名称。
    • PROJECT_NAME:包含 GDC 沙盒环境的项目。
    • ZONE:包含您的 GDC 沙盒环境的可用区。
  5. 在隧道处于活动状态时,在另一个终端中使用 psql 运行命令

        PGPASSWORD=DB_PASSWORD psql -h DB_HOSTNAME -p PORT -U USERNAME -d postgres
    

    执行以下变量替换操作:

    • DB_PASSWORD:控制台界面中的密码。
    • DB_HOSTNAME:控制台中的数据库主机名。
    • DB_PORT:控制台中的数据库端口号。
    • DB_USERNAME:控制台中的数据库用户名。