Initial commit
This commit is contained in:
commit
77d35ff965
51 changed files with 5591 additions and 0 deletions
73
Scripts/backup-logs.sql
Normal file
73
Scripts/backup-logs.sql
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
-- Backup Logs Database Schema
|
||||
-- PostgreSQL schema for tracking backup operations
|
||||
|
||||
CREATE TABLE backup_logs (
|
||||
id SERIAL PRIMARY KEY,
|
||||
|
||||
-- Timing
|
||||
started_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
completed_at TIMESTAMP,
|
||||
duration_ms INTEGER,
|
||||
|
||||
-- Identifikation
|
||||
backup_type VARCHAR(50) NOT NULL, -- 'forgejo_repos', 'postgres_db', etc.
|
||||
source_name VARCHAR(255) NOT NULL, -- repo navn eller db navn
|
||||
source_path VARCHAR(500), -- /var/lib/forgejo/repositories/user/repo.git
|
||||
|
||||
-- Destination
|
||||
destination VARCHAR(50) NOT NULL, -- 'azure_blob', 's3', 'local', 'sftp'
|
||||
remote_path VARCHAR(500), -- https://storage.blob.core.windows.net/backups/forgejo/2024-01-31/repo.tar.gz
|
||||
|
||||
-- Resultat
|
||||
status VARCHAR(20) NOT NULL, -- 'running', 'success', 'failed', 'partial'
|
||||
size_bytes BIGINT,
|
||||
file_count INTEGER, -- antal filer i backup
|
||||
|
||||
-- Fejlhåndtering
|
||||
error_message TEXT,
|
||||
error_code VARCHAR(50), -- 'AZURE_UPLOAD_FAILED', 'DISK_FULL', 'TAR_FAILED', etc.
|
||||
retry_count INTEGER DEFAULT 0,
|
||||
|
||||
-- Metadata
|
||||
hostname VARCHAR(100), -- hvilken server kørte backup
|
||||
script_version VARCHAR(20), -- version af backup script
|
||||
checksum VARCHAR(64), -- SHA256 af backup fil
|
||||
|
||||
-- Indexes
|
||||
created_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Performance indexes
|
||||
CREATE INDEX idx_backup_logs_started ON backup_logs(started_at DESC);
|
||||
CREATE INDEX idx_backup_logs_type ON backup_logs(backup_type);
|
||||
CREATE INDEX idx_backup_logs_status ON backup_logs(status);
|
||||
CREATE INDEX idx_backup_logs_source ON backup_logs(source_name);
|
||||
|
||||
-- Composite index for repository summary queries
|
||||
CREATE INDEX idx_backup_logs_source_started ON backup_logs(source_name, started_at DESC);
|
||||
|
||||
-- View for repository summaries (optional, can be used for performance)
|
||||
CREATE OR REPLACE VIEW backup_repository_summary AS
|
||||
SELECT
|
||||
source_name,
|
||||
backup_type,
|
||||
COUNT(*) as total_backups,
|
||||
COUNT(*) FILTER (WHERE status = 'success') as successful_backups,
|
||||
COUNT(*) FILTER (WHERE status = 'failed') as failed_backups,
|
||||
MAX(started_at) as last_backup,
|
||||
MAX(started_at) FILTER (WHERE status = 'success') as last_successful_backup,
|
||||
COALESCE(SUM(size_bytes) FILTER (WHERE status = 'success'), 0) as total_size_bytes
|
||||
FROM backup_logs
|
||||
GROUP BY source_name, backup_type;
|
||||
|
||||
-- Sample data for testing (optional)
|
||||
-- INSERT INTO backup_logs (backup_type, source_name, source_path, destination, remote_path, status, size_bytes, hostname, script_version)
|
||||
-- VALUES ('forgejo_repos', 'myorg/myrepo', '/var/lib/forgejo/data/forgejo-repositories/myorg/myrepo.git', 'azure_blob', 'https://storageptadmin.blob.core.windows.net/backups/forgejo/2024-01-31/myorg-myrepo.tar.gz', 'success', 1048576, 'forgejo-server', '2.0.0');
|
||||
|
||||
-- Bruger setup til backup script
|
||||
CREATE USER backup_writer WITH PASSWORD 'your_secure_password_here';
|
||||
|
||||
GRANT CONNECT ON DATABASE ptadmin TO backup_writer;
|
||||
GRANT USAGE ON SCHEMA public TO backup_writer;
|
||||
GRANT SELECT, INSERT, UPDATE ON backup_logs TO backup_writer;
|
||||
GRANT USAGE, SELECT ON SEQUENCE backup_logs_id_seq TO backup_writer;
|
||||
Loading…
Add table
Add a link
Reference in a new issue