データベースを管理する

GDC Sandbox は、データベース クラスタのテストと管理を行うためのデータベース サービスを提供します。

データベースを作成

データベース クラスタを作成して管理するには、データベース クラスタを作成して管理するをご覧ください。

利用可能なデータベース エンジン

GDC Sandbox は PostgreSQL と AlloyDB のみをサポートしています。

GDC コンソールまたは Distributed 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: データベース エンジンの名前。alloydbomni または postgresql のいずれかです。
    • DB_VERSION。データベース エンジンのバージョン。
    • DB_MEMORY: DB クラスタに割り当てられるメモリ量。例: 5Gi
    • DB_CPU: DB クラスタに割り当てられる CPU の量。例: 2
    • DB_DATA_DISK: DB クラスタに割り当てられるスペースの量。例: 10 Gi
  2. kubectl --kubeconfig MANAGEMENT_API apply -f db-cluster-create.yaml
    

データベースに接続する

デフォルトでは、データベース クラスタはユーザー クラスタ内および同じプロジェクト内からの接続のみを許可します。

別のプロジェクトからプロジェクト内のすべてのデータベース クラスタへの接続を有効にするには、クロス プロジェクト接続を有効にするをご覧ください。

GDC Sandbox 組織外の 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 Sandbox チームから提供された値に置き換えます。

    • GDC_SANDBOX_INSTANCE_NAME: GDC Sandbox インスタンスの名前。
    • PROJECT_NAME: GDC Sandbox 環境を含むプロジェクト。
    • ZONE: GDC Sandbox 環境を含むゾーン。
  5. トンネルがアクティブな間に、別のターミナルで psql を使用してコマンドを実行します。

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

    次の変数を置き換えます。

    • DB_PASSWORD: コンソール UI のパスワード。
    • DB_HOSTNAME: コンソールのデータベース ホスト名。
    • DB_PORT: コンソールから取得したデータベースのポート番号。
    • DB_USERNAME: コンソールのデータベース ユーザー名。