Changes between Initial Version and Version 1 of Phase3


Ignore:
Timestamp:
09/04/25 10:33:57 (3 weeks ago)
Author:
213280
Comment:

Creation of phase3

Legend:

Unmodified
Added
Removed
Modified
  • Phase3

    v1 v1  
     1= MSSQL Server – Бекап и реставрација =
     2
     3Во Microsoft SQL Server, резервните копии и реставрацијата се клучен дел од администрацијата на базата на податоци. MSSQL овозможува различни типови на бекапи: логички, физички и напредни сценарија како '''Point-in-Time Recovery (PITR)'''. Овие опции ја штитат базата од загуба на податоци поради хардверски дефекти, грешки во апликации или човечки грешки.
     4
     5----
     6
     7=== Типови на бекап во MSSQL ===
     8
     9===== 1. Логички бекап (Logical Backup) =====
     10Овие копии можеме да ги правиме преку Generate Scripts во SQL Server Management Studio (SSMS) или преку BCP/SQLCMD.
     11
     12       - Со користење на BCP (Bulk Copy Program):
     13       {{{
     14       #!sql
     15           bcp MyDatabase.dbo.MyTable out "C:\backups\MyTable_data.bak" -c -t, -S localhost -U sa -P YourPassword
     16       }}}
     17
     18       - Со SQLCMD за копија на целата база (DDL + DML):
     19       {{{
     20       #!sql
     21           sqlcmd -S localhost -U sa -P YourPassword -d MyDatabase -Q "SELECT definition FROM sys.sql_modules"
     22       }}}
     23
     24
     25===== 2. Физички бекап (Physical Backup) =====
     26MSSQL има опции за '''full, differential, и transaction log backups.''' Ова е стандардниот начин за целосна заштита на податоците.
     27
     28Основни типови:
     29-       Full Backup -> комплетна копија на базата
     30-       Differential Backup -> само промените од последниот Full backup
     31-       Transaction Log Backup -> сите трансакции од последниот log backup
     32
     33        ====== ''Примери со T-SQL:'' ======
     34
     35{{{
     36#!sql
     37
     38     -- Full backup
     39     BACKUP DATABASE MyDatabase
     40     TO DISK = 'C:\backups\MyDatabase_full.bak'
     41     WITH FORMAT, INIT, NAME = 'Full Backup of MyDatabase';
     42
     43     -- Differential backup
     44     BACKUP DATABASE MyDatabase
     45     TO DISK = 'C:\backups\MyDatabase_diff.bak'
     46     WITH DIFFERENTIAL, INIT, NAME = 'Differential Backup of MyDatabase';
     47
     48     -- Transaction log backup
     49     BACKUP LOG MyDatabase
     50     TO DISK = 'C:\backups\MyDatabase_log.trn'
     51     WITH INIT, NAME = 'Transaction Log Backup';
     52}}}
     53
     54=== Реставрација во MSSQL ===
     55
     56{{{
     57#!sql
     58    -- Restore a full backup
     59    RESTORE DATABASE MyDatabase
     60    FROM DISK = 'C:\backups\MyDatabase_full.bak'
     61    WITH MOVE 'MyDatabase_Data' TO 'C:\SQLData\MyDatabase.mdf',
     62    MOVE 'MyDatabase_Log' TO 'C:\SQLData\MyDatabase.ldf',
     63    REPLACE, RECOVERY;
     64}}}
     65
     66
     67=== Point-in-Time Recovery (PITR) ===
     68PITR во MSSQL се прави со помош на '''Transaction Log Backups'''. Ова овозможува враќање на базата до одреден момент. Ваквиот начин е многу корисен доколу сакаме да вратиме некоја база неколку минути пред грешка/баг.
     69
     70{{{
     71#!sql
     72
     73    -- Restore full backup
     74    RESTORE DATABASE MyDatabase
     75    FROM DISK = 'C:\backups\MyDatabase_full.bak'
     76    WITH NORECOVERY;
     77       
     78    -- Restore all transaction logs until target time
     79    RESTORE LOG MyDatabase
     80    FROM DISK = 'C:\backups\MyDatabase_log.trn'
     81    WITH STOPAT = '2025-08-30 15:45:00', NORECOVERY;
     82       
     83    -- Finalize
     84    RESTORE DATABASE MyDatabase WITH RECOVERY;
     85}}}
     86
     87=== Автоматизација ===
     88Имаме неколку опции кога станува збор за автоматизација на бекап процедури:
     89
     90-       `SQL Server Agent Jobs` -> можеме да креираме автоматски таскови за бекап.
     91-       `PowerShell scripts` -> можеме да користиме автоматизација преку Windows Task Scheduler.
     92
     93       Пример за `PowerShell` скрипта за full backup:
     94{{{#!sql
     95# PowerShell backup script
     96    $timestamp = Get-Date -Format "ddMMyyyy_HHmm"
     97    $backupFile = "C:\backups\MyDatabase_$timestamp.bak"
     98       
     99    Invoke-Sqlcmd -Query "
     100    BACKUP DATABASE [MyDatabase]
     101    TO DISK = N'$backupFile'
     102    WITH FORMAT, INIT, NAME = 'Full Backup of MyDatabase';
     103    "
     104}}}