データをインポートする前に、次の操作を行う必要があります。
データをインポートする データベース クラスタを作成します。
ダンプファイルをストレージ バケットにアップロードします。手順については、ストレージ バケットにオブジェクトをアップロードするをご覧ください。
Database Service インポート サービス アカウントにダンプ ファイルの読み取りアクセス権を付与します。ストレージへのアクセス権の付与と取得をご覧ください。たとえば、インポート サービス アカウントに
project-bucket-object-viewerロールを付与できます。このサービス アカウントは、データベース クラスタの作成時に Database Service システムによって自動的に作成されます。データベース クラスタのステータスには、インポート サービス アカウントの名前と Namespace の両方が含まれます。
インポート サービス アカウントの名前と Namespace を取得するには、次のコマンドを実行します。
kubectl --kubeconfig=MGMT_API_KUBECONFIG \ get dbcluster.postgresql -n PROJECT_ID DATABASE_CLUSTER_NAME \ -o jsonpath='{.status.serviceAccounts.import}'このコマンドは、名前と Namespace の詳細を含む JSON オブジェクトを返します。
{"name":"postgresql-import-DATABASE_CLUSTER_NAME","namespace":"SERVICE_ACCOUNT_NAMESPACE"}
警告: データベース ダンプファイルは、pg_restore と互換性のあるアーカイブ形式で pg_dump を使用して作成する必要があります。プレーン SQL 形式のダンプ(形式オプションが指定されていない場合のデフォルト)はサポートされていません。
ダンプファイルをデータベース クラスタにインポートするには、GDC コンソールまたは Distributed Cloud CLI を使用します。
コンソール
GDC コンソールで [データベース クラスタの概要] ページを開き、インポートするデータベースを含むクラスタを確認します。
[インポート] をクリックすると、[アカウントにデータをインポート] パネルが開きます。
[アカウントにデータをインポート] パネルの [ソース] セクションで、以前にアップロードした SQL データ ダンプファイルの場所を指定します。
[宛先] フィールドで、インポート用の既存の宛先データベースを指定します。
[インポート] をクリックすると、GDC コンソールのバナーにインポートのステータスが表示されます。
gdcloud CLI
Distributed Cloud CLI を使用する前に、インストールして初期化します。次に、組織で認証を行います。
次のコマンドを実行して、ダンプファイルをデータベースにインポートします。
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: 保存されたファイルへのオブジェクト ストレージ パスの名前。