バックアップ・監視 統合運用

// 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:30WP DB バックアップR64014日保持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 DBmysqldump --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.phpNextcloud 設定同上
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/dataHW RAID10 (6本) + LUKS auto-unlock3.3TWP DB バックアップ + 一時領域
R640 /HW RAID1 (2本)1.1TOS
maguro /srv/storageLUKS (raid1-4) + bcache + storage-cache (NVMe md127) + XFS64TB 空き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 に統合されシンプル化。