Airflow2.1.3对接MariaDB/MySQL元数据表创建失败,求对应建表SQL脚本
Apache Airflow 2.1.3 MySQL/MariaDB元数据表创建异常解决方案
常见异常触发原因
- 数据库参数配置不符合要求:Airflow 2.1.3要求MySQL/MariaDB实例开启
explicit_defaults_for_timestamp = ON参数,数据库字符集需设置为utf8(不支持utf8mb4,否则会触发索引长度超限错误,导致字段、表创建中断),存储引擎必须使用InnoDB - 服务启动顺序错误:docker-compose启动时未优先执行元数据初始化,直接启动Scheduler、WebServer等核心组件,导致建表流程被打断
官方推荐元数据初始化方案(无需手动编写/寻找建表SQL)
Airflow自带全量元数据表创建、版本迁移能力,无需单独获取第三方建表脚本,操作步骤如下:
- 确认docker-compose配置中已正确配置数据库连接环境变量:
配置项AIRFLOW__DATABASE__SQL_ALCHEMY_CONN的格式为:mysql+pymysql://<数据库用户名>:<数据库密码>@<数据库服务地址>:<端口>/<Airflow元数据库名> - 执行初始化命令完成全量表创建:
docker-compose run --rm airflow-webserver airflow db init - 执行校验命令确认元数据状态正常:
docker-compose run --rm airflow-webserver airflow db check - 校验返回成功提示后,再正常启动所有compose服务即可。
注意:不要使用非官方渠道获取的建表脚本,容易出现版本不匹配、字段缺失、索引配置错误等兼容性问题,优先使用Airflow官方自带的数据库管理命令
手动导出建表SQL的方法
如果确实需要离线建表脚本,可在初始化完成的正常环境执行以下命令导出适配Airflow 2.1.3版本的全量建表SQL:
docker-compose exec airflow-webserver mysqldump -u<数据库用户名> -p<数据库密码> -h<数据库地址> <Airflow元数据库名> --no-data > airflow_2_1_3_mysql_schema.sql
导出的SQL可直接用于同版本MariaDB/MySQL环境的元数据表批量创建。
内容的提问来源于stack exchange,提问作者Joaquin
相关产品推荐
相关产品推荐

