【问题标题】:Is it possible to use MySQL UDF on Amazon RDS?是否可以在 Amazon RDS 上使用 MySQL UDF?
【发布时间】:2016-05-23 21:14:01
【问题描述】:

我需要在数据库发生变化时发送 HTTP 请求,所以我使用的是 mysqludf 扩展。

它在本地工作,但我怎样才能让它在 Amazon RDS 上也能工作?如果不可能,我需要一个解决方案,将 MySQL 触发器与 sys_exec 函数或类似函数一起使用。

有人可以帮助我吗?

谢谢!

【问题讨论】:

  • 可能不会。 RDS 已锁定,因此您无法破坏托管组件。

标签: mysql amazon-web-services amazon-rds udf


【解决方案1】:

如果您的最终要求是通过从 RDS 数据库上的某些 sql 操作中获取触发器来调用某些外部 API,您可以利用 AWS SNS 和 lambda 来实现此目的。它不是一条笔直的道路,但会达到目的。事实上,我已经使用此解决方法来满足我的要求之一。你可以找到线程here

【讨论】:

    【解决方案2】:

    绝对不是。 RDS 实例以两种方式锁定,阻止您安装 UDF;不要与存储函数混淆,UDF 是用 C 语言编写并编译的。然后必须将二进制共享对象文件复制到 MySQL 服务器的文件系统中,您无法使用 RDS(即其中一个)访问该文件系统,并且您必须具有 SUPER 权限才能从文件中实际加载 UDF 插件,哪个 RDS 不提供(即两个)。

    此外,您不能在 RDS 上使用 sys_exec()sys_eval(),因为这些函数不是内置的。它们也是 UDF 插件。

    这是与 RDS(或任何“托管”数据库服务器服务,我怀疑)的权衡之一。为了换取简单性和点击式配置,您放弃了一些东西。

    在 RDS 中没有一种方法可以做你想做的事。

    【讨论】:

    • 好的,感谢您的回答,所以我必须找到解决方法。
    • 对,但要明确的是,我们没有可用的解决方法涉及在 RDS 机器本身中运行的自定义代码。
    • 我也试图找出这是否可能,但 RDS 不支持需要上传已编译对象文件的 UDF。您必须创建一个 EC2 实例并安装 MySQL,这样您才能完全控制并将编译的 C 代码上传到您的 MySQL。
    • 很好的答案。但是,您可以考虑使用提供专有 mysql.lambda_async 过程的 Amazon Aurora MySQL——您可以使用它来调用 AWS Lambda。
    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多