wiki:Phase3

Version 1 (modified by 213280, 3 weeks ago) ( diff )

Creation of phase3

MSSQL Server – Бекап и реставрација

Во Microsoft SQL Server, резервните копии и реставрацијата се клучен дел од администрацијата на базата на податоци. MSSQL овозможува различни типови на бекапи: логички, физички и напредни сценарија како Point-in-Time Recovery (PITR). Овие опции ја штитат базата од загуба на податоци поради хардверски дефекти, грешки во апликации или човечки грешки.


Типови на бекап во MSSQL

1. Логички бекап (Logical Backup)

Овие копии можеме да ги правиме преку Generate Scripts во SQL Server Management Studio (SSMS) или преку BCP/SQLCMD.

  • Со користење на BCP (Bulk Copy Program):
        bcp MyDatabase.dbo.MyTable out "C:\backups\MyTable_data.bak" -c -t, -S localhost -U sa -P YourPassword
    
  • Со SQLCMD за копија на целата база (DDL + DML):
        sqlcmd -S localhost -U sa -P YourPassword -d MyDatabase -Q "SELECT definition FROM sys.sql_modules"
    
2. Физички бекап (Physical Backup)

MSSQL има опции за full, differential, и transaction log backups. Ова е стандардниот начин за целосна заштита на податоците.

Основни типови:

  • Full Backup -> комплетна копија на базата
  • Differential Backup -> само промените од последниот Full backup
  • Transaction Log Backup -> сите трансакции од последниот log backup
Примери со T-SQL:
     -- Full backup
     BACKUP DATABASE MyDatabase
     TO DISK = 'C:\backups\MyDatabase_full.bak'
     WITH FORMAT, INIT, NAME = 'Full Backup of MyDatabase';

     -- Differential backup
     BACKUP DATABASE MyDatabase
     TO DISK = 'C:\backups\MyDatabase_diff.bak'
     WITH DIFFERENTIAL, INIT, NAME = 'Differential Backup of MyDatabase';

     -- Transaction log backup
     BACKUP LOG MyDatabase
     TO DISK = 'C:\backups\MyDatabase_log.trn'
     WITH INIT, NAME = 'Transaction Log Backup';

Реставрација во MSSQL

    -- Restore a full backup
    RESTORE DATABASE MyDatabase
    FROM DISK = 'C:\backups\MyDatabase_full.bak'
    WITH MOVE 'MyDatabase_Data' TO 'C:\SQLData\MyDatabase.mdf',
    MOVE 'MyDatabase_Log' TO 'C:\SQLData\MyDatabase.ldf',
    REPLACE, RECOVERY;

Point-in-Time Recovery (PITR)

PITR во MSSQL се прави со помош на Transaction Log Backups. Ова овозможува враќање на базата до одреден момент. Ваквиот начин е многу корисен доколу сакаме да вратиме некоја база неколку минути пред грешка/баг.

    -- Restore full backup
    RESTORE DATABASE MyDatabase
    FROM DISK = 'C:\backups\MyDatabase_full.bak'
    WITH NORECOVERY;
        
    -- Restore all transaction logs until target time
    RESTORE LOG MyDatabase
    FROM DISK = 'C:\backups\MyDatabase_log.trn'
    WITH STOPAT = '2025-08-30 15:45:00', NORECOVERY;
        
    -- Finalize
    RESTORE DATABASE MyDatabase WITH RECOVERY;

Автоматизација

Имаме неколку опции кога станува збор за автоматизација на бекап процедури:

  • SQL Server Agent Jobs -> можеме да креираме автоматски таскови за бекап.
  • PowerShell scripts -> можеме да користиме автоматизација преку Windows Task Scheduler.

 Пример за PowerShell скрипта за full backup:

# PowerShell backup script
    $timestamp = Get-Date -Format "ddMMyyyy_HHmm"
    $backupFile = "C:\backups\MyDatabase_$timestamp.bak"
        
    Invoke-Sqlcmd -Query "
    BACKUP DATABASE [MyDatabase]
    TO DISK = N'$backupFile'
    WITH FORMAT, INIT, NAME = 'Full Backup of MyDatabase';
    "
Note: See TracWiki for help on using the wiki.