我有一個34Gb數據庫(在服務器A上),並且我想在創建數據庫本身的副本後刪除部分文檔以提高性能。 按照這些步驟:使用Lotus Domino副本拆分大型數據庫
- 創建數據庫的本地副本
- 刪除了一些文件,從原始數據庫
我想一定要刪除的文件恢復到原始數據庫中,如果需要的話,使用複製數據庫。 所以我嘗試使用將從本地副本數據庫或從副本數據庫。
什麼都沒有發生,添加了0個文檔,我無法「重新導入」文檔。
怎麼了?
我有一個34Gb數據庫(在服務器A上),並且我想在創建數據庫本身的副本後刪除部分文檔以提高性能。 按照這些步驟:使用Lotus Domino副本拆分大型數據庫
我想一定要刪除的文件恢復到原始數據庫中,如果需要的話,使用複製數據庫。 所以我嘗試使用將從本地副本數據庫或從副本數據庫。
什麼都沒有發生,添加了0個文檔,我無法「重新導入」文檔。
怎麼了?
我會非常小心地使用副本作爲這樣的檔案。我可以看到有人複製了錯誤的方式,這會導致一些問題...... 我爲這裏的幾個大型數據庫設計了一些存檔解決方案。我只是有一個單獨的數據庫(相同的設計)指定爲檔案。然後,我有一個手動觸發或預定的代理(在不同的數據庫中有不同),用於識別要歸檔的文檔並將它們從生產數據庫移至歸檔。然後我有功能將文檔移回到需要的生產中。
他們不應該回來!複製是雙向的,對文檔的最近更改會覆蓋舊版本,但刪除總是會獲勝。
呃...幾乎總是。
當文檔在一個副本中被刪除時,「刪除存根」被留在原位。只要存根存在於副本中,另一個副本中的該文檔的版本就不會複製回來。存根阻止它。這就是刪除成功的原因。
但是在稱爲'吹掃間隔'的一段時間後,存根被清除。默認清除時間間隔爲30天。從副本中清除存根後,刪除無法再贏,因爲沒有什麼可以阻止舊版本從其他副本進行復制。事情是,通常這是一件壞事。通常當文件被刪除時,你希望他們保持刪除。你不希望他們重新出現,只是因爲有人在31天后離線複製了一個副本。
現在,有一些方法,你可以仔細試圖控制這個過程,清洗存根和使用其他的東西(例如,選擇性複製設置)來防止來自刪除回來當你希望他們除外。有許多方法可以嘗試,但是有一種方法可以在一個副本中滑動一個設置,並且boom!壞事發生。這包括任何副本,包括那些你沒有仔細控制的副本。這是一個壞主意。我完全贊同@卡爾亨利這一點。
此外,選擇性複製是邪惡的,應該不惜一切代價避免。無論如何,這只是我的看法,但在我得出這個結論之前,我留下了很多傷痕。
以下是關於副本存根和清除間隔的兩項Lotus技術說明:Purging documents in Lotus Notes,How to purge document deletion stubs immediately。請明智地使用您從這些技術手冊中學到的知識。我強烈建議您不要使用這些知識嘗試構建基於複製的備份/恢復方案!
我第二個邪惡就是選擇性複製 –
謝謝,但ID文件呢?使用您的存檔方法,您是否保留相同的ID?我需要它,因爲複製方法授予 –
您是否指Notes文檔ID?它不會被保留下來,但你不應該編寫依賴於它的代碼。它甚至可以在原始數據庫中更改,例如,如果您遇到複製衝突。所以在一個寫得很好的應用程序中,這應該不成問題。 我並不建議您在將文檔複製到新數據庫時修改文檔的UniqueID,即使您可以這樣做。試圖將文檔複製回生產數據庫的那一天,壞事情就會發生。如果刪除存根仍然存在,則新文檔將會* poof *(一次刪除)。 –
你是對的,但我的應用程序在13年前開始,並且通常文檔使用@documentUniqueID(不取決於我:-))相互關聯。所以,如果我改變了這一點,我就放棄了所有的參考。這就是爲什麼我在考慮複製品 –