Cloud Composer 1 | Cloud Composer 2
このページでは、Cloud Composer 環境の Airflow データベースを実行して SQL クエリを実行する Cloud SQL インスタンスに接続する方法について説明します。
たとえば、Airflow データベースで直接クエリを実行する、データベースのバックアップを作成する、データベースのコンテンツに基づいて統計情報を収集する、またはデータベースからその他のカスタム情報を取得することが必要になる場合があります。
Cloud Composer 環境の場合、これを行うための 1 つの方法は、環境の GKE クラスタ内の VM から Airflow データベースに接続することです。
環境のクラスタの名前とゾーンを取得する
Google Cloud Console で [環境] ページに移動します。
環境を選択します。
[環境の設定] タブに移動します。
[GKE クラスタ] 項目に、環境の GKE クラスタの名前とゾーンが表示されます。
たとえば、このパラメータの値が
projects/example-project/zones/europe-west3-a/clusters/europe-west3-composer-exam--7b206598-gke
、クラスタ名がeurope-west3-composer-exam--7b206598-gke
の場合、クラスタゾーンはeurope-west3-a
になります。
データベース接続パラメータを取得する
Airflow 2
- 環境の Airflow ウェブ インターフェースにアクセスします。
Airflow ウェブ インターフェースで、[管理者] > [構成] に移動します。
sql_alchemy_conn
パラメータを見つけます。このパラメータの値から、ユーザー名、パスワード、データベース名を取得します。
たとえば、このパラメータの値が
postgresql+psycopg2://root:example-password@127.0.0.1:3306/composer-1-17-0-airflow-2-0-1-400fa094
、ユーザー名がroot
、パスワードがexample-password
の場合、データベース名はcomposer-1-17-0-airflow-2-0-1-400fa094
です。
Airflow 1
- 環境の Airflow ウェブ インターフェースにアクセスします。
- Airflow ウェブ インターフェースで、[管理者] > [構成] に移動します。
sql_alchemy_conn
パラメータを見つけます。このパラメータの値から、ユーザー名、パスワード、データベース名を取得します。
たとえば、このパラメータの値が
mysql+mysqldb://root:example-password@127.0.0.1/composer-1-16-2-airflow-1-10-14-3e9e2312?charset=utf8
、ユーザー名がroot
、パスワードがexample-password
の場合、データベース名はcomposer-1-16-2-airflow-1-10-14-3e9e2312
です。
データベース エンドポイント アドレスを取得する
Google Cloud コンソールで、[Kubernetes Engine] > [Gateways, Services & Ingress] ページに移動します。
クラスタの
airflow-sqlproxy-service
サービスを選択します。クラスタの名前または表示されているエンドポイントの IP 範囲を使用して、正しい項目を検索できます。[サービスの詳細] ページで、処理元の Pod の IP アドレスを探します。これは [処理元の Pod] の [エンドポイント] 列に表示されます。
VM インスタンスを作成する
次のパラメータを使用して新しい VM インスタンスを作成します。
Region を使用します。クラスタと同じリージョンを選択します。
ゾーン。クラスタと同じゾーンを選択します。
ブートディスクLinux ディストリビューション(
Ubuntu 21.04 LTS
など)を選択します。クラスタの IP 範囲に IP アドレスを指定します。
- [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] メニューを展開します。
- [ネットワーキング] タブに移動します。
- [ネットワーク インターフェース] で、[デフォルト] インターフェース項目を展開します。
- [エイリアス IP 範囲を表示] を展開します。
- [サブネット範囲] で、クラスタの
gke-services
IP 範囲を選択します。例:gke-europe-west3-composer-exam7b206598-gke-services-115b26e7
前のステップでクラスタの名前を取得しました。 - [エイリアス IP 範囲] で、指定したサブネット範囲の IP アドレス範囲内にある VM インスタンスの IP アドレスを指定します。
VM インスタンスに接続し、SQL クライアント パッケージをインストールする
Airflow 2
前のステップで作成した VM インスタンスに接続します。
次の方法で、
postgresql-client
パッケージをインストールします。sudo apt-get update sudo apt-get install postgresql-client
Airflow 1
前のステップで作成した VM インスタンスに接続します。
次の方法で、
mysql-client
パッケージをインストールします。sudo apt-get update sudo apt-get install mysql-client
Airflow データベースに接続する
VM インスタンスに接続した状態で、Airflow データベースに接続するには、次のコマンドを実行します。
Airflow 2
psql --user=USERNAME --password \
--host=DB_ENDPOINT \
--port=3306 \
DB_NAME
Airflow 1
mysql --user=USERNAME --password \
--host=DB_ENDPOINT \
DB_NAME
前のステップで取得した値に置き換えます。
USERNAME
は、ユーザー名に置き換えます。DB_ENDPOINT
は、このガイドの前半で取得したデータベース エンドポイントの IP アドレスに置き換えます。DB_NAME
は、データベース名に置き換えます。
SQL クエリを実行する
プロンプトが表示されます。このプロンプトで SQL クエリを実行できます。次に例を示します。
SELECT * FROM dag LIMIT 10;
データベース コンテンツをダンプしてバケットに転送する
データベース コンテンツをファイルにダンプするには、次のコマンドを実行します。
Airflow 2
pg_dump --user=USERNAME --password \
--host=DB_ENDPOINT \
--port=3306 \
DB_NAME > DUMP_FILE
Airflow 1
mysqldump --user=USERNAME --password \
--host=DB_ENDPOINT \
DB_NAME > DUMP_FILE
以下のように置き換えます。
USERNAME
は、ユーザー名に置き換えます。DB_ENDPOINT
は、データベース エンドポイントの IP アドレスに置き換えます。DB_NAME
は、データベース名に置き換えます。DUMP_FILE
は、ダンプファイルの名前に置き換えます。例:dump.sql
ダンプファイルを Cloud Storage バケットに転送するには:
gsutil cp DUMP_FILE BUCKET_ADDRESS
以下のように置き換えます。
DUMP_FILE
は、ダンプファイルの名前に置き換えます。BUCKET_ADDRESS
は、バケットのアドレスに置き換えます。例:gs://europe-west3-db-dump
その代わりに、gcloud compute scp
を使用してダンプファイルをローカルに転送することもできます。