airflow学习之路 (二) airflow 底层数据库的修改

airflow学习之路 (二) airflow 底层数据库的修改

​ airflow想要升级的处理能力,后台metadata DB必须使用MySQL或者Postgresql。Airflow默认是有Sqlite,仅仅只能用做开发测试,也无法使用LocalExecutor。另外,后续的DAG会在这个数据库中执行读写数据操作,也是为后面的内容做好铺垫。

airflow 底层数据库的修改

设置 MySQL 数据库

创建一个数据库,Airflow 将使用该数据库访问此数据库。 在下面的示例中,将创建一个数据库airflow_db

CREATE DATABASE airflow_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
安装mysql依赖包
pip install mysql-connector-python -i https://pypi.douban.com/simple
连接配置
mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>

示例如下

mysql+mysqlconnector://root:123456@mysql:3306/airflow_db
修改配置
vim ~/airflow/airflow.cfg 

在[database]下面修改配置如下:

[database]

# sql_alchemy_conn = sqlite:home/deepcam/airflow/airflow.db
sql_alchemy_conn = mysql+mysqlconnector://root:123456@mysql:3306/airflow_db
初始化airflow
airflow db init

在这里插入图片描述

问题汇总

1.airflow db init异常
sqlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError) 1067 (42000): Invalid default value for 'updated_at'

找到MySQL的配置文件默认为my.ini 在[mysqld]下面增加配置如下:

sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION