バックアップ・監視 統合運用
// BACKUP & MONITORING — 2026-05-14 構成 / 最終更新: 2026-05-14
運用中 自動バックアップ + リアルタイム障害監視。 全通知 Telegram 連携済
2026-05-14 移行後の方針: ① WP DB は R640 daily 02:30 (14日保持) ② NC は maguro 上で daily 集約 ③ 物理障害は R640 perc-watch + maguro supermicro/mdadm/raid-watch でリアルタイム検知 ④ 証明書は両ホスト cert-watch (06:30) で 14日前警告。
自動実行スケジュール全体
| 時刻 | タスク | 対象 | 世代/間隔 | 通知 |
|---|---|---|---|---|
| 毎日 02:30 | WP DB バックアップ | R640 | 14日保持 | Telegram |
| 毎日 (cron) | NC バックアップ | maguro | 世代管理 | Telegram |
| 毎日 06:30 | 証明書監視 (cert-watch) | R640 + maguro | — | Telegram (<14日) |
| 5分間隔 | PERC 監視 (perc-watch) | R640 | リアルタイム | Telegram |
| 5分間隔 | Supermicro 監視 (supermicro-watch) | maguro | リアルタイム | Telegram |
| 5分間隔 | md0 監視 (mdadm-watch) | maguro | リアルタイム | Telegram |
| 5分間隔 | IPMI SEL 監視 (raid-watch) | maguro | リアルタイム | Telegram |
1. R640 WP DB バックアップ
// バックアップ内容
| 項目 | 内容 | 保存先 |
|---|---|---|
| katuocloud_wp DB | mysqldump --single-transaction | /mnt/data/backup/wp/katuocloud_wp/*.sql.gz |
| wp-content (任意) | uploads / themes / plugins | (別途、 週次 rsync 検討中) |
// スクリプト情報
パス: /usr/local/bin/wp-katuocloud-db-backup.sh ログ: /var/log/wp-katuocloud-db-backup.log 実行: cron daily 02:30 保持: 14日 (find -mtime +14 -delete) 通知: 失敗 + サイズ異常 (前日比 50% 以上の増減) で Telegram
// 処理フロー
1. mysqldump --single-transaction --routines --triggers katuocloud_wp \
| gzip > /mnt/data/backup/wp/katuocloud_wp/$(date +%F).sql.gz
2. サイズチェック (前日比 50% 以上の増減 → 警告)
3. 14日より古い .sql.gz を削除
4. Telegram 通知 (成功は無通知、 異常時のみ)
// 確認コマンド
# 最新確認 ls -lt /mnt/data/backup/wp/katuocloud_wp/ | head -5 # 14日分揃ってるか ls /mnt/data/backup/wp/katuocloud_wp/*.sql.gz | wc -l # ログ確認 tail -50 /var/log/wp-katuocloud-db-backup.log # 手動実行 sudo /usr/local/bin/wp-katuocloud-db-backup.sh
2. maguro Nextcloud バックアップ
// バックアップ内容
| 項目 | 内容 | 保存先 |
|---|---|---|
| NC データ | 全 Nextcloud ファイル | /srv/storage/nextcloud-data/ (本体、 LUKS+bcache+XFS) |
| MariaDB (Docker) | nextcloud + mikyun_cloud DB dump | /srv/storage/backup/nextcloud/YYYYMMDD/ |
| config.php | Nextcloud 設定 | 同上 |
| custom_apps | カスタムアプリ | 同上 |
// 処理フロー
1. メンテナンスモード ON
docker exec -u www-data nextcloud-stack-app-1 php occ maintenance:mode --on
2. MariaDB ダンプ
docker exec nextcloud-stack-db-1 \
mysqldump -u root -p*** nextcloud mikyun_cloud
3. config.php / custom_apps バックアップ
4. データは XFS スナップショット (検討中、 現状は rsync 差分)
5. メンテナンスモード OFF
6. 世代管理 (古いものを削除)
7. Telegram 通知
世代/保持期間は調整中: 2026-05-14 移行直後のため、 NC バックアップの細かい世代数は運用しながら決める。 現状は 7世代を目安。
3. 物理障害監視
// R640 perc-watch.timer (5分)
監視対象: - SAS×8 (megaraid 経由 smartctl) - NVMe×2 (smartctl 直接) - megaraid kernel ログ (driver event) スクリプト: /usr/local/bin/perc-watch.sh ログ: journalctl -u perc-watch.service 通知: SMART 警告 / Predict Failure / kernel megaraid event
// maguro supermicro-watch.timer (5分)
監視対象: - md0 (OS RAID1) - /srv/storage 90% 超過 - NFS export 状態 - ATA エラー (dmesg) - LUKS×5 アンロック状態 (raid1-4 + storage-cache) スクリプト: /usr/local/bin/supermicro-watch.sh ログ: journalctl -u supermicro-watch.service
// maguro mdadm-watch.timer (5分)
監視対象: /proc/mdstat md0 状態変化検知 通知: degraded / rebuild / failed 状態変化時
// maguro raid-watch.timer (5分) — 2026-05-14 新規
監視対象: IPMI SEL (Drive Fault / Rebuild イベント) コマンド: ipmi-sel --interpret-oem-data 通知: 新規 SEL 発生時 (kernel ログ前にドライブ障害検知可能)
新規追加 (2026-05-14): raid-watch.timer で IPMI SEL (Drive Fault / Rebuild) を OS のmd層より先に検知できるようになった。 物理ドライブが PERC / Supermicro RAID コントローラレベルで落ちる前兆を捕まえる仕組み。
4. 証明書監視
// R640 cert-watch (cron 06:30 daily)
監視対象: - katuocloud.com (+ www) - admin.wan-secure.net - cloud.k2-o.net - office.k2-o.net - office.wan-secure.net (apt certbot 管理) 通知: - 残14日切ったら警告 (毎朝) - 失効後は immediate
// maguro cert-watch (cron 06:30 daily)
監視対象: - admin.wan-secure.net - cloud.k2-o.net - office.k2-o.net - office.wan-secure.net (snap certbot 管理) 通知: 同上
過去の経緯: 旧 DuckDNS (maguro-storage.duckdns.org) は cert 期限切れ後撤去 (2026-05-14)。 cert-watch は元々この種の見落とし防止のために導入。
5. ストレージ構成
| マウント先 | 実体 | 容量 | 用途 |
|---|---|---|---|
R640 /mnt/data | HW RAID10 (6本) + LUKS auto-unlock | 3.3T | WP DB バックアップ + 一時領域 |
R640 / | HW RAID1 (2本) | 1.1T | OS |
maguro /srv/storage | LUKS (raid1-4) + bcache + storage-cache (NVMe md127) + XFS | 64TB 空き | NC データ + バックアップ |
// マウント確認
# R640 df -h /mnt/data sudo cryptsetup status data # maguro df -h /srv/storage sudo cryptsetup status raid1 sudo cryptsetup status raid2 sudo cryptsetup status raid3 sudo cryptsetup status raid4 sudo cryptsetup status storage-cache lsblk -f | head -40
6. 日次確認チェックリスト
# R640 ssh katuo@192.168.20.21 ls -lt /mnt/data/backup/wp/katuocloud_wp/ | head -3 sudo journalctl -u perc-watch.service --since "1 day ago" --no-pager | tail -10 sudo certbot certificates 2>/dev/null | grep -E "Certificate Name|Expiry" # maguro ssh maguro@192.168.70.30 sudo systemctl list-timers --all | grep -E "supermicro|mdadm|raid" cat /proc/mdstat | head -10 df -h /srv/storage sudo certbot certificates 2>/dev/null | grep -E "Certificate Name|Expiry"
7. 緊急復旧手順
// WP 完全復旧
# 1. メンテナンスモード相当 (nginx で 503 を返す等) # 2. 最新バックアップ確認 LATEST=$(ls -t /mnt/data/backup/wp/katuocloud_wp/*.sql.gz | head -1) echo "復元元: $LATEST" # 3. DB リストア zcat $LATEST | mysql -uroot -p*** katuocloud_wp # 4. wp-content (uploads / themes / plugins) は別途復旧 # (rsync ベース、 オフサイト未実装) # 5. 動作確認 curl -sI https://katuocloud.com/ | head -5
// Nextcloud 完全復旧
ssh maguro@192.168.70.30 # 1. メンテナンスモード ON sudo docker exec -u www-data nextcloud-stack-app-1 php occ maintenance:mode --on # 2. 最新バックアップ確認 LATEST=$(ls -td /srv/storage/backup/nextcloud/202* | head -1) echo "復元元: $LATEST" # 3. DB リストア sudo docker exec -i nextcloud-stack-db-1 \ mariadb -u root -p*** nextcloud < $LATEST/nextcloud_db.sql # 4. config.php sudo docker cp $LATEST/config.php nextcloud-stack-app-1:/home/xs273132/wanchance.com/public_html/config/ # 5. custom_apps sudo docker exec nextcloud-stack-app-1 rm -rf /home/xs273132/wanchance.com/public_html/custom_apps/* sudo docker cp $LATEST/custom_apps/. nextcloud-stack-app-1:/home/xs273132/wanchance.com/public_html/custom_apps/ # 6. ユーザーデータ復元 (時間がかかる) sudo rsync -avz --delete \ $LATEST/data/ \ /srv/storage/nextcloud-data/ # 7. 権限 sudo docker exec nextcloud-stack-app-1 chown -R www-data:www-data /home/xs273132/wanchance.com/public_html # 8. メンテナンスモード OFF sudo docker exec -u www-data nextcloud-stack-app-1 php occ maintenance:mode --off # 9. 動作確認 curl -sI https://cloud.k2-o.net/status.php | head -3
8. オフサイトバックアップ (検討中)
- 候補: Backblaze B2 / wasabi / S3 互換 (rclone 経由)
- 対象: WP DB 全期間 + NC DB + 重要 NC データ抜粋
- 頻度: 月次 (フル) + 日次 (DB 増分)
- 暗号化: client-side (gocryptfs / age) でアップロード前に暗号化
3-2-1 ルールの現状: ① オンサイト 2コピー (R640 HW RAID10 + maguro SW RAID/LUKS) は OK ② オフサイトはまだ未実装。 これが残作業の最大ポイント。
9. 関連ファイルパス一覧
| 種類 | パス |
|---|---|
| R640 — バックアップスクリプト | |
| WP DB | /usr/local/bin/wp-katuocloud-db-backup.sh |
| maguro — バックアップスクリプト | |
| Nextcloud | /opt/mikyun/bin/nc_backup.sh (移行検証中) |
| 監視スクリプト | |
| R640 perc-watch | /usr/local/bin/perc-watch.sh |
| maguro supermicro-watch | /usr/local/bin/supermicro-watch.sh |
| maguro mdadm-watch | /usr/local/bin/mdadm-watch.sh |
| maguro raid-watch | /usr/local/bin/raid-watch.sh |
| systemd timer | |
| R640 perc-watch | /etc/systemd/system/perc-watch.timer |
| maguro supermicro-watch | /etc/systemd/system/supermicro-watch.timer |
| maguro mdadm-watch | /etc/systemd/system/mdadm-watch.timer |
| maguro raid-watch | /etc/systemd/system/raid-watch.timer |
| バックアップ保存先 | |
| WP DB | /mnt/data/backup/wp/katuocloud_wp/ (R640) |
| NC バックアップ | /srv/storage/backup/nextcloud/ (maguro) |
重要事項: ① 物理ホストが両方とも自宅ラック設置のため、 火災・盗難への耐性が不足。 オフサイト早めに実装。 ② 監視通知 Telegram が来ない場合は即原因調査 (監視自体が落ちてる可能性) ③ ストレージ使用率 80% 超は即増設検討。
運用体制サマリ: WP DB 日次 (14日) + NC 日次 (世代管理) + 物理障害 5分監視 + 証明書 daily 監視。 全通知 Telegram 連携済み。 旧 (3月) の xs12-watch / nvme-watch は perc-watch / supermicro-watch に統合されシンプル化。