Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
이 페이지에서는 Cloud Composer 환경의 Airflow 데이터베이스를 실행하는 Cloud SQL 인스턴스에 연결하고 SQL 쿼리를 실행하는 방법을 설명합니다.
예를 들어 Airflow 데이터베이스에서 직접 쿼리를 실행하거나, 데이터베이스 백업을 수행하거나, 데이터베이스 콘텐츠를 기반으로 통계를 수집하거나, 데이터베이스에서 다른 커스텀 정보를 가져올 수 있습니다.
Cloud Composer 환경에서 사용할 수 있는 방법 중 하나는 환경의 GKE 클러스터에 있는 VM에서 Airflow 데이터베이스에 연결하는 것입니다.
환경 클러스터의 이름 및 영역 가져오기
Google Cloud 콘솔에서 환경 페이지로 이동합니다.
환경을 선택합니다.
환경 구성 탭으로 이동합니다.
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 > 게이트웨이, 서비스 및 인그레스 페이지로 이동합니다.
클러스터의
airflow-sqlproxy-service
서비스를 선택합니다. 엔드포인트에 클러스터 이름 또는 나열된 IP 범위를 사용하여 올바른 항목을 찾을 수 있습니다.서비스 세부정보 페이지에서 서빙 포드의 IP 주소를 찾습니다. IP 주소는 엔드포인트 열의 서빙 포드 섹션에 나열됩니다.
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 버킷으로 전송하려면 다음 안내를 따르세요.
gcloud storage cp DUMP_FILE BUCKET_ADDRESS
다음과 같이 바꿉니다.
DUMP_FILE
을 덤프 파일의 이름으로 바꿉니다.BUCKET_ADDRESS
를 버킷 주소로 바꿉니다. 예를 들면gs://europe-west3-db-dump
입니다.
또는 덤프 파일을 로컬에서 gcloud compute scp
로 전송할 수 있습니다.