728x90
Airflow 데이터베이스
1. 에어플로우의 DB
- Airflow를 설치하면 Sqlite를 Default DB로 사용하게 되기 때문에 필수 라이브러리
- Sqlite는 Sequentail Executor로 순차적으로 진행하는 것만 할 수 있음
- 작업이 느리고 원하는 시간에 작업을 처리하지 못할 수도 있기 때문에 상용 버전에선 거의 사용하지 않음
- 다른 Executor를 사용하면 병렬처리가 가능해져 작업이 빨라짐, 다양한 기능 또한 있음
- 다른 Executor를 사용하기 위해선 DB 변경이 필요함
- 주로 사용하는 것이 PostgreSQL 이나 MySQL
2. Airflow DB 변경 (PostgreSQL)
공식 문서 참조
https://airflow.apache.org/docs/apache-airflow/stable/howto/set-up-database.html
- 서버에 PostgreSQL 설치 (Amazonlinux2, CentOS)
sudo yum install postgresql postgresql-server postgresql-devel python3-devel -y
sudo postgresql-setup initdb
sudo systemctl enable postgresql --now
sudo systemctl status postgresql
- PostgreSQL 계정 설정
postgres 유저 비밀번호 변경 & 로그인 후 접속
sudo passwd postgres
su - postgres
psql
airflow database 생성 & 권한 부여 (PostgreSQL 안에서 진행)
--db 생성
CREATE DATABASE airflow_db;
--user 생성 & 권한 부여
CREATE USER airflow_user WITH PASSWORD 'airflow_pass';
GRANT ALL PRIVILEGES ON DATABASE airflow_db TO airflow_user;
ALTER USER airflow_user SET search_path = public;
--db 확인
\l
- Airflow DB 설정 변경
pip install psycopg2
vi /home/ec2-user/airflow/airflow.cfg
sql_alchemy_conn & result_backend를 PostgreSQL로 변경
sql_alchemy_conn = postgresql+psycopg2://airflow_user:airflow_pass@localhost/airflow_db
result_backend = db+postgresql://airflow_user:airflow_pass@localhost/airflow_db
- Airflow DB 초기화 후 재실행
airflow db init
airflow webserver
airflow scheduler
- DB 확인 (PostgreSQL 안에서 진행)
\c airflow_db
\dt
3. Airflow DB 변경 (MySQL)
- 서버에 MySQL 설치 & 확인 (MySQL 8)
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm -y
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server
mysql -V
sudo systemctl enable mysqld --now
sudo systemctl status mysqld
Ubuntu(22.04)
sudo apt-get update -y
sudo apt-get install mysql-server -y
sudo systemctl enable mysql --now
sudo systemctl status mysql
- MySQL 접속
root 초기 패스워드 확인
sudo grep 'temporary password' /var/log/mysqld.log
mysql 로그인 & root 유저 비밀번호 변경
mysql -u root -p
alter user 'root'@'localhost' identified by 'Heywant517!';
- MySQL DB 생성
CREATE DATABASE airflow_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'airflow_user' IDENTIFIED BY 'Airflow_pass123!';
GRANT ALL PRIVILEGES ON airflow_db.* TO 'airflow_user';
- Airflow 설정 파일 변경
vi /home/ec2-user/airflow/airflow.cfg
sql_alchemy_conn를 MySQL로 변경
sql_alchemy_conn = mysql+mysqldb://airflow_user:Airflow_pass123%@localhost:3306/airflow_db
- Airflow DB 초기화
MySQL 클라이언트 라이브러리 설치
sudo yum install python3-devel gcc mysql-devel -y
pip install mysqlclient
ubuntu
sudo apt-get install python3-dev gcc libmysqlclient-dev -y
pip install mysqlclient
DB 재시작 & DB 초기화
sudo systemctl restart mysqld
airflow db init
- DB 확인 (mysql 안에서 확인)
mysql -u airflow_user -pAirflow_pass123!
use airflow_db;
show tables;
반응형
'💾 Data > Airflow' 카테고리의 다른 글
[Airflow] Airflow 용어 정리 (1) (0) | 2023.03.24 |
---|---|
[Airflow] Airflow Pipeline 생성 (1) (0) | 2023.03.23 |
[Airflow] Airflow Dag Task 옵션 값 (0) | 2023.03.21 |
[Airflow] Airflow 실행 (0) | 2023.03.14 |
[Airflow] Airflow 설치 (0) | 2023.03.14 |