Files
shell/plex/CORRUPTION-RESOLUTION-SUMMARY.md
Peter Wood 9b83924597 Add advanced Plex database recovery and restoration scripts
- Introduced `recover-plex-database.sh` for comprehensive database recovery with multiple strategies, logging, and rollback capabilities.
- Added `restore-plex.sh` for safe restoration of Plex backups, including validation and dry-run options.
- Created `plex-db-manager.sh` to consolidate database management functionalities, including integrity checks and service management.
- Enhanced logging and error handling across all scripts for better user feedback and troubleshooting.
- Implemented safety measures to prevent running scripts as root and ensure proper service management during operations.
2025-06-21 07:23:33 -04:00

4.1 KiB

Plex Database Corruption Resolution Summary

ISSUE RESOLVED: Auto-Repair Cycle Causing Corruption

Root Cause Identified

The primary cause of your Plex database corruption was an aggressive auto-repair schedule running every 30 minutes via cron:

# PROBLEMATIC (FIXED):
*/30 * * * * /home/acedanger/shell/plex/backup-plex.sh --check-integrity --auto-repair

This caused:

  • 48+ service stops/starts per day
  • WAL file manipulation conflicts
  • Repair cascading failures
  • Race conditions during service transitions

Changes Applied

1. Fixed Crontab Schedule

  • Before: Auto-repair every 30 minutes + daily backup with auto-repair
  • After:
    • Daily read-only integrity check (6 AM)
    • Daily backup with auto-repair disabled (4:15 AM)
    • Manual repair intervention required

2. Disabled Auto-Repair Default

  • Changed backup-plex.sh default from AUTO_REPAIR=true to AUTO_REPAIR=false
  • Prevents automatic repair loops that were causing corruption

3. Created Consolidated Management Tool

  • New script: plex-db-manager.sh
  • Safe, read-only integrity checking
  • Manual repair intervention (currently disabled for safety)
  • Proper service management with synchronization

4. Database Status

Current check shows: ALL DATABASES HEALTHY

  • Main database: integrity check PASSED
  • Blobs database: integrity check PASSED

📋 Script Redundancy Analysis

Scripts with Overlapping Functionality

  1. plex.sh - Service management + basic repair
  2. backup-plex.sh - Backup + auto-repair logic
  3. plex-database-repair.sh - Dedicated repair functions
  4. recover-plex-database.sh - Advanced recovery methods
  5. nuclear-plex-recovery.sh - Nuclear recovery
  6. restore-plex.sh - Backup restoration

Consolidation Recommendations

Keep Active:

  • backup-plex.sh - Primary backup (with auto-repair disabled)
  • plex-db-manager.sh - New consolidated management tool
  • plex.sh - Basic service management
  • nuclear-plex-recovery.sh - Last resort recovery

Consider Deprecating:

  • plex-database-repair.sh - Functionality moved to plex-db-manager.sh
  • recover-plex-database.sh - Similar functionality in other scripts
  • restore-plex.sh - Basic functionality covered elsewhere

🛡️ Prevention Measures Implemented

1. Conservative Backup Schedule

# Read-only check (daily at 6 AM)
0 6 * * * backup-plex.sh --check-integrity --disable-auto-repair

# Backup without auto-repair (daily at 4:15 AM)  
15 4 * * * backup-plex.sh --non-interactive --disable-auto-repair

2. Manual Intervention Required

  • No automatic repairs unless explicitly requested
  • All repair operations require manual approval
  • Comprehensive logging for audit trail

3. Safe Service Management

  • Proper service stop/start synchronization
  • Extended timeouts for clean shutdowns
  • Race condition prevention

📊 Expected Improvements

  1. Stability: Eliminated 47 daily service interruptions
  2. Reliability: No more auto-repair corruption loops
  3. Performance: Reduced I/O load on database files
  4. Maintainability: Centralized database management

🔧 Usage Going Forward

Regular Monitoring:

# Check database health (safe, read-only)
./plex-db-manager.sh check

If Issues Detected:

# View detailed logs
tail -f /home/acedanger/shell/plex/logs/plex-backup-$(date +%Y-%m-%d).log

# Manual repair (when re-enabled)
./plex-db-manager.sh repair

Emergency Recovery:

# Only if all else fails
sudo ./nuclear-plex-recovery.sh --auto

⚠️ Critical Notes

  1. Auto-repair is temporarily disabled until stability is confirmed
  2. Manual intervention required for any database issues
  3. Monitor logs closely for the next week to ensure stability
  4. Backup integrity should improve significantly

Date Fixed: June 21, 2025
Issue: 30-minute auto-repair cycle causing database corruption
Resolution: Disabled aggressive auto-repair, implemented safe backup schedule
Status: RESOLVED - Databases currently healthy