2011-08-03 110 views
0

我們的應用程序在Postgres 7.4.X上運行。我同意這是Postgres的一個非常舊的版本,我們應該已經升級了。我們面臨的問題是,Suspended Postgres數據損壞

1。由於硬件故障導致系統崩潰。

2。當系統出現時,我們試圖在數據庫中插入一些記錄。然而在這個時候,我們看到Postgres正在佔用大量的CPU內存。

約42%的CPU消耗。這是一個值得關注的問題。

3。我們對數據庫進行了重新索引,並幫助減少了CPU的內存消耗。

我的問題是

A)是不是Postgres數據庫足夠的彈性來處理硬件系統故障?或者它有時會導致表的損壞索引?我在Postgres網站上看到,硬件故障可能導致損壞的索引。除此之外,還有其他可能導致此類腐敗的情況。 B)如果Postgres已經完成了關於它處理損壞索引的方式的改進/增強功能,請給我提供關於bug ID或者一些文檔的更多信息?我們的應用程序不會做任何REINDEXING。如果我們應該認真地將其納入我們的應用程序,我將陷入困境。

回答

1

是不是Postgres數據庫有足夠的彈性來處理硬件系統 失敗?或者它有時會導致表的損壞索引? I 在Postgres站點上閱讀,硬件故障可能導致索引損壞 。

「硬件故障可能導致損壞索引」的哪部分你不明白? (微笑)我想象那些維護PostgreSQL網站的人大致知道他們在談論什麼。

硬件故障 - 尤其是磁盤子系統故障 - 可以將垃圾寫入磁盤。嚴重的故障可能會損壞磁盤表面。特別引人注目的硬件故障可以在多個城市街區之間重新分配您的磁盤片段。 (在客戶現場爆炸;他們說有些碎片落在20英里遠的地方,在這種情況下,我學會了不要過多依賴dbms彈性)。

有很多方法可以減輕硬件故障的風險。不過,他們大多與PostgreSQL沒有任何關係。冗餘硬件 - 電源,NIC,RAID磁盤系統 - 備用電池緩存(或禁用寫入緩存),服務器複製,冷熱故障切換。這些與PostgreSQL自身的彈性無關。

我不知道PostgreSQL診斷自己索引狀態的程度。如果我有時間以後,我會看看PostgreSQL source code

+0

好吧,我同意減輕硬件故障的風險,我們採取了很多步驟。 1。我有2個RAID卡PCIe SAS SmartArray P410i RAID控制器 PCIe SAS SmartArray P411 RAID控制器 – rockstar

+0

除此之外,由於硬件故障,我經常看到索引損壞。例如,我有一個客戶,他們的服務器被鎖在悶熱的壁櫥裏,沒有空調,這將導致峯值溫度下的指數腐敗。如果底層硬件是健全的,PostgreSQL非常容易崩潰。如果沒有,那就沒有什麼可以保證的。 –