【问题标题】:will triggers run in MySQL slave in a Single Master Multi-Slave replication将触发器在单主多从复制中运行在 MySQL 从属中
【发布时间】:2011-10-21 10:11:52
【问题描述】:

我们的客户正在运行一个带有多个从属的单主(在一个集群中)。

现在,他希望我们编写一些(仅)在从属设备上添加、更新或删除新记录时在从属设备上运行的触发器。此触发器应运行外部 java 程序。

这可能吗?推荐?

我们如何从触发器运行 java 程序?推荐/安全吗?

有什么需要注意的问题吗?

【问题讨论】:

  • MySQL 不支持 Java 作为触发器的一部分或在服务器内部运行。
  • 我们希望触发器在运行 MYSQL 从属服务器的服务器上运行外部程序。我们不一定要在 MYSQL 服务器中运行程序。
  • 从数据库服务器内部调用外部程序是一个安全漏洞,并不是一个好主意。
  • @Johan - 当您知道自己在做什么时,您就拥有了服务器并且是服务器的唯一用户,如果规范要求,这是个好主意。

标签: java mysql triggers replication slave


【解决方案1】:

是的,这是可能的。您需要在 slave 上创建这些触发器,它们将在读取和执行 binlog 时触发。

您可以使用sys_exec UDF available from MySQL Forge (or this link) 执行外部程序。

SELECT sys_exec('/path/to/program')

请注意程序的作用,直到外部程序返回 - 查询不会完成。如果它需要做进一步处理,我建议创建某种队列系统来监听端口,这样你就可以立即exit(0),让程序完成它的工作并释放 mysql 线程,这样查询就可以完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    相关资源
    最近更新 更多