2010-10-27 43 views
4

我們有一個相當大的SVN信息庫(50 GB,超過100000個修訂版)。使用它非常慢,我的猜測是,這是db/revs和db/revprops中的平面目錄結構(其中每個修訂是一個文件)。Reshard現有的大型SVN信息庫

我們在SVN 1.5上使用FSFS格式(在Linux服務器上),但回購是使用較舊的SVN版本創建的。現在我讀了SVN 1.5支持「分片」,並且我明白這個特性將修訂版分發到多個目錄中,因此單個目錄不包含那麼多文件。這聽起來很有用,但不幸的是,它看起來像這個特性只能用於剛剛用SVN 1.5創建的存儲庫。

如何將大型現有線性回購轉換爲分段回購?手冊中提到了「fsfs-reshard.py」這個工具,但是這個腳本寫着「這個腳本還沒有完成,還沒準備好用於實時數據,請相信我們。」所以我絕對不想使用它。有其他選擇嗎?

+0

儘管更改爲新的存儲庫格式可能會有所幫助,可疑的是它會解決性能問題。一旦你嘗試過它,我會有興趣知道它是否有用。 – 2010-10-27 15:41:09

+0

我認爲我們已經使用了最新的格式(或者至少1.5版本的最新版本(我們現在還沒有使用1.6版本))。如果我沒有記錯的話,我們已經做了一次「svnadmin升級」以具備新的合併功能。所以這可能是svnadmin升級立即退出而不更改任何內容的原因。看起來像「升級」不升級目錄結構。我會嘗試一下,如果一個完整的轉儲/負載幫助。 – kayahr 2010-10-27 16:30:19

回答

2

最好的方法就像前面提到的dump/load cylcle一樣。但你可以試試upgrade

svnadmin upgrade 

製作副本首先嚐試升級並測試....(不要錯過做備份)。

+0

升級步驟非常快,值得一做。對於這種大小的存儲庫來說,轉儲/加載週期可能會佔用週末的最佳部分,這可能是不切實際的。 – 2010-10-27 15:55:50

+0

升級什麼都不做。立即退出並表示已完成,但回購仍處於線性格式。如果轉儲/加載有幫助,我會嘗試。可能需要幾個小時。 – kayahr 2010-10-27 16:24:06

+0

轉儲/裝載是訣竅。謝謝。 – kayahr 2010-10-28 07:43:34

6

請問svnadmin dumpsvnadmin load有訣竅嗎? http://subversion.apache.org/faq.html#dumpload

+0

這工作得很好!對於8000個變更集,花費了大約10分鐘,所以不是很長的時間。 – 2011-02-19 11:11:31

+1

你很幸運。最後一次我在我們的服務器上試了一次,整個週末花了60000轉!很高興它的工作。 – 2011-02-21 09:00:05

0

由於傾倒/恢復過程需要大量的磁盤空間和處理時間,我已經出版(2010年)的fsfs-reshard.py的改進版本,其包括用於顛覆1.6 FSFS格式5的支持: https://github.com/ymartin59/svn-fsfs-reshard

它支持之間開關線性到分片佈局,在需要時拆包碎片。由於分片統計計算,您可能會預計打包的修訂版本大小選擇適當的分片大小。

當然它必須是used with care:在可能的話

  • 一次倉庫複製

    • 第一測試過程準備好要恢復的備份
    • 處理時,爲防止進入倉庫
    • 運行svnadmin verify之前把它住