MySQL 인스턴스를 받아서 Airflow 를 연동해보는 아래와 같은 오류가 발생했다. 참고로 이 오류는 MySQL 가 group-replication 으로 세팅되어있을때 나타나는 현상이다. 구글링을 해보면 이 오류의 일반적인 케이스는 PKEY 를 지정안한 Table 을 사용할때 나타난 문제였지만, 나는 이 문제가 아니라 "FOREIGN KEY ... REFERENCES .. ON DELETE CASCADE" 제약조건이 Airflow 에서 자동생성되는 테이블에 존재했기 때문에 나타난 문제였다. 그 원인과 해결방법을 알아보도록 하자. sqlalchemy.exc.OperationalError: (MySQLdb.OperationalError) (3098, 'The table does not comply wi..
MySQL 5.x 버전대에서 MySQL 8.x 버전대로 바뀌면서, yum 에서 MySQL 5.x 를 삭제하고, MySQL 8.x 버전을 재설치후 mysql 명령으로 접근이 가능한걸 확인후, airflow db init 을 했더니 아래와 같은 오류가 발생했다. 인터넷에서는 caching_sha2_password 에서 mysql_native_password 로 구성을 바꾸라는게 대부분의 답변이었는데, 나는 내가 dbms 를 설치한게 아니라 담당자한테 인스턴스만 제공받고 root 권한이 없는 상황이라 인프라 환경을 바꾸지 않고 해결가능한 방법이 있는지 삽질을 했고 결국은 그 원인을 찾아냈다. (py3) bash-4.2$ airflow db init [2023-04-25 11:03:35,548] {setting..
보통은 데이터를 pull 해오는 케이스가 많은데, 어짜다보니 데이터를 각 서버로 push 해줘야하는 상황이 생겼다. 쉽게 생각해서 1개의 서버에서 다른 서버에 데이터를 쏴주는 상황을 생각하면 된다. 인터넷에 보면 Xinetd 패키지가 필요하다고 설명되어있는데 내가 테스트해본 결과 이 패키지는 필요없었고, rsyncd 데몬만 서비스로 띄우면 잘 동작했다. 내가 이게 필요했던 이유는, airflow 의 DAG 를 여러 서버에 동기화 해주는 과정이 필요했기 때문이다. 설정방법 모든 서버에 /etc/rsyncd.conf 설정파일과 rsyncd 데몬이 떠있는지 체크해야한다. rsync 를 통해 업로드를 하는것이므로, read only 는 no 가 되어야한다. 그리고 업로드할 경로를 path 에 지정하고, hos..
RabbitMQ 최신버전을 설치하기위해 Erlang 부터 설치해야 하는 상황인데 yum 기본버전의 erlang 을 설치하면 버전이 낮아서 설치가 안되는 문제가 발생된었다. 그래서 어쩔수 없이 직접 rpm 패키지를 다운로드 받아서 설치하는데 다음과 같은 오류가 발생했다. 결과적으로 이 오류가 나는 이유는 unixODBC 관련 라이브러리와 의존성이 존재하기 때문이다. warning: esl-erlang_23.3.4.5-1centos7_amd64.rpm: Header V4 RSA/SHA512 Signature, key ID a14f4fca: NOKEY error: Failed dependencies: libodbc.so.2()(64bit) is needed by esl-erlang-23.3.4.5-1.x86_..
MySQL 은 별도로 세팅되서 운영중이더라도, 연결이 가능한지 여부를 테스트하기위한 client 세팅을 해야할때가 있다. 이때 가장 쉬운편에 속하는게 mysql 패키지를 설치하고 원격접속해서 테스트해보는것이다. 보통은 DBMS 서버에 직접 붙어서 연결하기 때문에 파라미터를 잘 모를때가 많은데 원격 접속할때는 다음과 같이 접근하면 된다. 디폴트 포트가 3306인데, 디폴트 포트라면 --port 인자는 생략가능하다 % mysql -h 도메인주소 --port 포트번호 -u 아이디 -p 설치하기 단순히 MySQL 에 접근하더라도 mysql 패키지가 필요하다. 다음과 같은 명령어로 설치가 가능하다. sudo yum install mysql -y 연결해보기 설치가 되었으면 mysql 명령어 사용이 가능하며 다음과 ..
airflow.cfg 의 dbms 연결설정의 경우 아래와 같은 패턴으로 입력을 해야하는데, 문제는 암호에 @ 가 존재해서 도메인을 잘못 판단하는 문제가 발생했다. 구글링 해보면 python 코드를 통해 해결하거나, "@" 를 "%40" 형태로 치환하면 된다고 하는데, 그렇게 해결이 안되었다. 그 문제는 configparser 에서 "%" 가 또 영향을 받기 때문이었다. sql_alchemy_conn = mysql+mysqldb://:@:/airflow_db?charset=utf8 해결방법 결론부터 말하면 @ 는 %%40 으로 대체해야 설정이 정상적으로 인지된다. urllib 의 quote 로 변환한 결과가 %40 인데, configparser 에서는 또 % 를 추가로 이스케입해줘야 하는 문제가 있기 때문..
내 mac pro 에서 airflow 2.x 버전대를 빌드하면서 compile assets 를 이용한 ui 빌드를 시도하는데 다음과 같은 오류가 발생했다. 결론부터 말하면 mac 에 md5sum 바이너리가 없어서 실패난 현상이었다. (airflow) user@AL0000001 airflow % python setup.py compile_assets gitpython not found: Cannot compute the git version. /Users/user/.virtualenvs/airflow/lib/python3.8/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprec..
Airflow 2.x 버전을 띄우려고 했는데 아래와 같은오류가 발생했다. 결론부터 말하면 sqlite 의 의존성이 3.15 보다 버전이 더 커야 작동된다는말인데, centos 의 yum 을 통해 설치 가능한 버전은 sqlite는 3.7.17 버전이 가장 최신이다. 그래서 더 상위버전으로 업데이트해야 동작한다는 말이다. 해결방법은 소스를 다운로드 받아서 빌드하면 쉽게 해결된다. $ airflow standalone Traceback (most recent call last): File "/home/airflow/py3/bin/airflow", line 5, in from airflow.__main__ import main File "/home/airflow/py3/lib/python3.9/site-pack..