Promed MRS: Database Backup & Restore Documentation
Overview
This document provides comprehensive technical documentation for the Promed HIS database backup and restore system, including remote access procedures and security considerations.
Quick Commands
Manual Operations
# Manual backup (creates compressed .sql.gz file)
./backend/database/backup.sh
# Restore from backup
./backend/database/restore.sh <backup_file.sql.gz>
# Manual cleanup of old backups
./backend/database/cleanup.sh
Automated Setup
# Setup daily automated backups (runs at 2:00 AM, 7-day retention)
./backend/database/setup_daily_backup.sh
Backup Features
Compression
- Format: All backups are compressed using gzip (.sql.gz)
- Space Savings: ~80% compression ratio
- Original Size: ~10MB uncompressed
- Compressed Size: ~2-3MB compressed
Automation
- Schedule: Daily backups at 2:00 AM via cron
- Retention Policy: 7-day sliding window cleanup
- Logging: Comprehensive logging to
backend/database/backup_cron.log - Error Handling: Automatic error detection and logging
File Naming Convention
- Format:
promedmrs_backup_YYYYMMDD_HHMMSS.sql.gz - Example:
promedmrs_backup_20251026_203311.sql.gz - Timestamp: Date and time of backup creation
Remote Access via SFTP
FileZilla Connection Setup
Basic Configuration
- Protocol: SFTP – SSH File Transfer Protocol
- Host: Your server IP address
- Port: 22 (standard SSH port)
- Logon Type: Normal
- Username: Your server username
- Password: Your server password
Advanced Configuration
- Site Manager: Create saved connection profiles
- Default Remote Directory:
/path/to/promedmrs/backend/database/backups/ - Bookmarks: Quick access to backup directory
- Transfer Mode: Binary (for compressed files)

Directory Structure
backend/database/
├── backup.sh # Manual backup script
├── restore.sh # Restore script
├── daily_backup.sh # Automated daily backup
├── setup_daily_backup.sh # Setup script
├── cleanup.sh # Cleanup script
├── backup_cron.log # Backup logs
└── backups/ # Backup files directory
└── promedmrs_backup_*.sql.gz # Backup files
Security Considerations
Authentication
- SSH Keys: Recommended for production environments
- Password Authentication: Acceptable for development/testing
- Two-Factor Authentication: Consider for enhanced security
Encryption
- SFTP: Provides encrypted file transfer
- SSH Tunnel: All data encrypted in transit
- No Additional Encryption: Files stored in compressed format
Access Control
- File Permissions: Ensure proper read/write permissions
- User Privileges: Limit access to authorized personnel
- Firewall Rules: No additional ports required (uses port 22)
Backup Process Details
Manual Backup
- Execution:
./backend/database/backup.sh - Process:
- Connects to MariaDB container
- Creates mysqldump with full database
- Compresses output using gzip
- Saves as timestamped file
- Output: Compressed backup file in database directory
Automated Daily Backup
- Schedule: Cron job at 2:00 AM daily
- Process:
- Creates compressed backup
- Logs backup status
- Cleans up old backups (>7 days)
- Reports disk usage
- Monitoring: Check
backup_cron.logfor status
Restore Process
- Prerequisites: Valid backup file (.sql.gz or .sql)
- Process:
- Stops promedmrs backend
- Detects file type (compressed/uncompressed)
- Decompresses if needed
- Restores to database
- Restarts promedmrs backend
- Validation: Automatic error checking and reporting
Troubleshooting
Common Issues
- Permission Denied: Check file permissions and user access
- Connection Failed: Verify SSH/SFTP configuration
- Backup Failed: Check database container status
- Restore Failed: Verify backup file integrity
Log Analysis
- Location:
backend/database/backup_cron.log - Format: Timestamped entries with status messages
- Monitoring: Regular log review recommended
- Alerts: Set up monitoring for backup failures
Best Practices
Backup Management
- Regular Testing: Test restore procedures periodically
- Offsite Storage: Consider remote backup storage
- Retention Policy: Adjust retention based on requirements
- Monitoring: Implement backup success monitoring
Security
- Access Control: Limit backup access to authorized users
- Encryption: Use encrypted connections for transfers
- Audit Trail: Maintain logs of backup/restore operations
- Regular Updates: Keep backup scripts updated
Maintenance
Regular Tasks
- Log Rotation: Manage log file sizes
- Disk Space: Monitor backup directory usage
- Script Updates: Keep backup scripts current
- Testing: Regular restore testing
Monitoring
- Backup Success: Daily verification
- Disk Usage: Monitor storage consumption
- Error Rates: Track backup failure rates
- Performance: Monitor backup duration







