如何在Airflow中建立与MySQL数据库的SSH连接?

时间:2017-12-04 14:34:43

标签: mysql ssh airflow apache-airflow

我正在尝试使用SSH连接连接到数据库。但是,当我尝试添加连接时,我看不到允许我建立SSH连接的字段。我知道可以传递额外的参数,但我不确定Airflow接受哪些键值用于我的用例。

1 个答案:

答案 0 :(得分:0)

当前(自身)的气流不允许SSH连接。使用气流的Extra参数,您只能加密连接(顺便说一句是个好主意)。

因此,如果您对加密连接感兴趣,则需要在Extra字段中指定类似的参数: "cert":"/path/to/certs/client-cert.pem", "key":"/path/to/certs/client-key.pem", "ca":"/path/to/certs/server-ca.pem"}

详细地,如果您“挖” MySqlOperator,将看到以下链:

此链接很好地说明了certkeyca是什么以及应该放在哪里。


现在,如果那不是您想要的,那么您需要“退出” Airflow。假设您已经可以SSH服务器(ssh username@your-host),然后在单独的终端窗口(或后台)中使用以下命令启动转发:ssh -L <bind_address>:127.0.0.1:<host_port> username@your-host其中:

  • <bind_address>是您将在本地连接Airflow的端口
  • <host_port>是侦听远程主机数据库的端口(对于mysql,它是3306

在进行转发时,您可以使用Airflow的Connections设置并指定将localhost用作Host并将<bind_address>用作Port的连接

示例:假设您的远程数据库在端口3306上侦听,并且有效的ssh连接为ssh me@my-host。您的转发命令应为ssh -L 9876:127.0.0.1:3306和Airflow的设置:

  • Hostlocalhost
  • Port9876
  • 所有其他连接设置类似于连接到本地主机上的mysql数据库

请记住,您的转发会话必须始终保持“打开”状态,否则连接将断开。只需将其放在背景中即可。