MSSQL rezerves kopiju veidošana

Lai risinātu iepriekš aprakstītās problēmas, veidojot MSSQL automātiskās rezerves kopijas, izveidoju savu mazu programmiņu. Tās galvenās funkcijas:

  • veidot rezerves kopijas visām uz servera esošām datubāzēm;
  • apstrādāt reizē vairākus datubāzu serverus (vai instances);
  • sūtīt skaisti noformētus statusu pārskatus;
  • izdzēst novecojušas rezerves kopijas.

Lejupielāde: SqlBackup.zip (gan pirmkods, gan kompilēta versija)

Konfigurācijas fails un pirmkods ir dokumentēts pietiekoši, lai jebkurš šo kodu varētu izmantot, pielāgojot vai arī neko nemainot.

MSSQL rezerves kopiju problēmas

Savulaik, strādājot ar MySQL, priecājos par iespēju veidot ērtas rezerves kopijas ar mysqldump. Pēcāk, pārejot uz Microsoft SQL Server, priecājos par iespēju izmantot iebūvēto rezerves kopiju veidošanu, kas gan nebija tik ērti izmantojama citiem mērķiem kā parasti SQL skripti, bet toties tika veidoti krietni ātrāk un deva iespēju veidot inkrementālas rezerves kopijas.

Tomēr pēc kāda laika tika apzinātas vairākas problēmas, kas piemīt iebūvētajām backup funkcijām, kad tās izmanto, piemēram, katras nakts rezerves kopiju veidošanai, no kurām dažas:

  • nav iespējams norādīt, pret kuru pilno rezerves kopiju tiks veikta inkrementālā – tā vienmēr būs pret pēdējo pilno;
  • nav iespējas automātiski dzēst vecās rezerves kopijas (lai gan katrai rezerves kopijai var norādīt, cik ilgi tā būs derīga).

Otro problēmu daļēji risina Maintenance plan uzdevums, kas tīra rezerves kopiju vēsturi. Taču – tas tīra rezerves kopijas, nevis, ievērojot katras kopijas derīguma laiku, bet gan visas, kas vecākas par x dienām.

Pirmo problēmu iespējams daļēji risināt, izmantojot COPY_ONLY parametru BACKUP operācijai. Tas gan neļauj norādīt, ka inkrementālā kopija jāveido uz noteiktas pilnās kopijas bāzes, taču tas ļauj izveidot kopijas, kas ir neatkarīgas, un kuru izdzēšana nesabojās kādu citu kopiju.

Tieši šis pēdējais faktors bieži ir bijis ļoti svarīgs – ir nepieciešams izveidot automātiskās rezerves kopijas katru nakti, bet paralēli tam nepieciešams ļaut datubāzes administratoram pašam spēlēties ar savām rezerves kopijām – tās dzēst, veidot utt. Un automātiskās kopijas netiek glabātas ilgāk kā, piemēram, nedēļu, kamēr manuāli veidotās var tikt saglabātas bezgalīgi.

Lai ar šīm problēmām cīnītos, kā arī ērti automatizētu vairāku servera instanču rezerves kopiju veidošanu, uzrakstīju nelielu programmiņu, kas automātiski veic šādu kopiju veidošanu. Programmu ar visu pirmkodu drīzumā nopublicēšu, ja nu gadījumā vēl kāds atpazīst aprakstītajā savas problēmas (vai varbūt tagad saprot, ka savs esošais mehānisms īsti pareizi nestrādā).

Microsoft SQL Server backup iespējas gan sniedzas tālāk par parastu rezerves kopiju veidošanu (piemēram, transaction log backup-ošana), taču ikdienā lielākā daļa lietotāju izmanto šādu vienkāršotu pieeju.

Papildināts: MSSQL rezerves kopiju veidošana

miga.lv uzlikts Microsoft SQL Server 2008 SP1

Uz miga.lv servera atjaunināts Microsoft SQL Server, tagad aktuālā versija ir Microsoft SQL Server 2008 Express SP1 (10.0.2531).

Uz miga.lv uzstādīts Microsoft SQL Server Driver for PHP

Uz miga.lv servera tika uzstādīts Microsoft SQL Server Driver for PHP 1.0, kas ir Microsoft izstrādāts PHP modulis, lai komunicētu ar Microsoft SQL Server. Pieredze rāda, ka PHP iebūvētā mssql bibliotēka sagādā ne mazums galvas sāpju, tāpēc šis ir ieteicamais veids, kā no PHP slēgties pie Microsoft SQL Server.

Lejupielāde (satur gan pašu moduli, gan tā dokumentāciju): SQL Server Driver for PHP Version 1.0 Cumulative Update - April 2009