Backup Documentation
Backup Controller Documentation
File: /controllers/backupController.php
Purpose: Manages database backup creation, restoration, and database switching
Last Updated: December 19, 2024
Total Functions: 5
Lines of Code: ~169
---
๐ Overview
The Backup Controller is a critical system administration component for managing database backups and multi-database environments in the ERP system. It handles:
- โข Creating complete database backups
- โข Database structure and data duplication
- โข Multi-database environment management
- โข Database switching and restoration
- โข Backup naming and organization
- โข Historical backup tracking
- โข Production/development environment switching
Primary Functions
- โ Create full database backups
- โ Duplicate database structure and data
- โ Switch between databases
- โ Backup naming and tracking
- โ Multi-environment management
- โ Historical backup listing
- โ Database restoration capabilities
Related Controllers
- โข userController.php - User management and authentication
- โข usergroupController.php - User permissions for backup operations
- โข programsettingsController.php - System configuration
- โข manualBackup.php - Manual backup operations
- โข restoreDayBackup.php - Daily backup restoration
---
๐๏ธ Database Tables
Primary Tables (Direct Operations)
| Table Name | Purpose | Key Columns |
|---|---|---|
| **newdbbackup** | Backup metadata | newdbbackupid, backupname, backupdate |
| Environment Type | Purpose | Database Pattern | |
|---|---|---|---|
| **Production** | Live system | Original database name | |
| **Backup Copies** | Historical data | `erp{backupId}` pattern | |
| **Development** | Testing environment | `storesdb{backupId}` pattern |
๐ง Key Functions
1. add() - Create New Backup
Location: Line 112
Purpose: Create a complete database backup with metadata tracking
Function Signature:
function add()
Parameters (via $_POST):
- โข
backupname- User-defined backup name/description
Process Flow:
Key Features:
- โข Automatic timestamp recording
- โข Sequential backup ID generation
- โข Complete database duplication
2. duplicateTables() - Database Replication Engine
Location: Line 128
Purpose: Create complete copy of database including structure and data
Function Signature:
function duplicateTables($sourceDB = NULL, $targetDB = NULL)
Parameters:
- โข
$sourceDB- Source database name - โข
$targetDB- Target database name (format: erp{backupId})
Process Flow:
SQL Operations Performed:
-- 1. Create backup database
CREATE DATABASE erp{backupId}
-- 2. For each table:
DROP TABLE IF EXISTS `erp{backupId}`.`tablename`
CREATE TABLE `erp{backupId}`.`tablename` LIKE `sourceDB`.`tablename`
INSERT INTO `erp{backupId}`.`tablename` SELECT * FROM `sourceDB`.`tablename`
OPTIMIZE TABLE `erp{backupId}`.`tablename`
3. loadDatabase() - List Available Backups
Location: Line 152
Purpose: Retrieve all available backup databases for selection
Returns: Array of backup metadata for display
4. changedb() - Switch Database Environment
Location: Line 160
Purpose: Switch the active database environment
Parameters (via $_POST):
- โข
backupid- Target backup ID (-2 for production, positive for backup)
Logic Flow:
5. Default Display - Backup Management Interface
Location: Line 52
Purpose: Display backup creation interface with authentication
---
๐ Business Logic Flow
Backup Creation Workflow
Database Environment Architecture
---
โ ๏ธ Common Issues
MySQL Version Compatibility
Issue: Code uses deprecated mysql_* functions
// โ ๏ธ DEPRECATED: Lines 129-147 use old MySQL extension
$link = mysql_connect(ConnectionProperty::getHost(), ConnectionProperty::getUser(), ConnectionProperty::getPassword());
Recommendation: Upgrade to MySQLi or PDO for PHP 8.2 compatibility
Memory and Performance
Issue: Large database duplication can exhaust memory/time limits
- โข Solution: Consider chunked data copying for large tables
- โข Monitor: Execution time for timeout prevention
- โข Optimize: Table-by-table processing with progress tracking
Security Considerations
Issue: Direct database creation requires elevated privileges
- โข Admin Rights: Requires CREATE DATABASE privileges
- โข Authentication: Protected by session authentication
- โข Access Control: Should be limited to system administrators
Session Management
Issue: Database switching affects all subsequent operations
// โ
IMPLEMENTED: Line 166 - Session-based database switching
$_SESSION['dbname'] = "storesdb" . $backupId;
---
๐ Dependencies
Required DAOs
- โข
NewdbbackupMySqlDAO- Backup metadata operations - โข
ConnectionProperty- Database connection parameters
Required Files
- โข
../public/impOpreation.php- Core operations - โข
../public/authentication.php- Access control - โข
../public/config.php- Configuration
System Requirements
- โข MySQL Privileges: CREATE DATABASE, SELECT, INSERT, CREATE TABLE
- โข File System: Adequate storage for database copies
- โข Memory: Sufficient RAM for data copying operations
- โข Time Limits: Extended execution time for large databases
Security Model
- โข Session-based authentication required
- โข Administrative privileges needed
- โข Protected routes with authentication checks
- โข Backup operations logged with timestamps
---
๐ Performance Notes
- โข Database Size Impact: Backup time scales with database size
- โข Table Optimization: OPTIMIZE TABLE improves backup performance
- โข Connection Management: Single connection for all operations
- โข Memory Usage: MySQL handles data copying internally
- โข Storage Requirements: Backups require 100% additional space
Backup Strategy Recommendations
1. Regular Backups: Schedule during low-usage periods
2. Retention Policy: Implement backup rotation/cleanup
3. Monitoring: Track backup completion and file sizes
4. Testing: Regular restore testing for backup validation
5. Documentation: Maintain backup/restore procedures
The Backup Controller is essential for data protection and system recovery, providing robust database management capabilities for enterprise environments.