Airflow 데이터베이스에 액세스

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

이 페이지에서는 Cloud Composer 환경의 Airflow 데이터베이스를 실행하는 Cloud SQL 인스턴스에 연결하고 SQL 쿼리를 실행하는 방법을 설명합니다.

예를 들어 Airflow 데이터베이스에서 직접 쿼리를 실행하거나, 데이터베이스 백업을 수행하거나, 데이터베이스 콘텐츠를 기반으로 통계를 수집하거나, 데이터베이스에서 다른 커스텀 정보를 가져올 수 있습니다.

Cloud Composer 환경에서 사용할 수 있는 방법 중 하나는 환경의 GKE 클러스터에 있는 VM에서 Airflow 데이터베이스에 연결하는 것입니다.

환경 클러스터의 이름 및 영역 가져오기

  1. Google Cloud 콘솔에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. 환경을 선택합니다.

  3. 환경 구성 탭으로 이동합니다.

  4. 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

  1. 사용자 환경의 Airflow 웹 인터페이스에 액세스합니다.
  2. Airflow 웹 인터페이스에서 관리 >구성으로 이동합니다.

  3. sql_alchemy_conn 매개변수를 찾습니다.

  4. 이 매개변수의 값에서 사용자 이름, 비밀번호, 데이터베이스 이름을 가져옵니다.

    예를 들어 이 매개변수의 값이 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

  1. 사용자 환경의 Airflow 웹 인터페이스에 액세스합니다.
  2. Airflow 웹 인터페이스에서 관리 > 구성으로 이동합니다.
  3. sql_alchemy_conn 매개변수를 찾습니다.
  4. 이 매개변수의 값에서 사용자 이름, 비밀번호, 데이터베이스 이름을 가져옵니다.

    예를 들어 이 매개변수의 값이 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입니다.

데이터베이스 엔드포인트 주소 가져오기

  1. Google Cloud 콘솔에서 Kubernetes Engine > 게이트웨이, 서비스 및 인그레스 페이지로 이동합니다.

    서비스 및 인그레스로 이동

  2. 클러스터의 airflow-sqlproxy-service 서비스를 선택합니다. 엔드포인트에 클러스터 이름 또는 나열된 IP 범위를 사용하여 올바른 항목을 찾을 수 있습니다.

  3. 서비스 세부정보 페이지에서 서빙 포드의 IP 주소를 찾습니다. IP 주소는 엔드포인트 열의 서빙 포드 섹션에 나열됩니다.

VM 인스턴스 만들기

다음 매개변수를 사용하여 새 VM 인스턴스를 만듭니다.

  • Region 사용 : 클러스터와 동일한 리전입니다.

  • 영역 : 클러스터와 동일한 영역입니다.

  • 부팅 디스크 Linux 배포판을 선택합니다(예: Ubuntu 21.04 LTS).

  • 클러스터의 IP 범위에서 IP 주소를 지정합니다.

    1. 관리, 보안, 디스크, 네트워킹, 단독 테넌시 항목을 펼칩니다.
    2. 네트워킹 탭으로 이동합니다.
    3. 네트워크 인터페이스에서 기본 인터페이스 항목을 확장합니다.
    4. 별칭 IP 범위 표시를 펼칩니다.
    5. 서브넷 범위에서 클러스터의 gke-services IP 범위를 선택합니다. 예를 들면, gke-europe-west3-composer-exam7b206598-gke-services-115b26e7 이전 단계에서 클러스터 이름을 가져왔습니다.
    6. 별칭 IP 범위에서 지정된 서브넷 범위의 IP 주소 범위에 있는 VM 인스턴스의 IP 주소를 지정합니다.

VM 인스턴스에 연결하고 SQL 클라이언트 패키지 설치

Airflow 2

  1. 이전 단계에서 만든 VM 인스턴스에 연결합니다.

  2. postgresql-client 패키지를 설치합니다.

    sudo apt-get update
    sudo apt-get install postgresql-client
    

Airflow 1

  1. 이전 단계에서 만든 VM 인스턴스에 연결합니다.

  2. 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 버킷으로 전송하려면 다음 안내를 따르세요.

gcloud storage cp DUMP_FILE BUCKET_ADDRESS

다음과 같이 바꿉니다.

  • DUMP_FILE을 덤프 파일의 이름으로 바꿉니다.
  • BUCKET_ADDRESS를 버킷 주소로 바꿉니다. 예를 들면 gs://europe-west3-db-dump입니다.

또는 덤프 파일을 로컬에서 gcloud compute scp로 전송할 수 있습니다.

다음 단계