¶准备工作
首先参考:
- 《在Anaconda环境下安装Apache Airflow以进行定时任务管理:安装篇》安装
airflow
- 《Ubuntu安装Postgresql并设置自己的数据文件位置》配置好数据库
- 安装
SQLAlchemy
和psycopg2
1
2pip install SQLAlchemy
pip install psycopg2 - 停止Airflow相关服务
1
2sudo systemctl stop airflow-scheduler.service
sudo systemctl stop airflow-webserver.service
¶创建Airflow相关的数据库和数据库用户
- 切换到Postgresql的管理用户,运行
psql
进入Postgresql的命令行1
2sudo su postgres
psql - 在Postgresql的命令行运行以下命令(注意最后的分号要带上)创建相应的DB和用户。
1
2
3
4
5
6CREATE DATABASE airflow_db;
CREATE USER airflow_user WITH PASSWORD 'airflow_pass';
GRANT ALL PRIVILEGES ON DATABASE airflow_db TO airflow_user;
-- PostgreSQL 15+ requires additional privileges:
\connect airflow_db;
GRANT ALL ON SCHEMA public TO airflow_user; - 编辑Postgresql的
pg_hba.conf
文件赋予airflow_user
访问权限- 默认位于
/etc/postgresql/16/main/pg_hba.conf
- 添加一行允许所有本地用户通过
1
host all all 127.0.0.1/32 password
localhost
访问。这个限制有些宽,可以具体限制到用户访问ip等。
- 默认位于
¶修改Airflow配置并迁移到新数据库
首先配置环境变量:
1 | export AIRFLOW_HOME=/data/airflow |
(注意这里一定要手工export
,试验过source /etc/sysconfig/airflow
,尽管echo $AIRFLOW_HOME
输出的是正确的目录,还是不能被airflow
识别,不知道是不是因为用的Anaconda环境。)
打开airflow.cfg
文件
1 | sudo vi $AIRFLOW_CONFIG |
将sql_alchemy_conn
设为Postgresql
的链接
1 | sql_alchemy_conn = postgresql+psycopg2://airflow_user:airflow_pass@localhost/airflow_db |
初始化
1 | airflow db migrate |
重新启Airflow的服务
1 | sudo systemctl start airflow-scheduler.service |
检查状态
1 | sudo systemctl status airflow-scheduler.service |