Mysql 到 Oracle 的通信
我有一個在 Centos(亞馬遜實例)上執行 php 和 mysql 的網站。新推出的 ERP(與現有系統集成)使用 Oracle 作為 db(位於單獨的 Windows Server 上)。來自網站的訂單被插入到 Master Mysql 數據庫中,並被複製到 Slave Mysql 數據庫中。這些訂單需要推送到 Oracle Db。我已經找到了 4 種方法來做到這一點。
- 使用 mysql UDF 進行 http 通信,這會將從屬設備上的插入觸發器上的行發送到 Oracle 伺服器上的 Oracle Web 服務
- 使用 cron 作業(間隔可能為 5 分鐘)和 PHP 腳本,該腳本將從 mysql 獲取新訂單並通過 Oracle 託管伺服器上的 Oracle 服務/Php 服務發送到 Oracle 數據庫。
- 使用 sys_exec() udf 呼叫插入 Oracle db 的 php 腳本
- 將 memcached 與 MySql 一起使用,讓 Php 輪詢 memcached 以檢索數據並將其發送到 Oracle 伺服器,但不確定我們是否可以將現有 Mysql 版本遷移到新版本 Mysql 5.6
我已經準備好 UDF 並對其進行了測試,它們很好用。但在將 UDF 與觸發器一起使用的情況下,數據完整性和可靠性仍處於兩難境地。
有沒有更好的方法來做到這一點。否則我應該遵循哪種方法來做同樣的事情。
我知道 UDF 的安全威脅,您不能將其限制為任何使用者
還有一件事我不允許對現有網站的 php 程式碼進行新的更改以進行操作。
嘗試使用異構連接將 Oracle 數據庫連結到 mySQL 數據庫。直接從 Oracle 查詢您想要的內容會更容易,而不是嘗試將數據複製到 Oracle。我嘗試在 Redhat 5.6 上執行此操作,但我遇到了為 Redhat 5.6 編寫的 ODBC 驅動程序的問題。後來我用 Redhat 6.3 試了一下,效果好多了。該問題涉及 ODBC 驅動程序如何讀取 unicode 字元。它很容易設置,您可以將 HAS 安裝為不同的 Oracle 主目錄,或使用相同的 Oracle 主目錄。Linux 有一個內置的 ODBC 測試程序,可以幫助您使其正常工作。
http://docs.oracle.com/cd/B28359_01/server.111/b28277/toc.htm
有許多商業工具允許 MySQL 到 Oracle 的複制(Continuent,Oracle GoldenGate)。我沒有使用任何具體的,所以我不能提供具體的建議。
如果您要編寫自己的解決方案,我認為最好的方法是觀看二進制日誌流。我的部落格上有一個如何做到這一點的例子。