66 lines
2.7 KiB
MySQL
66 lines
2.7 KiB
MySQL
|
|
-- Backup System Schema
|
||
|
|
-- Creates tables for managing database backups
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS admin_panel.backups (
|
||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
filename VARCHAR(255) NOT NULL,
|
||
|
|
file_path VARCHAR(512) NOT NULL,
|
||
|
|
file_size BIGINT NOT NULL DEFAULT 0,
|
||
|
|
backup_type ENUM('manual', 'scheduled') NOT NULL DEFAULT 'manual',
|
||
|
|
status ENUM('pending', 'in_progress', 'completed', 'failed') NOT NULL DEFAULT 'pending',
|
||
|
|
databases TEXT, -- JSON array of backed up databases
|
||
|
|
compressed BOOLEAN DEFAULT TRUE,
|
||
|
|
encrypted BOOLEAN DEFAULT FALSE,
|
||
|
|
encryption_key VARCHAR(255),
|
||
|
|
checksum VARCHAR(64), -- SHA-256 checksum for integrity
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
created_by VARCHAR(100) DEFAULT 'admin',
|
||
|
|
expires_at TIMESTAMP NULL,
|
||
|
|
error_message TEXT,
|
||
|
|
metadata JSON, -- Additional backup metadata
|
||
|
|
INDEX idx_created_at (created_at),
|
||
|
|
INDEX idx_status (status),
|
||
|
|
INDEX idx_backup_type (backup_type)
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
|
|
|
||
|
|
-- Backup schedules table
|
||
|
|
CREATE TABLE IF NOT EXISTS admin_panel.backup_schedules (
|
||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
name VARCHAR(100) NOT NULL,
|
||
|
|
schedule_type ENUM('daily', 'weekly', 'monthly') NOT NULL,
|
||
|
|
schedule_time TIME NOT NULL,
|
||
|
|
schedule_day INT, -- Day of week (0-6) for weekly, day of month (1-31) for monthly
|
||
|
|
databases TEXT, -- JSON array of databases to backup
|
||
|
|
retention_count INT DEFAULT 7, -- Keep last N backups
|
||
|
|
enabled BOOLEAN DEFAULT TRUE,
|
||
|
|
compressed BOOLEAN DEFAULT TRUE,
|
||
|
|
encrypted BOOLEAN DEFAULT FALSE,
|
||
|
|
last_run_at TIMESTAMP NULL,
|
||
|
|
next_run_at TIMESTAMP NULL,
|
||
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
|
|
metadata JSON,
|
||
|
|
INDEX idx_enabled (enabled),
|
||
|
|
INDEX idx_next_run (next_run_at)
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
|
|
|
||
|
|
-- Backup settings table
|
||
|
|
CREATE TABLE IF NOT EXISTS admin_panel.backup_settings (
|
||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||
|
|
setting_key VARCHAR(100) NOT NULL UNIQUE,
|
||
|
|
setting_value TEXT,
|
||
|
|
description TEXT,
|
||
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
|
|
|
||
|
|
-- Insert default settings
|
||
|
|
INSERT INTO admin_panel.backup_settings (setting_key, setting_value, description) VALUES
|
||
|
|
('backup_path', '/app/backups', 'Directory where backups are stored'),
|
||
|
|
('max_retention_days', '30', 'Maximum days to keep backups'),
|
||
|
|
('compression_enabled', 'true', 'Enable gzip compression for backups'),
|
||
|
|
('encryption_enabled', 'false', 'Enable encryption for backups'),
|
||
|
|
('cloud_storage_enabled', 'false', 'Enable cloud storage upload'),
|
||
|
|
('cloud_storage_provider', 's3', 'Cloud storage provider (s3, gcs, azure)'),
|
||
|
|
('cloud_storage_bucket', '', 'Cloud storage bucket name')
|
||
|
|
ON DUPLICATE KEY UPDATE setting_value = setting_value;
|