sql kopēšana. SQL. Dublēšanas iestatījumi. MS SQL atkopšanas scenāriji

Ieteicams pielāgot regulāra datu bāzes dublēšana(aparatūras vai programmatūras kļūmju gadījumā) un vislabāk ar dublējumkopijas par pēdējām dienām, piemēram, septiņām (par pēdējo nedēļu).

Lai to izdarītu, varat izmantot vai nu iebūvēto SQL Server uzdevumu plānotāju - "SQL Server Agent" (nav iekļauts bezmaksas versijā), vai standarta "Windows Scheduler" kombinācijā ar utilītu SQLCMD.EXE, kas ļauj jums lai vaicātu SQL Server no komandrindas. Plānotājā ir jāizveido vismaz septiņi darbi (pa vienam katrai nedēļas dienai), no kuriem katrs (reizi nedēļā) aizstās vienu no septiņiem failiem, kas satur atbilstošo datu bāzes dublējumu.

Turklāt rezerves failus ieteicams glabāt ne tikai tā datora cietajā diskā, kurā ir instalēts SQL Server, bet arī dublēt tos cita tīkla datora lentē vai cietajā diskā. Lai to izdarītu, varat izmantot īpašu programmatūru, kas ļauj dublēt visu disku, vai arī izmantot to pašu plānotāju, lai kopētu failus lentē vai citā datorā (otrais solis).

Izmantojot "Windows plānotāju" (bezmaksas versijai)

Lai izveidotu uzdevumu "Windows plānotājā", jums ir nepieciešams:

Palaidiet programmu Notepad (Start-> All Programs-> Accessories-> Notepad) un ievadiet šādas divas rindiņas, pēc tam saglabājiet tās kā sērijveida failu (*.BAT):

SQLCMD -S (lokālais) -E -Q "DUBLĒJUMA DATU BĀZE AltaSVHDb UZ DISK = "D:\BACKUP\ AltaSVHDb_monday.bak" AR INIT, NOFORMAT, IZLAIST, NOUNLOAD"
XCOPY D:\BACKUP\ AltaSVHDb_monday.bak \\BACKUP_SERVER\Folder\*.* /Y

kur "(vietējais)"- servera nosaukums (ja instalējat nosauktu SQL Server gadījumu, jums jānorāda pilns nosaukums: “COMP_NAME\SQLEXPRESS”), AltaSVHDb- datu bāzes nosaukums, "D:\BACKUP\ AltaSVHDb_monday.bak"- faila nosaukums, lai tajā izveidotu rezerves kopiju (mainīsies atkarībā no nedēļas dienas), "BACKUP_SERVER"- tā datora nosaukums, uz kuru tiks veikta papildu kopēšana, Mape- mape šajā datorā (tai ir jābūt koplietotai).

Palaidiet uzdevumu plānošanas vedni (Vadības panelis->Ieplānotie uzdevumi->Pievienot uzdevumu) un noklikšķiniet uz pogas "Tālāk":

Noklikšķiniet uz pogas Pārlūkot un norādiet ceļu uz sērijveida failu (*.BAT), kas izveidots a darbībā:

Norādiet uzdevuma nosaukumu, atlasiet "iknedēļas" palaišanas opciju un noklikšķiniet uz pogas "Nākamais":

Atzīmējiet izvēles rūtiņu blakus vēlamajai nedēļas dienai un laukā "Sākuma laiks" norādiet laiku, kad jāsāk dublēšanas process (parasti tas tiek darīts naktī), pēc tam noklikšķiniet uz pogas "Nākamais":

Ievadiet tā OS konta lietotājvārdu un paroli (divas reizes), ar kuru tiks izpildīts uzdevums, un noklikšķiniet uz pogas "Tālāk":

Uzmanību! Lai uzdevums darbotos veiksmīgi, šeit norādītajam kontam (domēnam vai lokālajam datoram) ir jāpiešķir rakstīšanas atļaujas iepriekšminētajā mapē "\\BACKUP_SERVER\Folder", kā arī konfigurēt piekļuvi pašam SQL Server.

Nospiediet pogu "Pabeigt".

Piezīme. Lai pārbaudītu izveidotā uzdevuma darbību, uzdevumu sarakstā (Vadības panelis->Ieplānotie uzdevumi) ar peles labo pogu jānoklikšķina uz interesējošā uzdevuma un konteksta izvēlnē jāizvēlas vienums “Palaist”, pēc tam jāpārliecinās, ka datu bāzes dublējuma fails tika veiksmīgi izveidots, izmantojot a) darbībā norādītos ceļus.

Izmantojot "SQL Server Agent" (nav iekļauts bezmaksas versijā)

Lai izveidotu uzdevumu programmā SQL Server Agent, jums ir nepieciešams:

Palaidiet utilītu SQL Server Management Studio un izveidojiet savienojumu ar serveri, izmantojot administratora kontu.

Loga kreisajā daļā ar peles labo pogu noklikšķiniet uz sadaļas "Servera objekti / Dublēšanas ierīces" un konteksta izvēlnē atlasiet vienumu "Izveidot rezerves ierīci":

Laukā "Ierīces nosaukums" ievadiet nosaukumu, kas tiks saistīts ar datu bāzes dublējuma failu, ja nepieciešams, mainiet ceļu laukā "Fails" un noklikšķiniet uz "OK":

Loga kreisajā daļā ar peles labo pogu noklikšķiniet uz sadaļas "SQL Server Agent/Jobs" un konteksta izvēlnē atlasiet vienumu "Izveidot darbu":

Laukā "Nosaukums" ievadiet uzdevuma nosaukumu:

Lapā Darbības noklikšķiniet uz pogas Izveidot:

Parādītajā logā laukā "Soļa nosaukums" ievadiet nosaukumu, pārbaudiet, vai laukā "Tips" ir atlasīts "Transact-SQL (T-SQL) skripts", un laukā "Komanda" ievadiet rindu:

DUBLĒJUMA DATU BĀZE AltaSVHDb UZ AltaSVHDb_monday AR INIT, NOFORMAT, SKIP, NOUNLOAD

kur AltaSVHDb- datu bāzes nosaukums, AltaSVHDb_pirmdiena- c) darbībā izveidotās rezerves ierīces nosaukums (mainīsies atkarībā no nedēļas dienas):

Iepriekšējā logā noklikšķiniet uz pogas "OK", kā rezultātā lapā "Soļi" jāparādās šādai rindai:

Lai datu bāzes dublējuma fails tiktu nekavējoties pārkopēts uz citu tīkla datoru, atkārtojiet darbības f) - h), logā "Uzdevuma soļa izveide" laukā "Tips" atlasiet "Operētājsistēma (CmdExec)". , un lauka rindā "Komanda" norādiet:

XCOPY D:\MSSQL\BACKUP\AltaSVHDb_monday.bak \\BACKUP_SERVER\Folder\*.* /Y

kur "D:\MSSQL\BACKUP\AltaSVHDb_monday.bak"- c) solī norādītais ceļš (mainīsies atkarībā no nedēļas dienas), "BACKUP_SERVER"- tā datora nosaukums, kurā tiks veikta kopija, Mape- mape šajā datorā (tai ir jābūt koplietotai):

Piezīme. Lai faila kopēšana būtu veiksmīga, jums ir jāpalaiž "SQL Server Agent" Windows domēna kontā, kuram ir rakstīšanas atļaujas iepriekš minētajā mapē (skatiet arī "SQL2005_installation.doc" vai "SQL2008_installation.doc") un jākonfigurē. piekļuve pašam SQL Server (skatiet sadaļu "Datu bāzes piekļuves tiesību konfigurēšana", iekļaujiet šo kontu "sysadmin" lomā lapā "Servera lomas" un neko nedariet lapās "Lietotāju kartēšana" un "Aizsargātie objekti").

Lapā "Grafiki" noklikšķiniet uz pogas "Izveidot":

Ievadiet nosaukumu laukā Nosaukums, pārliecinieties, vai lauks Grafika veids ir iestatīts uz Recurring Task un lauks Runs ir iestatīts uz Reizi nedēļā. Atzīmējiet izvēles rūtiņu blakus vēlamajai nedēļas dienai (noņemiet atzīmi pārējām) un laukā "Viens uzdevums" norādiet laiku, kad jāsāk dublēšanas process (parasti tas tiek darīts naktī):

Iepriekšējā logā noklikšķiniet uz pogas "OK", kā rezultātā lapā "Grafiki" vajadzētu parādīties šādai rindai:

Nospiediet pogu "OK".

Piezīme. Lai pārbaudītu izveidotā uzdevuma darbību, sadaļā "SQL Server Agent / Tasks" ar peles labo pogu noklikšķiniet uz interesējošā uzdevuma un konteksta izvēlnē atlasiet vienumu "Palaist uzdevumu solī", atlasiet pirmo darbību. parādītajā logā un noklikšķiniet uz "OK". Parādīsies logs, kas parāda uzdevuma gaitu. Ja uzdevuma izpilde beidzas ar kļūdu, tad detalizētu kļūdas aprakstu var redzēt, izsaucot tās pašas konteksta izvēlnes vienumu "Skatīt žurnālu".

Apskatīsim nevēlamu situāciju. Proti: kāda iemesla dēļ datubāze neizdevās. Kas mums ir? Pilna kopija, vakardienas diferenciālkopija, bet ir arī dati par šodienu, vai tiešām ik stundu vajadzēja taisīt diferenciālo kopiju? - Nē! Tur ir Darījumu žurnāls.
Darījumu žurnāls ir žurnāls, kas reģistrē visas transakcijas un visas datubāzes izmaiņas, ko veicis katrs darījums. Tie. jebkura darbība ar datu bāzi tiek soli pa solim reģistrēta žurnālā. Katru ierakstu DBVS atzīmē, lai pabeigtu transakciju, neatkarīgi no tā, vai tas ir pabeigts vai nav. Ar tās palīdzību jūs varat atjaunot datu bāzes stāvokli ne tikai pēc kļūmes, bet arī neparedzētu darbību gadījumā ar datiem. Atgriezt līdz noteiktam laikam. Tāpat kā datu bāzē, darījumu žurnālam ir jābūt dublētam, pilnam, diferencētam, pakāpeniskam. Lai atjaunotu daļu darījumu žurnāla pēc kļūmes starp dublēšanu, jums ir jādublē pēdējā žurnāla daļa, kas faktiski ir dublējuma pabeigšanas punkts. Izpildīts pēc avārijas kā atpakaļskaitīšanas punkts.
Tātad, lai atjaunotu datubāzi pēc avārijas, mums ir nepieciešama atjaunināta pilna datu bāzes kopija, datu bāzes diferenciālā kopija un darījumu žurnāla kopija.

Pašai datu bāzei ir 3 atkopšanas modeļi — vienkāršie, pilnie un lielapjoma reģistrēšanas modeļi. Apsveriet:

  1. Vienkāršs modelis (Vienkāršs) - tiek izmantota tikai pilna atlaišana. Nav atšķirības. dublējumkopijas, tāpat kā darījumu žurnāla dublējumkopijas. Pilnas kopijas jāveido pēc iespējas biežāk. Aktuāls datu bāzēm, kuras tiek izmantotas "tikai lasīšanai".
  2. Pilnas atkopšanas modelis (Full) – visbiežāk lietotais modelis, kurā pieejamas visas datu dublēšanas un atkopšanas funkcijas. Atbalsta atsevišķu datu lapu atkopšanu. Ir pilnīga darījumu reģistrēšana, saglabājot darījumu žurnālu.
  3. Lielapjoma reģistrētais modelis ir paredzēts kā papildinājums pilnas pilnas atkopšanas modelim. Lielākā daļa masveida operāciju attiecīgi neatbalsta reģistrēšanu - tā neatbalsta datu bāzes atjaunošanu līdz noteiktam brīdim.

Apskatīsim visatbilstošāko rezerves kopiju ķēdi: Pilna dublēšana - reizi nedēļā, Diferenciālā dublēšana - reizi dienā, Darījumu žurnāla dublēšana - reizi stundā.
Ir vairākas iespējas, kā izveidot dublējumu:

  • Izmantojot iebūvēto MS SQL uzdevumu plānotāju
  • Izmantojot Transact-SQL
  • Izmantojot sqlcmd un OS uzdevumu plānotāju
  • Manuāli (kas mums neder, jo īstajam administratoram pastāvīgi jājaucas)

Apsveriet pirmo iespēju kā vispiemērotāko. Šim nolūkam tiek izmantotas Windows Server 2008 R2 Enterprise un MS SQL Server 2008 Eng.

Tātad pieņemsim, ka mums ir TECH datubāze:

Pāriesim pie darba izveides rīka:

Trīs labās peles pogas un izsauciet Master Job:
Mēs atzīmējam izvēles rūtiņu "Katra uzdevuma atsevišķa izpilde", mēs veicam tikai vienu darbību

Meistars ir bez turbāna, bet galvenais nav turbāna izmērs)) Mēs izvēlamies vēlmes veidu, mūsu gadījumā - pilna rezervācija:

Meistars Joba, kā izrādījās, ir nedaudz ebrejs, tāpēc viņš vēlreiz jautā:

"Ir vērts izvēlēties papildu iespējas, ak, jaunais padavan!":
šeit mēs izvēlamies datu bāzi, rezerves glabāšanas periodu, adresi (lentes vai diska), saglabāšanas ceļu un, pats galvenais, uzdevumu plānotāju!

"Izvēloties savu, neaizmirstiet par datu bāzi. Koncentrējiet savu spēku un izvēlieties datu bāzi":

"Pārāk ātri jūs steidzaties izveidot uzdevumu, noklikšķiniet uz pogas zemāk ar nosaukumu Schedule - Define".
Sobsno, uzdevumu plānotājs, kurā mēs izvēlamies veidu (atkārtojums, vienreiz utt.), Dienu, laiku, sākuma veidu:

Tas arī viss, radīts. Meistars Joba ir foršs un zaļš. Mēs skatāmies uz stāvokli uzturēšanas plānos:

Paranoiķim nebaidieties to atzīt spogulī, ir vērts ieskatīties SQL Server Agent dvēselē – Job Activity Monitor, Job Master visu parādīs detalizēti:

Tagad, ja ir izpildīti norādītie nosacījumi, ir jāizveido pilna datu bāzes dublējums. Pēc tāda paša principa tiek izveidota diferenciālā dublējumkopija un darījumu žurnāla dublējums (šie apakšpunkti atrodas darba atlases sarakstā zem "Pilna dublēšana").
Sagriez ausis ar MSSQL kā gribi, neizskrūvē

Nākamajā rakstā ir apskatīta izveide ar Transact-SQL un daži piemēri.

Neskatoties uz to, ka savos iepriekšējos materiālos jau esam pieskārušies jautājumam par Microsoft SQL Server datu bāzu dublēšanu, lasītāja atbilde liecināja par nepieciešamību izveidot pilnvērtīgu materiālu ar teorētiskās daļas dziļāku izpēti. Patiešām, raksti, kuros uzsvars tiek likts uz praktiskiem norādījumiem, ļauj ātri iestatīt dublējumu, bet nepaskaidro noteiktu iestatījumu izvēles iemeslus. Mēģināsim novērst šo plaisu.

Atveseļošanās modeļi

Pirms dublējuma iestatīšanas ir jāizvēlas atkopšanas modelis. Optimālai izvēlei nepieciešams izvērtēt prasības atkopšanai un datu zuduma kritiskumu, salīdzinot tās ar pieskaitāmajām izmaksām konkrēta modeļa ieviešanai.

Kā zināms, MS SQL datu bāze sastāv no divām daļām: pašas datu bāzes un tās darījumu žurnāla. Datu bāzē ir lietotāju un pakalpojumu dati pašreizējā laikā, darījumu žurnāls ietver visu datu bāzes izmaiņu vēsturi noteiktā laika periodā, izmantojot darījumu žurnālu, mēs varam atgriezt datu bāzes stāvokli uz jebkuru patvaļīgu laika punktu.

Izmantošanai ražošanas vidē tiek piedāvāti divi atkopšanas modeļi: vienkāršs un pilnīgs. Ir arī modelis ar nepilnīga mežizstrāde, bet tas ir ieteicams tikai kā papildinājums pilnam modelim liela mēroga masveida operāciju periodam, kad nav nepieciešams atjaunot bāzi noteiktā laika posmā.

vienkāršs modelis paredz tikai datu bāzes dublēšanu, respektīvi, datu bāzes stāvokli varam atjaunot tikai dublēšanas brīdī, tiks zaudētas visas izmaiņas laika intervālā no pēdējās dublējuma izveidošanas līdz neveiksmei. Tajā pašā laikā vienkāršai shēmai ir mazs pieskaitījums: jums ir jāsaglabā tikai datu bāzes kopijas, savukārt darījumu žurnāls tiek automātiski saīsināts un nepalielinās. Arī atkopšanas process ir vienkāršākais un neaizņem daudz laika.

pilnīgs modelisļauj atjaunot datubāzi jebkurā patvaļīgā brīdī, taču papildus datu bāzes dublējumkopijām ir jāuzglabā darījumu žurnāla kopijas visam periodam, kurā var būt nepieciešama atjaunošana. Aktīva darba laikā ar datu bāzi darījumu žurnāla apjoms un līdz ar to arī arhīvu apjoms var sasniegt lielus izmērus. Arī atkopšanas process ir daudz sarežģītāks un laikietilpīgāks.

Izvēloties atkopšanas modeli, jāsalīdzina atkopšanas izmaksas ar dublējumkopiju glabāšanas izmaksām, kā arī jāņem vērā personāla pieejamība un kvalifikācija, kas veiks atkopšanu. Atveseļošanās ar pilnu modeli no personāla prasa noteiktu kvalifikāciju un zināšanas, savukārt ar vienkāršu shēmu pietiks ar norādījumu izpildi.

Datu bāzēm, kurām ir pievienots neliels informācijas apjoms, var būt izdevīgāk izmantot vienkāršu modeli ar augstu kopēšanas biežumu, kas ļaus ātri atgūties un turpināt darbu, manuāli ievadot zaudētos datus. Pilnais modelis vispirms ir jāizmanto tur, kur datu zudums nav pieļaujams un to iespējamā atgūšana ir saistīta ar ievērojamām izmaksām.

Dublējumu veidi

Pilna datu bāzes kopija- kā norāda nosaukums, tas atspoguļo datu bāzes saturu un daļu no aktīvā darījumu žurnāla laika, kad tika izveidots dublējums (t.i., informācija par visiem esošajiem un nepabeigtajiem darījumiem). Ļauj pilnībā atjaunot datu bāzi laikā, kad tika izveidots dublējums.

Delta datu bāzes kopija- pilnai kopijai ir viens būtisks trūkums, tajā ir visa datubāzē esošā informācija. Ja dublējumkopijas ir jāveic diezgan bieži, nekavējoties rodas jautājums par diska vietas izšķērdīgu izmantošanu, jo tie paši dati aizņems lielāko daļu krātuves. Lai novērstu šo trūkumu, varat izmantot atšķirīgas datu bāzes kopijas, kurās ir tikai informācija, kas ir mainījusies kopš pēdējās pilnās dublēšanas.

Lūdzu, ņemiet vērā, ka diferenciālā kopija ir dati no pēdējā brīža pabeigt kopēšana, t.i. katra nākamā diferenciālā kopija satur iepriekšējās datus (bet tos var mainīt), un kopijas izmērs pastāvīgi pieaugs. Atjaunošanai ir nepieciešama viena pilna un viena diferenciāla dublēšana, parasti pēdējā. Atšķirīgo kopiju skaits jāizvēlas, pamatojoties uz to lieluma palielināšanos, tiklīdz diferenciālās kopijas izmērs ir salīdzināms ar pusi no pilnās kopijas, ir lietderīgi izveidot jaunu pilnu kopiju.

Darījumu žurnāla dublēšana- attiecas tikai uz pilnu atkopšanas modeli un satur darījumu žurnāla kopiju, sākot ar brīdi, kad tika izveidota iepriekšējā kopija.

Ir svarīgi atcerēties sekojošo - darījumu žurnāla kopijas nekādā veidā nav saistītas ar datu bāzes kopijām un nesatur informāciju no iepriekšējām kopijām, tāpēc datu bāzes atjaunošanai ir nepieciešama nepārtraukta kopiju ķēde. periods, kurā vēlaties atgriezt datu bāzes stāvokli. Šajā gadījumā pēdējās veiksmīgās kopijas brīdim ir jābūt šajā periodā.

Apskatīsim augšējo attēlu, ja žurnāla faila pirmā kopija ir pazaudēta, tad jūs varat atjaunot datu bāzes stāvokli tikai pilnas kopijas laikā, kas būs līdzīgs vienkāršajam atkopšanas modelim, jūs varat atjaunot datu bāzes stāvokli jebkurā brīdī tikai pēc nākamās diferenciālās (vai pilnas) kopijas, ar nosacījumu, ka žurnāla kopiju ķēde, kas sākas no datu bāzes pirms kopēšanas un tālāk, būs nepārtraukta (attēlā - no trešās un turpmākās).

Darījumu žurnāls

Lai izprastu atkopšanas procesus un dažāda veida dublējumkopiju mērķi, sīkāk jāapsver darījumu žurnāla struktūra un darbība. Darījums ir mazākā iespējamā loģiskā darbība, kurai ir jēga un kuru var pabeigt tikai pilnībā. Šī pieeja nodrošina datu integritāti un konsekvenci jebkurā situācijā, jo operācijas starpstāvoklis nav atļauts. Darījumu žurnāls ir paredzēts, lai kontrolētu jebkādas izmaiņas datu bāzē.

Veicot jebkuru darbību, darījumu žurnālā tiek pievienots ieraksts par darījuma sākumu, katram ierakstam tiek piešķirts unikāls numurs (LSN) no neatdalāmas secības, ar jebkuru datu maiņu tiek veikts attiecīgs ieraksts žurnālā, un pēc operācijas pabeigšanas žurnālā parādās atzīme par darījuma slēgšanu (saistību).

Katrā palaišanas reizē sistēma analizē darījumu žurnālu un atceļ visas neiesaistītās transakcijas, bet tajā pašā laikā tiek virzītas uz priekšu izmaiņas, kas ir reģistrētas žurnālā, bet nav ierakstītas diskā. Tas ļauj izmantot kešatmiņu un atpakaļrakstīšanu, nebaidoties par datu integritāti, pat ja nav rezerves barošanas sistēmu.

Žurnāla daļu, kas satur aktīvās transakcijas un izmanto datu atkopšanai, sauc par aktīvo žurnāla daļu. Tas sākas ar numuru, ko sauc par minimālo atkopšanas numuru (MinLSN).

Vienkāršākajā gadījumā MinLSN ir pirmā neapstiprinātā darījuma ieraksta numurs. Ja paskatās uz attēlu augstāk, tad atverot zilo darījumu mēs iegūsim MinLSN, kas vienāds ar 321, pēc tam, kad tas tiks fiksēts ierakstā 324, MinLSN numurs mainīsies uz 323, kas atbildīs zaļajam darījuma numuram, kuram nav vēl ir izdarīts.

Praksē lietas ir nedaudz sarežģītākas, piemēram, slēgtā zilā darījuma dati var vēl nebūt izskaloti diskā, un MinLSN pārvietošana uz 323 padarīs šīs operācijas atkopšanu neiespējamu. Lai izvairītos no šādām situācijām, tika ieviests kontrolpunkta jēdziens. Kontrolpunkts tiek izveidots automātiski, ja rodas šādi apstākļi:

  • Skaidri izpildot PĀRBAUDES PUNKTU. Kontrolpunkts tiek aktivizēts pašreizējā savienojuma datu bāzē.
  • Veicot minimāli reģistrētu darbību datu bāzē, piemēram, veicot lielapjoma kopēšanas darbību datu bāzē, uz kuru attiecas lielapjoma reģistrēšanas atkopšanas modelis.
  • Pievienojot vai noņemot datu bāzes failus, izmantojot paziņojumu ALTER DATABASE.
  • Kad SQL Server gadījums tiek apturēts, izmantojot SHUTDOWN priekšrakstu, vai SQL Server (MSSQLSERVER) pakalpojums. Abos gadījumos katrai datubāzei tiks izveidots kontrolpunkts SQL Server gadījumā.
  • Ja SQL Server gadījums periodiski izveido automātiskus kontrolpunktus katrā datu bāzē, lai samazinātu datu bāzes atkopšanas laiku.
  • Veidojot datu bāzes dublējumu.
  • Kad veicat darbību, kuras dēļ ir jāizslēdz datu bāze. Piemēri: AUTO_CLOSE iestatīšana uz IESLĒGTS un lietotāja pēdējā savienojuma ar datu bāzi aizvēršana vai datu bāzes iestatījuma maiņa, kas prasa datu bāzes restartēšanu.

Atkarībā no tā, kurš notikums notika pirmais, MinLSN tiks iestatīts vai nu kontrolpunkta ieraksta numurs, vai vecākā neapstiprinātā darījuma sākums.

Darījumu žurnāla saīsināšana

Darījumu žurnālam, tāpat kā jebkuram žurnālam, ir nepieciešama periodiska novecojušo ierakstu tīrīšana, pretējā gadījumā tas pieaugs un aizņems visu pieejamo vietu. Ņemot vērā, ka aktīvā darba laikā ar datu bāzi darījumu žurnāla izmērs var ievērojami pārsniegt datu bāzes izmēru, šis jautājums ir aktuāls daudziem administratoriem.

Fiziski darījumu žurnāla fails ir konteiners virtuālajiem žurnāliem, kas tiek aizpildīti secīgi, žurnālam augot. Loģiskais žurnāls, kas satur MinLSN ierakstu, ir aktīvā žurnāla sākums, loģiskie žurnāli pirms tā ir neaktīvi un nav nepieciešami automātiskai datu bāzes atkopšanai.

Ja tiek izvēlēts vienkāršais atkopšanas modelis, tad, kad loģiskie žurnāli sasniedz izmēru, kas vienāds ar 70% no fiziskā faila, tiek automātiski notīrīta neaktīvā žurnāla daļa, t.s. saīsināšana. Tomēr tas nesamazina fizisko žurnāla failu, tiek saīsināti tikai loģiskie žurnāli, kurus pēc šīs darbības var izmantot atkārtoti.

Ja darījumu skaits ir liels un līdz brīdim, kad fiziskā faila lielums sasniedz 70%, nav neaktīvu loģisko žurnālu, fiziskais faila lielums tiks palielināts.

Tādējādi darījumu žurnāla fails ar vienkāršu atkopšanas modeli pieaugs atkarībā no darbības ar datubāzi, līdz tajā ticami būs visa žurnāla aktīvā daļa. Pēc tam tā izaugsme apstāsies.

Izmantojot pilnu modeli, žurnāla neaktīvo daļu nevar saīsināt, kamēr tā nav pilnībā dublēta. Žurnāla saīsināšana tiek veikta ar nosacījumu, ka tika dublēts darījumu žurnāls, pēc kura tika izveidots kontrolpunkts.

Nespēja pareizi iestatīt darījumu žurnāla dublējumu pilnam modelim var izraisīt žurnāla faila nekontrolējamu augšanu, kas bieži vien ir problēma nepieredzējušiem administratoriem. Bieži tiek atrasti arī padomi par darījumu žurnāla manuālu saīsināšanu. Izmantojot pilnu atkopšanas modeli, to nevajadzētu darīt kategoriski, jo tādējādi tiks pārkāpta žurnāla kopiju ķēdes integritāte un datu bāzi varēs atjaunot tikai kopiju izveides laikā, kas atbilst vienkāršais modelis.

Šajā gadījumā ir laiks atcerēties, par ko runājām raksta sākumā, ja pilna modeļa izmaksas pārsniedz restaurācijas izmaksas, priekšroka jādod vienkāršam modelim.

Vienkāršs atkopšanas modelis

Tagad, kad ir iegūtas nepieciešamās minimālās zināšanas, mēs varam pāriet uz detalizētāku atkopšanas modeļu apskatu. Sāksim ar vienkāršu. Pieņemsim, ka atteices brīdī mums ir viena pilna un divas atšķirīgas kopijas:

Dublēšana tika veikta reizi dienā, un pēdējā kopija tika izveidota naktī no 21. uz 22. datumu. Kļūme notiek 22. dienas vakarā pirms nākamās kopijas izveides. Šādā gadījumā mums būs secīgi jāatjauno pilnas un jaunākās diferenciālās dublējumkopijas, un dati par pēdējo darba dienu tiks zaudēti. Ja kāda iemesla dēļ arī 21. datuma kopija izrādīsies bojāta, tad varam atjaunot iepriekšējo kopiju, zaudējot vēl vienu darba dienu, savukārt 20. datuma kopijas bojājums netraucē veiksmīgi atjaunot dati par 21. vakaru, ar atbilstošu kopiju.

Pilnīgs atkopšanas modelis

Apskatīsim līdzīgu situāciju, bet izmantojot pilnu atkopšanas modeli. Arī dublējumkopijas veicam ikdienā, pēc pilna + diferenciāla principa, un darījumu žurnāls tiek kopēts vairākas reizes dienā.

Atgūšanas process šajā gadījumā būs sarežģītāks. Pirmkārt, jums būs jāizveido manuāla galīgā žurnāla fragmenta dublējums (parādīts sarkanā krāsā), t.i. daļa no žurnāla no pēdējās kopijas izveides brīža līdz pirms avārijas.

Ja tas nav izdarīts, tad datu bāzi varēs atjaunot tikai tādā stāvoklī, kāds bija tajā brīdī, kad tika izveidota pēdējā darījumu žurnāla kopija.

Tajā pašā laikā žurnāla kopijas faila bojājums par iepriekšējo dienu mums netraucēs atjaunot pašreizējo datu bāzes stāvokli, bet ierobežos mūs līdz brīdim, kad tika izveidota pēdējā kopija, t.i. pašreizējās dienas.

Pēc tam mēs secīgi atjaunojam pilnās un diferenciālās kopijas un žurnāla kopiju ķēdi, kas izveidota pēc pēdējās dublēšanas, pēdējā, lai atjaunotu žurnāla galīgā fragmenta kopiju, kas dos mums iespēju atjaunot datu bāzi tieši negadījuma laiku vai patvaļīgu negadījumu, kas noticis pirms tā.

Ja pēdējā diferenciāļa kopija ir bojāta, tad vienkārša modeļa gadījumā tas novedīs pie vēl vienas darba dienas zaudēšanas, pilnais modelis ļauj atjaunot priekšpēdējo eksemplāru, pēc kura jums būs jāatjauno visa ķēde. darījumu žurnāla kopijas no priekšpēdējās kopijas brīža līdz neveiksmei. Atgūšanas dziļums ir atkarīgs tikai no nepārtrauktās baļķu ķēdes dziļuma.

Savukārt, ja ir bojāta kāda no darījumu žurnāla kopijām, teiksim, priekšpēdējā, tad varam atjaunot datus tikai uz pēdējās rezerves kopijas + periodu nebojātajā žurnāla kopiju ķēdē. Piemēram, ja žurnāli veikti 12:00, 14:00 un 16:00 un 14:00 izveidotais žurnāls ir bojāts, tad ar ikdienas kopiju varam atjaunot datu bāzi līdz nepārtrauktās ķēdes beigām, t.i. līdz pulksten 12.

Ir vairāki veidi, kā kopēt tabulu MS SQL Server datu bāzē. Piedāvāju vairākas iespējas tabulu kopiju izveidei. Kuru izvēlēties, ir atkarīgs no tabulas struktūras, indeksu, trigeru u.c. klātbūtnes tajā, kā arī no vēlmes kaut ko darīt ar savām rokām.

1. Manuāla tabulas struktūras kopēšanas metode

Programmā Microsoft SQL Management Studio atlasiet datu bāzi, atlasiet tabulu, ar peles labo pogu noklikšķiniet un atlasiet "Skriptu tabula kā" -> "IZVEIDOT" -> "Jauns vaicājumu redaktora logs". Vaicājuma logā tiks atvērts kods tabulas izveidei. Tajā jānorāda tās datu bāzes nosaukums, kurā vēlaties izveidot tabulas kopiju, un jauns nosaukums, ja datu bāze nemainās. Kā izveidot kodu, lai izveidotu esošas tabulas struktūru, ir parādīts attēlā zemāk.

Šī metode izveidos tabulu indeksus, bet nekopēs trigerus. Tie ir jākopē tādā pašā veidā.

Lai kopētu datus uz jau izveidotu tabulu, jums jāizmanto šāds SQL vaicājums:

INSERT mapē ..tmp_tbl_Deps SELECT * FROM ..tbl_Deps

2. SQL tabulas kopēšana ar vaicājumu vienā rindā

Izveidojiet tabulas struktūras un datu kopiju tajā pašā datu bāzē:

SELECT * uz tmp_tbl_Dep FROM tbl_Deps

Kopējiet tabulas struktūru un tās datus no vienas datu bāzes uz citu:

SELECT * uz ..tmp_tbl_Deps FROM ..tbl_Deps

Šī risinājuma negatīvā puse ir tāda, ka indeksi netiek kopēti.

Un arī: SQL dublējums, 1C dublējums.

Serveris 1C satur datus datu bāzē, kas atrodas SQL serverī. Šodien mēs apsveram MS SQL 2005/2008.

Lai nodrošinātu datu nezaudēšanu servera diska sadegšanas vai citās nepārvaramas varas situācijās, ir nepieciešams veikt rezerves kopijas jau pašā sākumā.

Protams, neviens nevēlas veikt pildspalvas katru dienu Backup SQL datu bāze 1C. Šim nolūkam ir automātiskie rīki. Iepazīsimies ar viņiem.

BackupSQL konfigurēšana

Dublējuma SQL iestatīšana 1C datu bāzei neatšķiras no dublējuma iestatīšanas jebkurai citai datubāzei.

Lai konfigurētu, palaidiet MS SQL Management Studio. Šī programma ir MS SQL programmu grupā.

1C SQL datu bāzes dublēšanas uzdevuma pievienošana

Uzdevumi SQL datu bāzu automātiskai dublēšanai atrodas sadaļā Pārvaldības/uzturēšanas plāni.

Lai pievienotu jaunu dublēšanas uzdevumu, ar peles labo pogu noklikšķiniet uz grupas Uzturēšanas plāni un atlasiet Jauns uzturēšanas plāns.

Ievadiet uzdevuma nosaukumu. Vārds ir svarīgs tikai jums. Katram gadījumam labāk izmantot angļu rakstzīmes.

1C SQL datu bāzes dublēšanas uzdevuma iestatīšana

Tiks atvērts darba redaktors. Lūdzu, ņemiet vērā, ka darbi var veikt dažādas darbības ar datu bāzi, nevis tikai dublējumkopijas.

Darbību opciju saraksts tiek parādīts apakšējā kreisajā stūrī. Atlasiet Dublēt datu bāzes uzdevumu, veicot dubultklikšķi vai vienkārši velciet pa labi.

Ievērojiet bultiņu. Varat vilkt un nomest vairākas dažādas vai identiskas darbības un saistīt tās ar bultiņām. Tad vairāki uzdevumi tiks izpildīti uzreiz jūsu norādītajā secībā.

Iestatījumu logā atlasiet vajadzīgās SQL 1C datu bāzes (var būt vairākas vai viena vienlaikus).

Atlasiet vietu, kur saglabāt SQL 1C datu bāzes dublējumu. Jums jāizvēlas fiziski atšķirīgs cietais disks. Organizatoriski varat atzīmēt izvēles rūtiņu "Izveidot apakšmapes".

Tagad iestatīsim dublēšanas grafiku. Noklusējuma dublēšanas grafiks tika pievienots pats. Taču varat pievienot vairākus grafikus (piemēram, vienu katru dienu, vienu reizi nedēļā utt.). Noklikšķiniet uz dublēšanas grafika iestatījumu pogas.

Ekrānuzņēmumā ir parādīts ikdienas dublēšanas SQL datu bāzes piemērs 1C plkst. 3:00.

Lai rezerves grafiks sarakstā būtu skaists un saprotams, varat to mainīt.

1C SQL datu bāzes dublēšanas darba saglabāšana

Noklikšķiniet uz sadedzināt. Uzdevums parādīsies saraksta kreisajā pusē.

Tas ir svarīgi! Pārbaudiet, vai dublējuma SQL datu bāzes uzdevums ir izveidots pareizi. Lai to izdarītu, ar peles labo pogu noklikšķiniet uz uzdevuma un atlasiet Izpildīt.

Tā rezultātā norādītajā ceļā jāparādās dublējuma failam. Ja kaut kas nav kārtībā, izdzēsiet uzdevumu (Del) un sāciet no sākuma.