Sonatype Nexus Repositoryで誤ってデータを削除してしまった際の復元方法。なお、本手順で復元できるのはWebUI等からの削除(論理削除, Soft-Delete)の場合のみ。
※バージョンにより復旧手順が異なる場合があります。本作業によるデータロストの責任は負いかねますのでご了承ください。別環境での事前検証など十分な確認をお願いします。
バージョン情報
Sonatype Nexus Repository: OSS 3.41.0-01
サマリー
後述の補足も参考に操作・変更内容を把握した上で実行ください。 default
は設定次第で異なることがあります。
- 論理削除フラグ解除
sed -i -E "/^deleted.*$/d" <DATA_DIR>/blobs/default/content/*/*/*.properties
- データベース復元
Task:Repair: Reconcile component database from blobstore
- 削除対象indexリスト削除
rm <DATA_DIR>/blobs/default/<id>-deletions.index
- 削除対象indexリビルド設定
echo "rebuildDeletedBlobIndex=true" >> <DATA_DIR>/blobs/default/metadata.properties
- 再起動
参考
https://support.sonatype.com/hc/en-us/articles/360025325653-How-to-rebuild-the-Admin-Compact-blobstore-deletions-index-file-if-soft-deleted-blobs-are-orphanedsupport.sonatype.com
補足
はじめに
復元に失敗した場合を考慮して、<DATA_DIR>一式をコピー・退避しておくと安全。
論理削除フラグ解除
各リソースは <id>.properties
, <id>.bytes
で構成されている。
論理削除状態のリソースはpropertiesファイルに deleted=true
, deletedDateTime=...
, deletedReason=...
がセットされる。
これらを削除する。
データベース復元
削除操作時点でデータベースが更新され対象リソースは表示されずアクセスできなくなる。
Repair: Reconcile component database from blobstore
タスクにより、リソース(blob)の現状を元にデータベースの内容が更新される。
削除対象indexリスト削除
論理削除されているリソースは Admin - Compact Blobstore
タスクにより物理削除される。
論理削除時 <id>-deletions.index
に対象リソースが追加され、これは上記の操作では取り消されない。
そのため、ファイルを削除することで削除対象を空にする。
削除対象indexリビルド設定
rebuildDeletedBlobIndex=true
を設定することにより、各リソースのdeletedフラグから <id>-deletions.index
が再生成される。deletedフラグは解除済みのため、基本的に空のファイルが生成される。
再リストア
リストアをやり直す場合は blobs
, db
, keystore
ディレクトリを置き換えて再起動することにより作業前の状態に戻る。