1 Home
Mattia Tadini edited this page 2024-11-13 13:20:52 +00:00

Manuale per lo Script di Backup di Database MS SQL Server

Introduzione

Questo script, denominato mssql-backup.sh, è progettato per eseguire il backup di database MS SQL Server. Lo script supporta sia backup locali che caricamenti su un server FTP, oltre a inviare notifiche via email riguardo allo stato del processo di backup.

Requisiti

Prima di eseguire lo script, assicurati di avere i seguenti requisiti:

  • Un sistema operativo basato su Linux con accesso a MS SQL Server.
  • Installazione dei pacchetti ftp e msmtp (il comando per l'installazione è incluso nello script).
  • Configurazione di un file di configurazione esterno (mssqlconfig.env) contenente le credenziali necessarie. Configurazione
  1. File di Configurazione: Crea un file chiamato mssqlconfig.env nella directory /zucchetti/backupdb/ con le seguenti variabili:
    # SQL Server Configuration
    USER="sa"
    PASSWORD="DBP0l01nf0.."
    HOST="localhost"
    BACKUP_DIR="/zucchetti/backupdb/bkfiles"
    SQLCMD="/opt/mssql-tools18/bin/sqlcmd"
    SERVER_NAME="DBSQL01"   # Identificativo del server fisico
    TRUST_CERTIFICATE=1     # 1 per accettare certificati autofirmati, 0 per richiederli validi
    
    # Retention Configuration
    RETENTION=1  # Retention per i backup locali in giorni
    REMOTE_RETENTION=2  # Retention per i backup remoti in giorni
    
    # Log Configuration
    LOG_FILE="/zucchetti/backupdb/backup_log.txt"
    ERROR_LOG_FILE="/zucchetti/backupdb/backup_err.txt"
    
    # FTP Configuration
    FTP_SERVER="terni.poloinformatico.it"
    FTP_USER="backupmssqldb"
    FTP_PASSWORD="!Li'D/i%2&*QkvK!"
    REMOTE_DIR="/BackupDB"
    
    # SMTP Configuration
    SMTP_SERVER="smtp://relay.poloinformatico.it:587"
    SMTP_USER="brass@relay.poloinformatico.it"
    SMTP_PASS="DMKqP9vUYn8s"
    
    # Modalità Backup
    DO_LOCAL_BACKUP=1  # 1 per eseguire il backup locale, 0 per disabilitarlo
    DO_FTP_BACKUP=1    # 1 per eseguire il backup FTP, 0 per disabilitarlo
  1. Variabili di Configurazione: Lo script utilizza le seguenti variabili di configurazione (alcune possono essere sovrascritte nel file mssqlconfig.env):

    • BACKUP_DIR: Directory per il backup locale.
    • SQLCMD: Percorso per il comando sqlcmd.
    • HOST: Indirizzo del server SQL.
    • RETENTION: Numero di giorni per mantenere i backup locali.
    • REMOTE_RETENTION: Numero di giorni per mantenere i backup remoti.
    • SERVER_NAME: Nome del server fisico.
    • LOG_FILE: File di log per il backup.
    • ERROR_LOG_FILE: File di log per gli errori.
    • REMOTE_DIR: Directory remota sul server FTP.
    • DO_LOCAL_BACKUP: Abilita (1) o disabilita (0) il backup locale.
    • DO_FTP_BACKUP: Abilita (1) o disabilita (0) il backup FTP.
    • TRUST_CERTIFICATE: Accetta certificati autofirmati (1) o richiedi certificati validi (0). Esecuzione dello Script
  2. Permessi di Esecuzione: Assicurati che lo script abbia i permessi di esecuzione. Puoi farlo eseguendo: chmod +x mssql-backup.sh

  3. Esecuzione: Avvia lo script con il seguente comando per effettuare il backup di tutti i databases presenti nel server: ./mssql-backup.sh

  4. Esecuzione: Avvia lo script con il seguente comando per effettuare il backup di un solo database presente nel server: ./mssql-backup.sh nomedb

Funzionalità dello Script

  • Backup Locale: Se abilitato, lo script creerà una copia di backup locale dei database.
  • Caricamento FTP: Se abilitato, lo script caricherà i backup sul server FTP specificato.
  • Notifiche Email: Al termine del processo di backup, lo script invierà un'email con lo stato del backup e eventuali errori. Log e Errori
  • Lo stato del processo di backup verrà registrato nel file di log specificato da LOG_FILE.
  • Gli errori verranno registrati nel file di log specificato da ERROR_LOG_FILE. Conclusione

Questo script fornisce un metodo automatizzato per gestire il backup dei database MS SQL Server. Assicurati di testare lo script in un ambiente di sviluppo prima di utilizzarlo in produzione e di controllare regolarmente i log per eventuali problemi.