我们的客户正在运行具有多个从属服务器的单一主服务器(在群集中)。
现在,他希望我们在奴隶上添加,更新或删除新记录时,编写一些在奴隶上运行的触发器(仅限)。该触发器应该运行外部java程序。
这可能吗?推荐?
我们如何从触发器运行java程序?推荐/安全吗?
任何需要照顾的陷阱?
答案 0 :(得分:1)
是的,这是可能的。您需要在从站上创建这些触发器,它们将在读取和执行binlog时触发。
您可以使用sys_exec UDF available from MySQL Forge(or this link)执行外部程序。
SELECT sys_exec('/path/to/program')
只要注意程序的功能,在外部程序返回之前 - 查询将无法完成。如果它是进行进一步处理的东西,我建议创建一种在端口上侦听的排队系统,这样你就可以立即exit(0)
,让程序执行它的东西并释放mysql线程,以便查询完成。