お仕事中svnが動かないという知らせをクライアントさんから受けたところ
error.logに以下のようなメッセージが、、(mod_dav_svn経由でSVNを扱ってます)
Could not open the requested SVN filesystem.
まずは定石通りsvnadmin recoverを試すがなぜかsegmentation faultエラー、、
この間のSVNの脆弱性以降のアップグレードでリポジトリのバージョンが置き去りになってしまった??
そもそも大昔のリポジトリでいまだによく壊れるbdbを使用している事自体不安要素です。
そこで本気を出して直す事にしました。
まずは、、(バックアップをしてからね!!)
- 古いsvnadminが入ってるサーバーから実行バイナリコピーしてsvnadmin recover
ダメでした、、svnadminのライブラリを全てコピーしないと動作しません。
ここでちょっと焦ってきます。とりあえずdbdを修復するのが先決か、、
- db_recover -c -v -h
こでもダメ。本気(マジ)で焦ってくるので本気(マジ)の本気(マジ)を出します。
- リポジトリ計20G相当を古いsubversionの入っているサーバーにrsyncしてコピー
- コピー先でsvnadmin recover
- コピー先でsvnadmin dump repo > repo.dumpでダンプ
- コピー先でscp *.dump 元サーバー:で元サーバーへコピー
- 元サーバーでmv repo repo.old; svnadmin create repoでfsfs形式で新規作成
- 元サーバーでsvnadmin load < repo.dumpでリストア
無事復活しました!!(hookスクリプトのコピー、パーミッション変更等忘れずに!)
数年間の蓄積データーが
「も、、もしかして復活できないかも!?;」って焦る感じは何度経験しても嫌な感じです。
バックアップは計画的にとっておきましょう。
参考にさせて頂いたサイト