これは、Proxmox上でDBを運用していて完全にやらかした実体験です。
「レプリケーションしているから大丈夫」
そう思い込んでいた当時の自分への戒めとして書きます。
同じような構成を取っている人には、一度でいいので読んでほしいです。
当時の構成
まず、当時の構成です。
- 仮想化基盤:Proxmox
- DB構成:2台構成(レプリケーションあり)
- 用途:業務・検証用DB
- ストレージ:ローカルHDD
構成だけを見ると、「まあ大丈夫そう」 に見えます。
レプリケーションしている「つもり」だった
当時の認識はこうでした。
- DBは2台でレプリケーションしている
- 片方が死んでも、もう片方が残る
- だからバックアップは十分
ここが最大の勘違いでした。
事故の発生:HDD故障
ある日、突然トラブルが発生しました。
- Proxmoxホストが起動しない
- エラーを吐いて停止
調査すると、1台のHDDが物理的に故障していました。
最悪だった事実
さらに調べて分かったのが、次の事実です。
- レプリケーション元・先のDB
- すべて同じ物理HDD上に存在
- ストレージレベルで冗長性ゼロ
つまり、レプリケーションしていたのは「論理的」な話だけでした。
復旧を試みるも絶望
故障したHDDを取り外し、状態を確認しました。
直接接続してみた結果
- HDDを接続したまま → Proxmoxが起動しない
- USB接続 → 容量 0 として認識
- パーティション情報すら読めない
この時点で、「これはもう無理だな」 と悟りました。
結果:復元不能
- DBデータ:全消失
- バックアップ:存在しない
- 復元:不可能
この事故で、レプリケーション=バックアップではないという事実を、身をもって理解しました。
なぜこうなったのか(反省点)
原因を整理すると、完全に設計ミスです。
- バックアップとレプリケーションを混同していた
- 物理ストレージを分けていなかった
- 障害テストを一度もしていなかった
- 「まあ大丈夫だろう」という慢心
技術というより、
考え方の問題でした。
今後の改善点
この事故以降、構成を大きく見直しました。
1. バックアップを「別DB」に保存
- 本番DBとは別のDBサーバーへ保存
- 同一ホスト・同一HDDは禁止
2. バックアップログを必ず残す
- 取得結果をログに出力
- 失敗時にすぐ気づけるように
3. 定期的な復元テスト
- 「取っているつもり」を排除
- 実際に戻せるかを確認
学んだ教訓
- レプリケーションは 可用性対策
- バックアップは 復旧対策
- 役割はまったく別物
同時に壊れる構成は、冗長ではありません。
まとめ
- Proxmox上でDBをレプリケーションしていた
- しかし物理HDDは1本だった
- HDD故障で全DB消失
- 復旧不能
- 現在は別DB+ログ付きバックアップ構成に改善
この記事が、誰かの「同じやらかし」を防ぐきっかけになれば幸いです。