1
我們的客戶正在運行帶有多個從站的單主站(在集羣中)。將觸發器在單主多從複製中的MySQL從站中運行
現在,他希望我們在從站上添加,更新或刪除新記錄時,只需編寫一些在從站上運行的觸發器(僅限於)。這個觸發器應該運行一個外部的java程序。
這可能嗎?推薦的 ?
我們如何從觸發器運行java程序?是否推薦/安全?
任何需要照顧的問題?
我們的客戶正在運行帶有多個從站的單主站(在集羣中)。將觸發器在單主多從複製中的MySQL從站中運行
現在,他希望我們在從站上添加,更新或刪除新記錄時,只需編寫一些在從站上運行的觸發器(僅限於)。這個觸發器應該運行一個外部的java程序。
這可能嗎?推薦的 ?
我們如何從觸發器運行java程序?是否推薦/安全?
任何需要照顧的問題?
是的,這是可能的。您需要在從屬設備上創建這些觸發器,當binlog被讀取並執行時,它們將被觸發。
您可以使用sys_exec UDF available from MySQL Forge(or this link)執行外部程序。
SELECT sys_exec('/path/to/program')
只是提防的計劃做什麼,直到外部程序返回 - 查詢將無法完成。如果是進一步處理的東西,我建議在端口上創建某種排隊系統,這樣你就可以馬上執行exit(0)
,讓程序完成它的工作並釋放mysql線程,以便查詢完成。
MySQL不支持將Java作爲觸發器的一部分或在服務器內部運行。 –
我們希望觸發器在運行MYSQL從服務器的服務器上運行外部程序。我們不希望在MYSQL服務器中運行程序。 – anjanb
從數據庫服務器中調用外部程序是一個安全漏洞,並不是一個好主意。 – Johan