2011-10-21 18 views
1

我們的客戶正在運行帶有多個從站的單主站(在集羣中)。將觸發器在單主多從複製中的MySQL從站中運行

現在,他希望我們在從站上添加,更新或刪除新記錄時,只需編寫一些在從站上運行的觸發器(僅限於)。這個觸發器應該運行一個外部的java程序。

這可能嗎?推薦的 ?

我們如何從觸發器運行java程序?是否推薦/安全?

任何需要照顧的問題?

+0

MySQL不支持將Java作爲觸發器的一部分或在服務器內部運行。 –

+0

我們希望觸發器在運行MYSQL從服務器的服務器上運行外部程序。我們不希望在MYSQL服務器中運行程序。 – anjanb

+0

從數據庫服務器中調用外部程序是一個安全漏洞,並不是一個好主意。 – Johan

回答

1

是的,這是可能的。您需要在從屬設備上創建這些觸發器,當binlog被讀取並執行時,它們將被觸發。

您可以使用sys_exec UDF available from MySQL Forgeor this link)執行外部程序。

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

只是提防的計劃做什麼,直到外部程序返回 - 查詢將無法完成。如果是進一步處理的東西,我建議在端口上創建某種排隊系統,這樣你就可以馬上執行exit(0),讓程序完成它的工作並釋放mysql線程,以便查詢完成。