2012-05-31 35 views
0

我有一個用於將數據寫入MySQL數據庫的Perl腳本,運行良好。問題我有,如果有一個正確的方法記錄準備查詢本地文件如果連接到MySQL數據庫超時或失敗?如果連接失敗或超時,Perl-DBI obj是否允許準備MySQL語句?如果MySQL數據庫連接失敗,將SQL查詢記錄到文件

謝謝!

Brad

回答

1

DBI或MySQL客戶端內置的東西沒有。很難以通用方式正確工作,因爲許多邊緣/異常情況確實是特定於應用程序的。

這種事情也很容易出錯,因爲只有當事情已經很糟糕時,你纔會做相對複雜的事情。如果MySQL不可用是常見情況,或者在出現錯誤時停止/超時/重試太重要,請查看您是否可以將數據寫入另一個流(始終),以更好地處理錯誤。例如,你可以把它推到本地服務器上的抄寫器上,讓另一個程序從抄寫器讀取數據並插入/更新MySQL。抄寫員負責本地緩衝到磁盤等。

當然,這在不同的錯誤情況下有不同的權衡。

+0

優秀的迴應。謝謝!這種情況的主要原因是因爲MySQL服務器是遠程的(通過VPN)。我還沒有遇到任何連接到寫數據庫的問題,只是想要一個計劃,如果它發生。我將它寫入該MySQL服務器,並從本地副本從服務器讀取數據。我使用鎢來進行復制。我知道鎢應該支持同步幾個不同的數據庫平臺。我將不得不檢查它是否同步抄寫員。 – Brad

+0

你會使用抄寫員的方式(或者像ActiveMQ這樣的專用/適當的排隊/消息工具或任何人使用的方式)將本地寫入隊列,然後從隊列讀取單獨的進程並插入/更新數據庫。每次寫入都會得到一些額外的延遲,但是您的Web應用程序可以快速「完成」,並且在網絡中斷的情況下它將最終運行。 –

+0

(也不知道爲什麼你的問題是downvoted。) –