SQL Express geplande back-up. Het maken van geplande back-ups in MS SQL Express. Opzetten van MS SQL backup en databaseconfiguratie

Nadat ik veel informatie uit verschillende bronnen had bestudeerd, besloot ik het proces van het opzetten van een MS SQL Server-databaseback-up te beschrijven vol herstelmodel, welk model u moet gebruiken, is aan u, maar ik zou hieraan willen toevoegen dat als er een grote informatiestroom in uw database is (er worden bijvoorbeeld tientallen, honderden of duizenden documenten in 1 uur gemaakt), het verlies van informatie tijdens een werkdag zal eenvoudigweg onaanvaardbaar zijn, in dit geval garandeert alleen het volledige model de veiligheid van uw gegevens. Dit artikel is bedoeld voor beginnende systeembeheerders en bevat naar mijn mening de minimale reeks acties voor het maken van een back-up van een 1C-database. Het installeren/configureren van de SQL-server zelf en het implementeren van een database daarop valt niet binnen het bestek van dit artikel.

Alle instellingen maken wij met behulp van SQL Management Studio. Eerst moet je een back-upapparaat maken, je hoeft het niet te maken, maar naar mijn mening is het veel handiger en correcter. in een handomdraai SQL Management Studio -> Serverobjecten -> Back-upapparaten. U moet de naam van het apparaat opgeven en het bestand waarin de back-ups worden opgeslagen (bij voorkeur met de BAK-extensie), vervolgens kunt u de inhoud van de media bekijken, alle back-ups worden daar vermeld.

Nu kunt u beginnen met het opstellen van het Onderhoudsplan. Er kan voor alle databases in één keer een Onderhoudsplan worden gemaakt, maar het is handiger om voor elke database een eigen onderhoudsplan te maken.

Ons serviceplan bestaat uit drie subplannen: 1 - databaseback-up (volledig); 2 - databaseback-up (verschil); 3 - Maak een back-up van het transactielogboek. Elk deelplan heeft zijn eigen uitvoeringsschema. Iedereen stelt het schema naar eigen goeddunken in, maar in mijn geval wordt er één keer per week op zondag een volledige kopie gemaakt, elke dag behalve zondag een differentiële kopie en elk uur een transactielogboek. Met dit backupmodel kunt u de gewenste database op elke gewenste datum en tijd herstellen en besparen wij ruimte op uw harde schijf Er wordt daadwerkelijk één keer per week een volledige back-up gemaakt, waarbij gedurende de week alleen wijzigingen worden aangebracht.

Opstellen van een dagschema. Wekelijks verschilt alleen in het selectievakje "Zondag" en niet aangevinkt van "Maandag" tot "Zaterdag"

Schema voor spoorvervoer. De besparingstijd gedurende de dag is rood gemarkeerd, het is bijvoorbeeld logisch als gebruikers gedurende een bepaalde periode met de database werken en als de bedrijfsmodus 24x7 is, dan laten we deze op de standaardwaarde staan.

De onderstaande afbeelding toont de wekelijkse subplan-editor. Deze bestaat uit taken die in een bepaalde volgorde worden uitgevoerd. De volgorde wordt handmatig ingesteld, en groene pijlen betekenen dat de volgende taak alleen wordt voltooid als de vorige taak met succes is voltooid, en blauwe pijlen betekenen dat de taak wordt voltooid wanneer de vorige taak is voltooid. In de editor voor onderhoudssubplannen kunnen taken worden toegevoegd vanuit het "Elementenpaneel", dat zich in de linkerbovenhoek bevindt wanneer de editor geopend is.

Taken. U moet elke taak onderzoeken en de database selecteren waarvoor deze zal worden uitgevoerd en een aantal andere instellingen (indien aanwezig). Laten we eens kijken welke taken het wekelijkse deelplan van ons onderhoudsplan bevat.

1. "Controleer database-integriteitstaak". De volgende taak wordt alleen uitgevoerd als de database geen fouten bevat. (Moeten we een back-up maken van de database met fouten?)

2. "Indextaak opnieuw opbouwen". Het is noodzakelijk om de index elke dag te herstellen (opnieuw opbouwen), omdat... Wanneer u met indexen werkt, raken deze sterk gefragmenteerd, en wanneer de fragmentatie meer dan 25% bedraagt, begint SQL merkbaar te vertragen. Deze operatie vergt behoorlijk veel middelen, dus het kan minstens één keer per week worden gedaan, en dag subplan om het te vervangen door de minder resource-intensieve taak "Indexreorganisatie".

3. “Taak Statistieken bijwerken”. Voor optimalisatie... Deze taak kan overigens meerdere keren per dag worden uitgevoerd als uw database zwaar belast is.

4. Na het bijwerken van de statistieken MOET u de procedurele cache wissen. Sleep hiervoor de taak “Execute T-SQL statement” naar de editor en schrijf een procedure in het veld “T-SQL statement:” DBCC GRATISPROCCACHE. Maar u moet er rekening mee houden dat deze procedure de cache van ALLE databases wist en dat we de statistieken één voor één hebben bijgewerkt! Lees hoe u de procedurele cache voor een specifieke database wist. In het kort: DBCC FLUSHPROCINDB(DB_ID)

5. "DB-back-up" (Back-up maken van databasetaak). In deze taak geven we aan van welke database we een back-up maken, het type back-up (voor een wekelijks subplan - Volledig, voor een dagelijks subplan - Differentieel, voor een uurlijks - Transactielog.) We zetten de schakelaar in de stand "Maak een back-upkopie van databases in een of meer bestanden" en voeg het eerder gemaakte back-upapparaat toe. In dit geval worden ALLE kopieën opgeslagen in één bestand, dat is opgegeven bij het maken back-upapparaat, als de schakelaar op "Maak een back-upbestand voor elke database" blijft staan, wordt voor elke back-up een afzonderlijk bestand gemaakt voor Volledig, Differentieel en VT, wat erg lastig is bij het herstellen, maar handig bij het opslaan. Vergeet niet aan te geven dat u back-ups moet comprimeren!

6. "Logboek wissen" Wist records die zijn aangemaakt bij het uitvoeren van taken. U kunt ook de taak "Opschonen na onderhoud" inschakelen en deze configureren om tekstlogboeken of verouderde back-ups te verwijderen.

Het subplan voor VT backup bestaat uit één taak “Database backup”. Voor mij is het handiger om de VT niet op het back-upapparaat op te slaan, maar in een apart bestand, dat moet worden opgegeven in de taakinstellingen.

Een differentiële back-up is gebaseerd op de meest recente vorige volledige back-up van de gegevens. Een differentiële back-up slaat alleen wijzigingen op die zijn aangebracht sinds de laatste volledige back-up.
Aanbevelingen:
  1. Gebruik differentiële databasekopieën als het maken van een volledige databasekopie veel tijd in beslag neemt
  2. Maak regelmatig een volledige kopie van de database om het aantal gemaakte differentiële kopieën te verminderen.
  3. Nadat een volledige kopie van de database is gemaakt, verliezen alle voorgaande differentiële kopieën hun relevantie.
U kunt meer lezen over aanbevelingen over de frequentie van het maken van differentiële back-ups.

Ik zal u een klein praktisch voorbeeld geven van waarom we een verschilkopie zijn gaan gebruiken. In de loop van de tijd groeide de database van onze klant zo groot dat het maken van een volledige back-up 8 uur en nog enkele maanden in beslag nam, en misschien zou deze operatie niet aan het begin van de werkdag voltooid zijn. Nadat we waren overgestapt op differentiële back-up, hebben we de tijd teruggebracht van 8 uur naar 2-4 minuten (afhankelijk van de dag van de week). Eén keer per week maakten we een volledige kopie van de database.

Voorbeeld-SQL voor het maken van een differentiële back-upkopie van een database, waarbij de kopie na voltooiing wordt gecontroleerd (anders dan een volledige kopie met de vlag DIFFERENTIEEL je zou het in plaats daarvan moeten gebruiken GEENFORMAAT).

Declareer @pathBackup als varchar(55) set @pathBackup = N"C:\Backup\[DB-bestandsnaam]_" + REPLACE(convert(varchar,GETDATE(), 104),".","_") + " .bak" BACKUP DATABASE [Databasenaam] TO DISK = @pathBackup WITH DIFFERENTIAL, NOFORMAT, INIT, NAME = N"Full Database Backup", SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM GO declare @backupSetId as int declare @pathBackup als varchar(55) set @pathBackup = N"C:\Backup\[DB-bestandsnaam]_" + REPLACE(convert(varchar,GETDATE(), 104),".","_") + ".bak" selecteer @backupSetId = positie uit msdb..backupset waarbij database_name=N"[Databasenaam]" en backup_set_id=(selecteer max(backup_set_id) uit msdb..backupset waarbij database_name=N"[Databasenaam]") als @backupSetId nul is begin raiserror(N"Verificatiefout. Back-upinformatie voor database '[Databasenaam]' is niet gevonden.", 16, 1) end RESTORE VERIFYONLY FROM DISK = @pathBackup WITH FILE = @backupSetId, NOUNLOAD, NOREWIND GO

3. Systeemdatabases
Ik raad ten zeerste aan om naast de hoofddatabase en de bijbehorende bestanden ook kopieën van de systeemdatabases te maken. Laten we beginnen met te kijken welke databases er in MS SQL bestaan. Er zijn er maar 5:

Ik heb ervoor gekozen om slechts van twee systeemdatabases een back-up te maken:

  1. msdb - omdat geconfigureerde taken en andere daar worden opgeslagen
  2. master – alle geconfigureerde SQL Server-instellingen worden opgeslagen.
Deze informatie is nog steeds niet erg kritisch en kan handmatig worden hersteld, maar waarom zou u extra tijd verspillen als u deze eenvoudigweg van een reservekopie kunt halen.
4. Back-upplan
Op basis van bovenstaande stellen wij ons databack-upplan op. Het kan verschillen van wat u nodig heeft, het hangt allemaal af van de vereisten voor databaseherstel. Bij het opstellen van het plan moest ik er rekening mee houden dat het nodig was om de data zoveel mogelijk te herstellen en dat het dataverlies niet meer dan een uur bedroeg.

Wij maken de volgende back-ups:

  • Een volledige kopie van de hoofddatabase, vaker dan één keer per week, is niet nodig
  • Differentiële kopie van de hoofddatabase, elke dag
  • Kopieën van het transactielogboek van de hoofddatabase, elk uur
  • Kopie van de hoofdsysteemdatabase, één keer per week
  • Kopie van de msdb-systeemdatabase, één keer per week
Als gevolg hiervan kwamen we uit op het volgende gegevensback-upplan:
Dag van de week
Tijd
Acties
Frequentie
Beschrijving
Maandag - vrijdag
Van 8-00 tot 21-00
Back-ups

Transactielogboek

Elk uur
Na het uitvoeren van een databaseback-up wordt het transactielogboek gecomprimeerd en ingekort
Zaterdag - zondag
Van 8.00 tot 18.00 uur
Maandag - zondag
22-00
Differentiële kopie van de hoofddatabase
1 keer per dag
Nadat een succesvolle differentiële kopie is uitgevoerd, worden alle oude kopieën van het transactielogboek verwijderd
Zaterdag
12-00
Databasecontrole
1 keer per dag
Het controleren van de database op integriteit.
Zaterdag
18-00
Een volledige kopie van de database maken
1 keer per dag
Na voltooiing van deze handeling wordt er een melding per e-mail verzonden.

Als de back-up met succes is gemaakt, wordt deze verwijderd

  • oude volledige back-up
  • alle oude differentiële kopieën
  • alle oude transactielogboeken
Maandag - zondag
23-30
Een kopie maken van de hoofdsysteemdatabase
1 keer per dag

Zondag
12-30
Een kopie maken van de msdb-systeemdatabase
1 keer per maand
Alleen het laatste exemplaar van de database wordt altijd opgeslagen
  1. Gebruik de optie BACK-UP MET CHECKSUM
    om er zeker van te zijn dat alles goed ging. Het nadeel van deze oplossing is dat het controleren van de controlesom bij grote databases een aanzienlijke belasting voor het systeem kan zijn.
  2. Maak geen back-up van bestanden op dezelfde fysieke schijf waarop de database of het transactielogboek is opgeslagen.
  3. Als u MS SQL 2008 of hoger gebruikt, raad ik u aan SQL-back-upcompressie te gebruiken. De volgende code schakelt standaard compressie in: USE master; GO EXEC sp_configure ‘standaard back-upcompressie’, “1”; HERCONFIGUREER MET OVERRIDE;
  4. Bewaar back-ups meerdere dagen achter elkaar, voor het geval een ervan beschadigd raakt: een oude back-up is beter dan geen back-up.
  5. Gebruik DBCC CHECKDB Als u elke database wilt controleren voordat u deze kopieert, wordt u zo snel mogelijk gewaarschuwd voor dreigende problemen. DBCC CHECKDB("Databasenaam") WITH NO_INFOMSGS, ALL_ERRORMSGS; Opmerking: In de praktijk gebruikten we deze controle alleen voordat we een volledige back-up maakten.
  6. Update regelmatig statistieken en reorganiseer database-indexen

De applicatie gebruiken

Een paar nuances over de toepassing:
  • Alle teksten en vragen in de code zijn opgenomen in de bronnen, dat was gemakkelijker voor mij
  • Wanneer u verbindingsparameters en andere instellingen invoert, worden deze in een bestand opgeslagen. Voor Express en Standard worden verschillende bestanden gebruikt (dbStandart, udExpress) en daarin wordt de klasse UserData opgeslagen
  • Voor sommige bewerkingen zijn mogelijk beheerdersrechten vereist
  • Op dit moment werkt de verbinding met de database onder een domeinaccount niet
  • Het programma heeft geen super mooie interface
1. Beheermelding instellen
Ik was te lui om elke keer op de server in te loggen en te controleren of de taak werkte of dat er een fout was opgetreden. En ik wilde andere meldingen kunnen ontvangen, niet alleen over de voltooiing van taken.

Hiervoor wordt DatabaseMail MS SQL gebruikt (voor Standaardversie en hoger)
In mijn applicatie heb ik een speciale sectie gemaakt om deze taak te automatiseren

Wanneer erop wordt geklikt, verschijnt er een formulier waarin u de informatie kunt invullen die nodig is om een ​​mailingprofiel aan te maken:

De applicatie wordt automatisch geconfigureerd op standaard SMTP-poort 25 voor het adres waarvandaan brieven worden verzonden. Indien nodig kan dit worden gewijzigd in de sysmail_add_account_sp procedure
Een gebruiker en wachtwoord zijn vereist als voor de e-mailservice verificatie is geconfigureerd.

De operatornaam in het systeem wordt aangegeven zodat we op de juiste manier een profiel kunnen aanmaken in DatabaseMail. Schrijf een naam op die voor u duidelijk zal zijn. Hieronder ziet u een voorbeeld van een ingevuld formulier.

  1. MS SQL-systeemparameters veranderen.
  2. DatabaseMail-profiel is gemaakt
  3. Geactiveerd in SQL Agente-profiel
  4. DatabaseMail-account is aangemaakt
  5. DatabaseMail-account toevoegen aan database-e-mailprofiel
  6. DatabaseMail-operator is gemaakt
Het wordt in het volgende artikel gedetailleerder beschreven en gedeeltelijk heb ik het hier overgenomen. Uiteraard kunnen deze acties worden uitgevoerd met behulp van SSMS.
2.Aanvullende mededelingen voor de beheerder
Het programma biedt twee taken die op de database worden toegepast:
  1. het controleren van de integriteit van de database. Voor het controleren van de database is gebruik gemaakt van de standaardprocedure DBCC CHECKDB.
  2. informeren over vrije ruimte in bestandsgroepen.
  3. De tweede taak werd geïmplementeerd met behulp van een query naar de systeemtabel dbo.sysfiles
  4. Hier is een voorbeeld van deze query die werd uitgevoerd op de database:
Selecteer NAAM = left(a.NAME,15), a.FILEID, = convert(decimaal(12,2),round(a.size/128.000,2)), = convert(decimaal(12,2),round( bestandsproperty(a.naam,"SpaceUsed")/128.000,2)), = convert(decimaal(12,2),round((a.size-fileproperty(a.name,"SpaceUsed"))/128.000,2) ), FILENAME = a.FILENAME Van dbo.sysfiles a
Het antwoord van de server komt in de vorm van HTML-opmaak naar de e-mail van de beheerder. Deze syntaxis is mogelijk dankzij de volgende standaard MS SQL FOR XML-functie.

Terwijl ik zocht hoe ik het geretourneerde resultaat van zoekopdrachten naar HTML-tekst kon converteren, kwam ik de volgende pagina tegen, waar iemand een hele procedure voor deze doeleinden had gemaakt
U kunt deze bewerkingen configureren met behulp van het overeenkomstige item in het programmamenu:

Er verschijnt een venster waarin wordt aangegeven naar welke mailbox de html-tekst van het rapport moet worden verzonden:

3. Problemen oplossen bij het opzetten van DatabaseMail
In MS SQL 2008 kwam ik een probleem tegen bij het instellen van SQL Server Agent. De symptomen zijn als volgt: na configuratie is het onmogelijk om SQL Agent te starten. Dit wordt voornamelijk opgelost door update op de SQL-server te installeren.

Als deze updates niet helpen, moet u de oplossing downloaden. Het is te vinden op deze site; ik kan de laatste link nu niet geven; om bij het fixpakket te komen, moet je een aantal vragen beantwoorden.
Als er problemen zijn met de DatabaseMail-module. Nadat u deze module hebt ingesteld met behulp van de applicatie, moet u naar SQL Agent gaan en het gebeurtenislogboek bekijken. Als er fouten zijn “Kan geen verbinding maken met de mailbox”. Dit betekent dat er een probleem is, zelfs als de brief via verificatie is verzonden.

Dit kan worden gecorrigeerd door de volgende manipulaties:

  1. Management Studio - SQL Server Agent - Eigenschappen.
  2. Waarschuwingssysteem
  3. Schakel het selectievakje E-mailprofiel inschakelen uit
  4. Klik op OK
  5. Log opnieuw in en vink het vakje aan
  6. Start SQL Server Agent opnieuw.
Controleer uw account op de SQL Agent-service. Als dit een domeinaccount is, wijzig dit dan in een systeemaccount of andersom. Alles zou moeten werken.
4. Back-up instellen met behulp van de SQL Standard-applicatie:
Selecteer de standaardversie. Meldingen instellen. (zie sectie, meldingsinstellingen):

We maken verbinding met de database, vullen de verbindingsgegevens in en specificeren de database waarvoor de vacature zal worden gebruikt:

Selecteer de back-upinstelling:

Geef de paden op voor het opslaan van databasekopieën. Als de opgegeven mappen niet bestaan, probeert het programma deze aan te maken (de juiste rechten zijn vereist).

Klik op Opslaan en de bijbehorende taken worden in de database geconfigureerd. Het is raadzaam om voor elke back-up verschillende mappen te configureren, omdat... Bij het verwijderen worden alle bestanden met de bak-extensie verwijderd. (cm. sectie databasekopieën verwijderen)

5. Back-up instellen met de SQL Express-applicatie:
Omdat SQL Express geen SQL Agent heeft, moest de taak van het automatiseren van back-ups op een andere manier worden opgelost. Er wordt een bat-bestand gemaakt in de door de gebruiker opgegeven map, waarin de SQL-query wordt beschreven die verantwoordelijk is voor het maken van de back-up. Indien nodig kunt u deze direct bewerken. Daarnaast zou de standaard Windows-planner moeten werken; deze creëert een taak die één keer per dag op het opgegeven tijdstip wordt uitgevoerd.

Om dit te doen, start u de applicatie. Selecteer MS SQL Express:

Er verschijnt een formulier voor het invullen van de parameters:

We geven aan waar onze kopie zal worden opgeslagen, evenals waar het bat-bestand zich zal bevinden om een ​​kopie van de database te maken (het is niet nodig om de bestandsnaam op te geven, deze wordt automatisch gespecificeerd). Vervolgens specificeren we de verbindingsinstellingen en het tijdstip waarop de taak moet worden gestart.

Het enige nadeel van deze aanpak is dat het wachtwoord voor verbinding met de database in leesbare tekst moet worden opgeslagen.

6. Taken uit de database verwijderen.
Als u alle taken uit de database wilt verwijderen (u wilde bijvoorbeeld de paden wijzigen om de database op te slaan). Gebruik hiervoor het overeenkomstige item in het programmamenu. Alle taken met een bepaald startvoorvoegsel (in mijn geval King) worden verwijderd uit SQL Agent:

7. Databasekopieën verwijderen
Bij sommige taken zijn oude databasekopieën geconfigureerd om te worden verwijderd. Om dit te doen gebruik ik de master.dbo.xp_delete_file procedure. Gebruiksvoorbeeld: verwijdert alle bestanden met de bak-extensie uit de opgegeven map waarvan de aanmaakdatum meer dan 14 dagen oud is.
UITVOEREN master.dbo.xp_delete_file 0,"E:\backups",N"bak",dateadd(d,-14,getdate()),0;
En hier is nog een gedetailleerder voorbeeld en informatie over welke parameters deze functie gebruikt.

Hoe u back-ups kunt herstellen

Wegens tijdgebrek is de herstelmodule nog niet geïmplementeerd, misschien zal ik deze in de toekomst toevoegen, maar voor nu zal ik eenvoudigweg kort beschrijven hoe de database kan worden hersteld.

Met behulp van SQL-script. Gebruik de opdracht RESTORE om een ​​database te herstellen.

Als u alleen de database vanaf een volledige kopie wilt herstellen, voert u gewoon het volgende script uit:
RESTORE DATABASE [Databasenaam] VAN DISK = "Z:\SQLServerBackups\back.bak" MET VERVANGEN
Als u achtereenvolgens een volledige kopie, differentiële kopieën en transactielogboeken wilt herstellen, moet u het volgende SQL-script schrijven.

HERSTEL DATABASE TEST_DB – een volledige kopie herstellen VAN test_db_full MET NORECOVERY; GA HERSTELLEN DATABASE TEST_DB – herstel van de verschilkopie VAN test_db_diff MET BESTAND = 1, NORECOVERY; GA HERSTELLEN LOG TEST_DB – herstel transactielogboek nr. 1 VAN test_db_tran_1 MET BESTAND = 1, MET NORECOVERY; GA HERSTELLEN LOG TEST_DB – transactielogboek nr. 2 herstellen VAN test_db_tran_2 MET BESTAND = 1, MET NORECOVERY; GA DATABASE TEST_DB HERSTELLEN MET HERSTEL; GAAN
U kunt SSMS ook gebruiken om de database te herstellen.

Tags: tags toevoegen

Het wordt aanbevolen om te configureren regelmatige databaseback-ups(in geval van hardware- of softwarefouten), en het is het beste om back-ups van de afgelopen paar dagen te bewaren, bijvoorbeeld zeven (voor de afgelopen week).

Om dit te doen, kunt u de in SQL Server ingebouwde taakplanner gebruiken - "SQL Server Agent" (niet inbegrepen in de gratis versie), of de standaard "Windows Scheduler" in combinatie met het hulpprogramma SQLCMD.EXE, waarmee u voer query's uit naar SQL Server vanaf de opdrachtregel. In de planner moet u minimaal zeven taken aanmaken (één voor elke dag van de week), die elk (eenmaal per week) een van de zeven bestanden vervangen die de bijbehorende databaseback-up bevatten.

Daarnaast wordt aanbevolen om back-upbestanden niet alleen op de harde schijf van de computer waarop SQL Server is geïnstalleerd op te slaan, maar deze ook te dupliceren naar tape of de harde schijf van een andere computer in het netwerk. Om dit te doen, kunt u speciale software gebruiken waarmee u back-ups van de hele schijf kunt maken, of dezelfde planner gebruiken om bestanden naar tape of een andere computer te kopiëren (de tweede stap).

Windows Scheduler gebruiken (gratis versie)

Om een ​​taak in Windows Scheduler te maken, moet u:

Start het Kladblok-programma (Start->Alle programma's->Accessoires->Kladblok) en voer de volgende twee regels in, en sla ze vervolgens op als een batchbestand (*.BAT):

SQLCMD -S (lokaal) -E -Q "BACKUP DATABASE AltaSVHDb NAAR SCHIJF = "D:\BACKUP\ AltaSVHDb_monday.bak" MET INIT, NOFORMAT, SKIP, NOUNLOAD"
XCOPY D:\BACKUP\ AltaSVHDb_monday.bak \\BACKUP_SERVER\Map\*.* /Y

Waar "(lokaal)"- servernaam (als u een benoemd exemplaar van SQL Server installeert, moet u de volledige naam opgeven: “COMPAN_NAME\SQLEXPRESS”), "AltaSVHDb"- databasenaam, "D:\BACKUP\ AltaSVHDb_monday.bak"- de naam van het bestand waarvan u een reservekopie wilt maken (varieert per dag van de week), "BACKUP_SERVER"- de naam van de computer waarnaar extra kopiëren zal worden uitgevoerd, "Map"- een map op deze computer (deze moet gedeeld worden).

Start de wizard Taakplanning (Configuratiescherm->Geplande taken->Taak toevoegen) en klik op de knop “Volgende”:

Klik op de knop “Bladeren” en specificeer het pad naar het opdrachtbestand (*.BAT) dat in stap a is aangemaakt):

Geef een naam op voor de taak, selecteer de optie “wekelijks” en klik op de knop “Volgende”:

Vink het vakje aan naast de gewenste dag van de week en specificeer in het veld “Starttijd” het tijdstip waarop het back-upproces moet starten (meestal gebeurt dit ‘s nachts) en klik vervolgens op de knop “Volgende”:

Voer de gebruikersnaam en het wachtwoord (tweemaal) in van het OS-account waaronder de taak zal worden uitgevoerd en klik op de knop "Volgende":

Aandacht! Om de taak succesvol uit te voeren, moet u het hier opgegeven account (domein of lokale computer) schrijfrechten verlenen voor de bovenstaande map "\\BACKUP_SERVER\Map", en configureert u de toegang tot SQL Server zelf.

Klik op de knop “Voltooien”.

Opmerking. Om de functionaliteit van de aangemaakte taak te controleren, klikt u met de rechtermuisknop op de gewenste taak in de lijst met taken (Configuratiescherm->Geplande taken) en selecteert u “Uitvoeren” in het contextmenu. Zorg er vervolgens voor dat de databaseback-up bestand is met succes aangemaakt in de paden die zijn opgegeven in stap a).

"SQL Server Agent" gebruiken (niet inbegrepen in de gratis versie)

Om een ​​taak in SQL Server Agent te maken, moet u:

Start het hulpprogramma SQL Server Management Studio en maak verbinding met de server onder een beheerdersaccount.

Klik in het linkergedeelte van het venster met de rechtermuisknop op de sectie “Serverobjecten/Back-upapparaten” en selecteer “Een back-upapparaat maken” in het contextmenu:

Voer in het veld “Apparaatnaam” de naam in die aan het databaseback-upbestand wordt gekoppeld, wijzig indien nodig het pad in het veld “Bestand” en klik op “OK”:

Klik in het linkergedeelte van het venster met de rechtermuisknop op het gedeelte “SQL Server Agent/Taken” en selecteer “Taak maken” in het contextmenu:

Voer in het veld “Naam” de naam van de taak in:

Op de pagina “Stappen” klikt u op de knop “Maken”:

Voer in het venster dat verschijnt een naam in het veld "Stapnaam" in, zorg ervoor dat "Transact-SQL (T-SQL) Script" is geselecteerd in het veld "Type" en voer de regel in het veld "Opdracht" in :

BACK-UP DATABASE AltaSVHDb NAAR AltaSVHDb_monday MET INIT, NOFORMAT, SKIP, NOUNLOAD

Waar "AltaSVHDb"- databasenaam, "AltaSVHDb_maandag"- naam van het back-upapparaat dat is aangemaakt in stap c) (varieert per dag van de week):

Klik in het vorige venster op de knop "OK"; als resultaat zou de volgende regel op de pagina "Stappen" moeten verschijnen:

Om ervoor te zorgen dat het databaseback-upbestand onmiddellijk naar een andere computer op het netwerk wordt gekopieerd, moet u de stappen f) - h) in het venster "Een taakstap maken" herhalen, waarbij u de waarde "Besturingssysteem (CmdExec)" selecteert in het venster het veld ‘Type’ en specificeer in de veldregel ‘Opdracht’:

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

Waar "D:\MSSQL\BACKUP\AltaSVHDb_monday.bak"- het pad gespecificeerd in stap c) (varieert per dag van de week), "BACKUP_SERVER"- de naam van de computer waarnaar de kopie wordt gemaakt, "Map"- map op deze computer (moet gedeeld worden):

Opmerking. Om het bestand succesvol te kunnen kopiëren, moet u de “SQL Server Agent” uitvoeren onder een Windows-domeinaccount waaraan schrijfrechten zijn verleend voor de bovengenoemde map (zie ook “SQL2005_installation.doc” of “SQL2008_installation.doc” ), en ook de toegang tot de SQL-server zelf geconfigureerd (zie de sectie “Toegangsrechten tot de database configureren”, u moet dit account opnemen in de rol “sysadmin” op de pagina “Serverrollen” en niets doen op de pagina “Gebruiker Mapping” en “Beschermde objecten” pagina’s).

Op de pagina “Schedules” klikt u op de knop “Maken”:

Voer een naam in het veld "Naam" in, zorg ervoor dat "Terugkerende taak" is geselecteerd in het veld "Planningstype" en dat "Wekelijks" is geselecteerd in het veld "Uitvoeren". Vink het vakje aan naast de gewenste dag van de week (de rest uitvinken) en geef in het veld “Eenmalige taak” het tijdstip aan waarop het back-upproces moet starten (meestal gebeurt dit ‘s nachts):

Klik in het vorige venster op de knop "OK"; als resultaat zou de volgende regel op de pagina "Schema's" moeten verschijnen:

Klik op de knop "OK".

Opmerking. Om de functionaliteit van de gemaakte taak te controleren, klikt u met de rechtermuisknop op de taak van interesse in de sectie "SQL Server Agent/Taken" en selecteert u "Taak in één stap uitvoeren" in het contextmenu. Selecteer de eerste stap hiervan taak in het venster dat verschijnt en klik op “OK”. Vervolgens verschijnt er een venster waarin de voortgang van de taak wordt weergegeven. Als de taak eindigt met een fout, kan een gedetailleerde beschrijving van de fout worden bekeken door het item “Logboek bekijken” in hetzelfde contextmenu aan te roepen.

Hieronder vertellen wij u hoe u met het programma SQL Sever Management Studio een onderhoudsplan maakt. In dit artikel zal ik eenvoudigweg proberen het algoritme voor het maken van een onderhoudsplan met behulp van de Onderhoudsplanwizard duidelijk te beschrijven, zonder in te gaan op het theoretische deel van de kwestie. Voor meer informatie over dit onderwerp kunt u de SQL Server Books Online op MSDN raadplegen.

Het hieronder beschreven plan omvat slechts 2 taken.

  • Databaseback-up.
  • Controle van de integriteit van de database.

Ik hoop dat iedereen na het lezen van deze instructies in de toekomst zelfstandig het benodigde SQL-serveronderhoudsplan kan opstellen.

1. Initiële gegevens

  1. Besturingssysteem van de Windows-familie (in mijn voorbeeld wordt het gebruikt)
  2. Microsoft SQL Server 2008 R2 geïnstalleerd (u kunt lezen over het installeren van SQL Server)
  3. Een bestaande database in SQL Server (lees over het maken van databases in SQL Server)
  4. Geconfigureerde Database Mail-component, als u operators per e-mail op de hoogte moet stellen van de resultaten van het onderhoudsplan (ik schreef over hoe u de Database Mail-component configureert en een systeemoperator aanmaakt).

2. Controle van de werking van SQL Server Agent

Het eerste dat we moeten doen, is ervoor zorgen dat SQL Server Agent is geïnstalleerd en actief is. Om dit te doen, start u de apparatuur “ Diensten» (« Begin» ( Begin) — « Administratie» ( Administratieve hulpmiddelen) — « Diensten» ( Diensten)) en in de lijst met services vinden we de service “ SQL Server-agent» ( SQL Server-agent).

Laten we de eigenschappen van deze service openen (door er twee keer op te klikken) en ervoor zorgen dat:

  • Het opstarttype is " Automatisch"(Opstarttype: Automatisch);
  • Staat " Werken"(Servicestatus: Gestart);

Anders moet u de parameters wijzigen zoals in de bovenstaande schermafbeelding en de instellingen opslaan door op “ Toepassen" (Toepassen) .

Laten we nu het programma “SQL Sever Management Studio” (“ Begin» ( Begin) — « Alle programma's" (Alle programma's) - " Microsoft SQL Server 2008 R2» — « SQL Server 2008 R2-hulpprogramma's") en voer de autorisatiegegevens in.

Laten we er daarna nogmaals voor zorgen dat de SQL Server Agent actief is (er zou een tabblad in de Objectbrowser moeten zijn SQL Server-agent» (SQL Server Agent) met een groen pictogram aan de linkerkant.

3. Maak een onderhoudsplan

Laten we nu verder gaan met het maken van een onderhoudsplan. Open in de Objectverkenner het tabblad " Controle" (Beheer), klik met de rechtermuisknop op het tabblad " Serviceplannen"(Onderhoudsplannen) en selecteer in het contextmenu " Wizard Onderhoudsplan» (Onderhoudsplanwizard ) .

In de serviceplanwizard die wordt gestart, klikt u op de welkomstpagina op “ Volgende"(Volgende) en voer in het volgende venster de naam en beschrijving van het nieuwe plan in.

Vervolgens bepaalt u de planning waarop dit onderhoudsplan wordt uitgevoerd. Om dit te doen, zet u de schakelaar op “ Eén schema voor het hele plan of geen schema» ( Eén schema voor het hele plan of geen schema) en klik op " Wijziging…» (Wijzigen...) om een ​​schema toe te wijzen.

Het venster “ Eigenschappen taakschema". Hier stellen we de parameters in op basis waarvan het onderhoudsplan moet worden uitgevoerd en klikken op “ OK". In mijn voorbeeld is het:

  • Geëxecuteerd - " Wekelijks"(Komt voor - wekelijks);
  • Herhaalt elke - " 1 week"V" Zondag» (Keert elke keer terug: 1 week(en) op zondag);
  • Eén keer per dag uitvoeren om: — “2:00:00” (Komt één keer voor om: “2:00:00”);

Laten we er nogmaals voor zorgen dat het schema correct is ingesteld en klik op “ Volgende"(Volgende) .

Hier selecteren we de taken die ons onderhoudsplan zal uitvoeren. In mijn voorbeeld is het:

  1. Controleer de database-integriteit;
  2. De back-updatabase (volledig)

Houd er rekening mee dat er voor elke taak een korte beschrijving ervan staat in het onderstaande vak. Nadat u de vereiste taken hebt geselecteerd, klikt u op “ Volgende"(Volgende) .

Nu moet u de volgorde instellen waarin taken worden uitgevoerd met behulp van de " Omhoog…" (Omhoog) en " Omlaag…"(Naar beneden). Nadat u de bestelling heeft geplaatst, klikt u op “ Volgende"(Volgende) .

Hier moet u voor elke taak in het plan parameters instellen. De eerste taak op onze lijst is “ De database kopiëren (volledig)» (Back-up maken van database (volledig)).

Allereerst moet u de databases selecteren waarvan u een back-up wilt maken door op de lijstselectieknop te klikken " Specifieke databases"(Selecteer een of meer). Nadat u de databases hebt geselecteerd die nodig zijn voor de back-up, klikt u op “ OK» .

Hieronder stellen we de locatie en opslagperiode van back-upkopieën in, en stellen we ook aanvullende parameters in:

  1. Als u de schakelaar " Maak voor elke database een back-upbestand» (Maak een back-upbestand voor elke database), en wanneer de taak wordt uitgevoerd, worden er in de geselecteerde map verschillende back-upbestanden gemaakt met namen die overeenkomen met de namen van de databases. Welnu, het hijsen van de vlag “ Maak voor elke database een submap» (Maak een submap voor elke database) organiseert de bestanden in afzonderlijke mappen. Houd er rekening mee dat u de back-upbestandsextensie ingevuld moet laten.
  2. Het zetten van de vlag" De back-upset verloopt bijna" (Back-upset verloopt) vertelt de SQL-server wanneer deze set kan worden overschreven zonder expliciet de vervalcontrole over te slaan.
  3. Voor maximale betrouwbaarheid kunt u de vlag “ Controleer de integriteit van de back-up"(Controleer de integriteit van de back-up).
  4. Ik raad ook aan om de “ Back-ups comprimeren"(Back-up comprimeren) om schijfruimte te besparen als de versie van SQL Server die u gebruikt deze functie ondersteunt.

Als de schijfruimte beperkt is, kunt u ook één bestand selecteren om de back-up op te slaan, die wordt overschreven nadat elk onderhoudsplan is uitgevoerd. Om dit te doen, zet u de bijbehorende schakelaar op “ Maak een back-up van databases in een of meer bestanden" (Maak een back-up van databases in een of meer bestanden) en geef de juiste bestandsnaam op (let op: het back-upbestand moet worden opgegeven met de extensie .bak), en selecteer ook de " Overschrijven"als er back-upbestanden bestaan: overschrijven".

Nu is het de beurt aan de taak “ Database-integriteit controleren» (Databasecontrole-integriteit). Het enige wat u hoeft te doen is een database selecteren. In mijn voorbeeld is dit nog steeds dezelfde database als in de vorige stap. Nadat u de databases hebt gekozen, klikt u op “ Volgende"(Volgende).

Op de volgende pagina kunt u de map selecteren waar het taakuitvoeringslogboek wordt opgeslagen, en ook SQL Server opgeven om het rapport per e-mail te verzenden. Na het instellen van de parameters klikt u op “ Volgende"(Volgende).

Laten we alle serviceplaninstellingen opnieuw controleren en als alles correct is, klikt u op “ Klaar" (Finish).

De wizard begint met het opstellen van een onderhoudsplan. Als de wizard geen fouten detecteert, zien we een bericht over de succesvolle constructie van het plan. Anders moet u de fouten elimineren en de procedure opnieuw herhalen. Sluit het venster door op " te klikken Dichtbij"(Dichtbij).

4. Start het onderhoudsplan

Om het onderhoudsplan uit te voeren, gaan we naar het Microsoft SQL Server Management Studio-programma. Hier, door het tabblad te openen " Serviceplannen» (Onderhoudsplannen) we zullen ons nieuw gemaakte plan zien. Om de werking ervan te controleren, klikt u er met de rechtermuisknop op en selecteert u “ Uitvoeren"(Uitvoeren).

Hierna wordt het uitvoeringsvenster van het onderhoudsplan geopend, waarin na de vereiste tijd een melding over de succesvolle uitvoering zou moeten verschijnen.

En er zou een back-upbestand in de juiste mappen moeten verschijnen

en een logbestand voor de uitvoering van het plan.

Wanneer u dit bestand opent, zou u zoiets als dit moeten zien:

Zo ja, gefeliciteerd! Het SQL Server-onderhoudsplan is gemaakt en actief.

Heeft dit artikel je geholpen?

Ondanks het feit dat we in onze vorige materialen al de kwestie van het maken van back-ups van Microsoft SQL Server-databases hebben besproken, toonde de reactie van de lezer de noodzaak aan om volwaardig materiaal te creëren met een diepere studie van het theoretische gedeelte. De artikelen, geschreven met de nadruk op praktische instructies, stellen u inderdaad in staat snel back-ups in te stellen, maar leggen niet uit waarom u bepaalde instellingen kiest. Laten we proberen deze kloof te corrigeren.

Herstelmodellen

Voordat u een back-up instelt, moet u een herstelmodel selecteren. Om de optimale keuze te maken, moet u de herstelvereisten en de ernst van gegevensverlies evalueren en deze vergelijken met de overheadkosten van de implementatie van een bepaald model.

Zoals u weet bestaat de MS SQL-database uit twee delen: de database zelf en het transactielogboek daarvoor. De database bevat gebruikers- en servicegegevens van het huidige moment, het transactielogboek bevat de geschiedenis van alle wijzigingen aan de database gedurende een bepaalde periode, met het transactielogboek kunnen we de status van de database terugdraaien naar elk willekeurig tijdstip.

Er zijn twee herstelmodellen beschikbaar voor gebruik in productieomgevingen: eenvoudig en compleet. Er is ook een model met onvolledige registratie, maar het wordt alleen aanbevolen als aanvulling op het volledige model voor perioden van grootschalige massa-operaties waarin het niet nodig is de basis op een bepaald moment te herstellen.

Eenvoudig model voorziet in een back-up van alleen de database; dienovereenkomstig kunnen we de status van de database alleen herstellen op het moment dat de back-up werd gemaakt; alle wijzigingen in de periode tussen het maken van de laatste back-up en de fout gaan verloren. Tegelijkertijd heeft een eenvoudig schema weinig overhead: u hoeft alleen kopieën van de database op te slaan; het wordt automatisch ingekort en groeit niet in omvang. Bovendien is het herstelproces het eenvoudigst en kost het niet veel tijd.

Volledig model Hiermee kunt u de database op elk willekeurig tijdstip herstellen, maar vereist dit, naast databaseback-ups, dat u kopieën van het transactielogboek opslaat gedurende de gehele periode waarvoor herstel nodig kan zijn. Bij actief werken met de database kan de omvang van het transactielogboek, en bijgevolg de omvang van de archieven, grote afmetingen bereiken. Het herstelproces is ook veel complexer en tijdrovender.

Wanneer u een herstelmodel kiest, moet u de herstelkosten vergelijken met de kosten voor het opslaan van back-ups, en moet u ook rekening houden met de beschikbaarheid en kwalificaties van het personeel dat het herstel zal uitvoeren. Voor restauratie met een volledig model is het nodig dat het personeel over bepaalde kwalificaties en kennis beschikt, terwijl het bij een eenvoudig schema voldoende is om de instructies te volgen.

Voor databases waaraan een kleine hoeveelheid informatie is toegevoegd, kan het winstgevender zijn om een ​​eenvoudig model met een hoge kopieerfrequentie te gebruiken, waardoor u snel kunt herstellen en verder kunt werken door verloren gegevens handmatig in te voeren. Het volledige model moet in de eerste plaats worden gebruikt daar waar gegevensverlies onaanvaardbaar is en waar uiteindelijk herstel kostbaar zou zijn.

Soorten back-ups

Volledige kopie van de database- zoals de naam al doet vermoeden, vertegenwoordigt het de inhoud van de database en een deel van het actieve transactielogboek voor de tijd dat de back-up werd gemaakt (d.w.z. informatie over alle huidige en onvolledige transacties). Hiermee kunt u de database volledig herstellen tot het moment waarop de back-up is gemaakt.

Kopie van de Delta-database- een volledige kopie heeft één belangrijk nadeel: het bevat alle database-informatie. Als er vrij vaak back-ups moeten worden gemaakt, rijst onmiddellijk de kwestie van verspillend gebruik van schijfruimte, aangezien het grootste deel van de opslagruimte door dezelfde gegevens zal worden ingenomen. Om dit nadeel te elimineren, kunt u differentiële kopieën van de database gebruiken, die alleen informatie bevatten die sinds de laatste volledige kopie is gewijzigd.

Houd er rekening mee dat een differentiële kopie gegevens van de laatste keer zijn vol kopiëren, d.w.z. Elke volgende differentiële kopie bevat de gegevens van de vorige (maar deze kunnen worden gewijzigd) en de grootte van de kopie zal voortdurend toenemen. Om te herstellen is één volledige en één differentiële kopie, meestal de laatste, voldoende. Het aantal differentiële kopieën moet worden geselecteerd op basis van de toename van hun formaat; zodra de grootte van de differentiële kopie gelijk is aan de grootte van de helft van de volledige kopie, is het zinvol om een ​​nieuwe volledige kopie te maken.

Back-up van transactielogboek- is alleen van toepassing op het volledige herstelmodel en bevat een kopie van het transactielogboek vanaf het moment dat de vorige kopie werd gemaakt.

Het is belangrijk om het volgende punt te onthouden: kopieën van transactielogboeken zijn op geen enkele manier verbonden met databasekopieën en bevatten geen informatie uit eerdere kopieën. Om een ​​database te herstellen heeft u dus een ononderbroken reeks kopieën nodig voor de periode waarin u wilt om de status van de database terug te kunnen draaien. In dit geval moet het moment van de laatste succesvolle kopie binnen deze periode liggen.

Laten we naar de bovenstaande afbeelding kijken: als de eerste kopie van het logbestand verloren gaat, kunt u de status van de database alleen herstellen op het moment van de volledige kopie, wat vergelijkbaar zal zijn met het eenvoudige herstelmodel; kan de status van de database op elk moment alleen herstellen na de volgende differentiële (of volledige) kopie, op voorwaarde dat de keten van logkopieën, beginnend bij degene die voorafgaat aan het kopiëren van de database, en verder continu zal zijn (in de figuur - vanaf de derde en verder).

Transactielogboek

Om de herstelprocessen en het doel van verschillende soorten back-ups te begrijpen, moet u de structuur en werking van het transactielogboek nader bekijken. Een transactie is de minimaal mogelijke logische handeling die zinvol is en alleen volledig kan worden voltooid. Deze aanpak garandeert de integriteit en consistentie van gegevens in alle situaties, aangezien een tussenliggende status van de operatie onaanvaardbaar is. Een transactielogboek wordt gebruikt om eventuele wijzigingen in de database te controleren.

Wanneer een bewerking wordt uitgevoerd, wordt een record over het begin van de transactie toegevoegd aan het transactielogboek. Aan elk record wordt een uniek nummer (LSN) toegewezen uit een ononderbroken reeks. Wanneer er gegevens veranderen, wordt een overeenkomstige vermelding in het logbestand gemaakt. en nadat de bewerking is voltooid, verschijnt er een markering in het logboek die de afsluiting (vaststelling) van de transactie aangeeft.

Elke keer dat het systeem opstart, analyseert het het transactielogboek en draait het alle niet-vastgelegde transacties terug, terwijl tegelijkertijd de wijzigingen worden teruggedraaid die in het logboek zijn vastgelegd maar niet naar schijf zijn geschreven. Dit maakt het mogelijk om caching en lui schrijven te gebruiken zonder dat u zich zorgen hoeft te maken over de gegevensintegriteit, zelfs als er geen back-upstroomsystemen aanwezig zijn.

Het deel van het logboek dat actieve transacties bevat en wordt gebruikt voor gegevensherstel wordt het actieve deel van het logboek genoemd. Het begint met een nummer dat het minimum herstelnummer (MinLSN) wordt genoemd.

In het eenvoudigste geval is MinLSN het recordnummer van de eerste lopende transactie. Als je naar de afbeelding hierboven kijkt, krijgen we door het openen van de blauwe transactie een MinLSN gelijk aan 321. Nadat dit is vastgelegd in record 324, verandert het MinLSN-nummer in 323, wat overeenkomt met het nummer van de groene, niet maar toch toegewijd, transactie.

In de praktijk is alles iets ingewikkelder. De gegevens van een gesloten blauwe transactie zijn bijvoorbeeld nog niet naar schijf gespoeld en het verplaatsen van MinLSN naar 323 maakt herstel van deze operatie onmogelijk. Om dergelijke situaties te voorkomen werd het concept van een controlepunt geïntroduceerd. Er wordt automatisch een controlepunt gemaakt als de volgende omstandigheden zich voordoen:

  • Bij het expliciet uitvoeren van de CHECKPOINT-instructie. Het controlepunt wordt geactiveerd op de huidige verbindingsdatabase.
  • Wanneer u een minimaal geregistreerde bewerking uitvoert op een database, bijvoorbeeld wanneer u een bulkkopieerbewerking uitvoert op een database die valt onder het bulksgewijs geregistreerde herstelmodel.
  • Bij het toevoegen of verwijderen van databasebestanden met behulp van de ALTER DATABASE-instructie.
  • Wanneer u een exemplaar van SQL Server stopt met behulp van de SHUTDOWN-instructie of wanneer u de SQL Server-service (MSSQLSERVER) stopt. In beide gevallen wordt voor elke database in het SQL Server-exemplaar een controlepunt gemaakt.
  • Als uw exemplaar van SQL Server periodiek automatische controlepunten op elke database maakt om de hersteltijd van de database te verkorten.
  • Bij het maken van een databaseback-up.
  • Bij het uitvoeren van een actie waarbij de database moet worden afgesloten. Voorbeelden hiervan zijn het instellen van de parameter AUTO_CLOSE op ON en het sluiten van de laatste verbinding van de gebruiker met de database, of het wijzigen van een database-instelling waarvoor opnieuw opstarten van de database vereist is.

Afhankelijk van welke gebeurtenis het eerst heeft plaatsgevonden, wordt MinLSN ingesteld op het controlepuntrecordnummer of op het begin van de oudste lopende transactie.

Afkapping van het transactielogboek

Het transactielogboek vereist, net als elk ander logboek, periodieke opschoning van verouderde vermeldingen, anders zal het groeien en alle beschikbare ruimte in beslag nemen. Gezien het feit dat bij actief werken met de database de omvang van het transactielogboek de omvang van de database aanzienlijk kan overschrijden, is dit probleem voor veel beheerders relevant.

Fysiek gezien is het transactielogbestand een container voor virtuele logboeken, die opeenvolgend worden gevuld naarmate het logboek groeit. Het logische logboek met de MinLSN-vermelding is het begin van het actieve logboek; de logische logboeken die eraan voorafgaan, zijn inactief en zijn niet vereist voor automatisch databaseherstel.

Als er voor een eenvoudig herstelmodel wordt gekozen, wordt, wanneer de logische logbestanden een grootte bereiken die gelijk is aan 70% van het fysieke bestand, het inactieve deel van het logbestand automatisch gewist, het zogenaamde. inkorting. Hierdoor wordt het fysieke logbestand echter niet kleiner; alleen de logische logbestanden worden ingekort, die na deze bewerking opnieuw kunnen worden gebruikt.

Als het aantal transacties groot is en tegen de tijd dat 70% van de fysieke bestandsgrootte is bereikt, zijn er geen inactieve logische logs meer, dan zal de fysieke bestandsgrootte worden vergroot.

Het transactielogbestand met een eenvoudig herstelmodel zal dus groeien afhankelijk van de activiteit van het werken met de database totdat het op betrouwbare wijze het volledige actieve deel van het logboek bevat. Daarna stopt de groei.

Met het volledige model kan het inactieve gedeelte van het logboek pas worden ingekort als er een volledige back-up van is gemaakt. Logboekafkapping vindt plaats als er een back-up van het transactielogboek is gemaakt en er een controlepunt is gemaakt.

Een onjuiste configuratie van de back-up van transactielogboeken in een volledig model kan resulteren in een ongecontroleerde groei van logbestanden, wat vaak een probleem is voor onervaren beheerders. Ook kom je vaak advies tegen over het handmatig inkorten van het transactielogboek. Met een volledig herstelmodel mag dit niet categorisch worden gedaan, omdat dit de integriteit van de keten van logkopieën schendt en u de database alleen kunt herstellen op het moment dat de kopieën zijn gemaakt, wat overeenkomt met het eenvoudige model .

In dit geval is het tijd om te onthouden waar we het aan het begin van het artikel over hadden; de kosten van een volledig model zijn hoger dan de kosten van restauratie, de voorkeur moet worden gegeven aan een eenvoudig model.

Eenvoudig herstelmodel

Nu we het noodzakelijke minimum aan kennis hebben verkregen, kunnen we overgaan tot een meer gedetailleerde beschouwing van herstelmodellen. Laten we beginnen met een simpele. Laten we zeggen dat we op het moment van de storing één volledige en twee differentiële kopieën hebben:

Er werden eenmaal per dag back-ups gemaakt en de laatste kopie werd 's nachts van de 21e op de 22e gemaakt. De fout treedt op op de avond van de 22e voordat de volgende kopie wordt gemaakt. In dit geval moeten we achtereenvolgens de volledige en laatste differentiële kopieën herstellen, en de gegevens van de laatste werkdag gaan verloren. Als om wat voor reden dan ook de kopie van de 21e ook beschadigd blijkt te zijn, dan kunnen we de vorige kopie herstellen, waardoor we weer een werkdag kwijtraken, terwijl schade aan de kopie van de 20e ons op geen enkele manier zal beletten van het succesvol herstellen van de gegevens op de avond van de 21e, wanneer een overeenkomstig exemplaar beschikbaar is.

Volledig herstelmodel

Laten we een soortgelijke situatie bekijken, maar dan met behulp van het volledige herstelmodel. Daarnaast maken wij dagelijks backups, volgens het full+differentieel principe, en kopiëren wij ook meerdere keren per dag het transactielogboek.

Het herstelproces zal in dit geval ingewikkelder zijn. Allereerst moet u handmatig een back-up maken van de staart van de boomstam (weergegeven in rood), d.w.z. deel van het logboek vanaf het moment dat de laatste kopie werd gemaakt tot het ongeval.

Als dit niet gebeurt, is het mogelijk om de database alleen te herstellen naar de staat op het moment dat de laatste kopie van het transactielogboek werd gemaakt.

In dit geval zal schade aan het logkopiebestand van de vorige dag ons er niet van weerhouden de huidige status van de database te herstellen, maar zal het ons beperken tot het moment waarop de laatste kopie werd gemaakt, d.w.z. huidige dagen.

Vervolgens herstellen we achtereenvolgens de volledige en differentiële kopieën en de keten van kopieën van het logboek dat is gemaakt na de laatste back-up. De laatste die we herstellen is een kopie van het laatste fragment van het logboek, wat ons de mogelijkheid geeft om de database correct te herstellen ten tijde van het ongeval of een willekeurig ongeval dat daaraan voorafging.

Als de laatste differentiële kopie beschadigd is, zal dit in het geval van een eenvoudig model leiden tot het verlies van nog een werkdag; u kunt de voorlaatste kopie herstellen, waarna u de hele transactieketen moet herstellen log kopieën vanaf het moment van de voorlaatste kopie tot aan de storing. De diepte van het herstel hangt alleen af ​​van de diepte van de doorlopende keten van boomstammen.

Aan de andere kant, als een van de kopieën van het transactielogboek beschadigd is, bijvoorbeeld de voorlaatste, kunnen we de gegevens alleen herstellen tot het tijdstip van de laatste back-up + de periode in de intacte keten van logkopieën. Als de logs bijvoorbeeld om 12, 14 en 16 uur zijn gemaakt en de log die om 14 uur is gemaakt beschadigd is, kunnen we met een dagelijkse kopie de database herstellen tot het einde van de doorlopende keten, d.w.z. tot 12 uur.

  • Tags:

Schakel JavaScript in om de