{GCP Cloud SQL} SQL ダンプファイルを使用したエクスポートとインポート

https://cloud.google.com/sql/docs/mysql/import-export/import-export-sql?hl=ja

SQL ダンプファイルや CSV ファイルをエクスポートする場合は、
ファイル拡張子 .gz を使用してデータを圧縮します。ファイル拡張子 .gz のファイルは、インポートすると自動的に解凍されます。

 

-- 1. 前作業

gcloud init
gcloud auth list

gcloud --version

gcloud projects create project01-9999999 \
--name="project01"

gcloud projects list


gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet

gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111

gcloud services enable compute.googleapis.com --project project01-9999999

gcloud components update


-- 2. Cloud SQL Admin APIの有効化

gcloud services list --enabled

gcloud services enable sqladmin.googleapis.com

 

-- 3. Cloud SQLインスタンスの作成


gcloud sql tiers list


gcloud sql instances create mysql01 \
--assign-ip \
--availability-type=zonal \
--database-version=MYSQL_8_0_30 \
--enable-bin-log \
--no-deletion-protection \
--retained-backups-count=1 \
--retained-transaction-log-days=1 \
--root-password='password' \
--no-storage-auto-increase \
--storage-size=10 \
--storage-type=HDD \
--region=asia-northeast1 \
--tier=db-f1-micro

 


gcloud sql instances list
gcloud sql instances describe mysql01

-- 4. サービス アカウントの設定

gcloud projects add-iam-policy-binding project01-9999999 \
--member="serviceAccount:p111111111111-111111@gcp-sa-cloud-sql.iam.gserviceaccount.com" \
--role="roles/storage.objectAdmin"

gcloud projects get-iam-policy project01-9999999

 

-- 5. テストデータ作成

gcloud sql connect mysql01 --user=root

create database test;
use test

create table tab1(col1 int, col2 varchar(10), col3 datetime);

insert into tab1 values( 1,'A',current_timestamp() );
insert into tab1 values( 2,'B',current_timestamp() );
insert into tab1 values( 3,'C',current_timestamp() );

select * from tab1;


-- 6. バケット作成

gsutil mb -c standard -l asia-northeast1 gs://bucket123
gsutil ls

gsutil ls -r gs://bucket123

 


-- 7. export/import

 


gcloud sql export sql mysql01 \
gs://bucket123/mysql01.dmp.gz \
--database=test

gcloud sql export csv mysql01 \
gs://bucket123/mysql01.csv.gz \
--database=test \
--query="select * from tab1"

gsutil ls -r gs://bucket123

import前にテーブルをdropする

gcloud sql import sql mysql01 \
gs://bucket123/mysql01.dmp.gz \
--database=test

gcloud sql import csv mysql01 \
gs://bucket123/mysql01.csv.gz \
--database=test \
--table=tab1

 

 

-- 8. クリーンアップ

gsutil rm -r gs://bucket123
gsutil ls

gcloud sql instances delete mysql01 --quiet
gcloud sql instances list

 

gcloud projects list

gcloud projects delete project01-9999999 --quiet