Denne artikel forklarer trin for trin implementeringsprocessen af SQL Server Log-forsendelse. Det er en katastrofegendannelsesløsning på databaseniveau, der er nem at konfigurere og vedligeholde.
Logforsendelsen involverer tre trin:
- Generer log-backupen på den primære database.
- Kopiér sikkerhedskopien til netværksplaceringen eller den specifikke mappe på den sekundære server.
- Gendan log-backupen på den sekundære server.
Logforsendelsesteknologien udfører trinene beskrevet ovenfor ved at bruge SQL Server-agentjob. Under konfigurationsprocessen opretter logforsendelsesguiden disse job på primære og sekundære servere.
Logforsendelse kan være i to operationelle tilstande.
- Gendannelsestilstand . SQL-jobbet gendanner sikkerhedskopier af transaktionslogfiler på den sekundære database. Status for databasen er GENDANNELSE , og det er ikke tilgængeligt.
- Standbytilstand . SQL-jobbet gendanner transaktionslogsikkerhedskopier på den sekundære database, men databasen kan forblive i skrivebeskyttet tilstand. Derfor kan brugere udføre læseoperationer på den. Med denne mulighed kan vi aflæse rapporteringsapplikationen.
Bemærk:Standby-tilstanden har en ulempe:databasen er ikke tilgængelig under udførelsen af gendannelsesjob. Alle brugere, der er tilsluttet databasen, skal afbryde forbindelsen under denne proces. Ellers kan gendannelsesjobbet blive forsinket .
Den største ulempe ved logforsendelse er fraværet af automatisk failover-understøttelse. For at udføre en failover skal du udføre følgende trin:
- Generer en hale-log backup og kopier den til en sekundær databaseserver.
- Stop alle logforsendelsesjob på den primære server.
- Gendan loggen på den sekundære server.
Denne proces kan forsinke tilgængeligheden af den sekundære database.
Nu fortsætter vi til den trinvise undersøgelse af implementeringsprocessen. Først og fremmest har vi forberedt arbejdsstationen ved at indstille den på følgende måde:
Servernavn | Rolle |
SQL01 | Primær server |
SQL02 | Sekundær server |
iSCSI\SQL2017 | Overvågningsserver |
\\domæne\Sikkerhedskopiering af logforsendelser | Netværksdeling for at kopiere sikkerhedskopierne |
Konfigurer den primære server
SQL01 fungerer som en primær server og databasen. Vi skal konfigurere logforsendelse mellem AdventureWorks2017-databasen.
For at konfigurere logforsendelsen skal du oprette forbindelse til SQL01-forekomsten:
- Åbn SQL Server Management Studio
- Udvid database
- Højreklik på AdventureWorks2017
- Hold markøren over Opgaver
- Klik på Send transaktionslogs.
Databaseegenskaber dialogboksen åbnes.
For at aktivere logforsendelse skal du klikke på Aktiver dette som en primær database i en logforsendelseskonfiguration mulighed.
Klik på Sikkerhedskopieringsindstillinger for at konfigurere tidsplanen for sikkerhedskopiering af transaktionsloggen for logforsendelse .
En dialogboks, 'Indstilling for sikkerhedskopiering af transaktionslog' åbnes.
I dialogboksen skal du angive den netværksshare, hvor du vil kopiere transaktionslog-sikkerhedskopierne – Netværksstien til backup-mappen tekstboks. Du kan bestemme sikkerhedskopieringsperioden i Slet filer, der er ældre end angivet i tekstboksen. Hvis backup-jobbet mislykkes, eller backup-filen ikke forekommer i det tidsrum, der er angivet i tekstboksen, udløser SQL Server en advarsel.
Ved logforsendelse kopierer SQL Server logfil-sikkerhedskopierne til netværksdelingen. Guiden opretter automatisk et backupjob under installationsprocessen. Den laver også en tidsplan automatisk, men du kan ændre den ved at klikke på knappen Tidsplan.
I mit tilfælde har jeg ændret navnet på backup-jobbet for at identificere det. Jobnavnet er LogShipping_Backup_AdventureWorks2017 .
Jeg foretog ingen ændringer i jobplanen og indstillingerne for backupkomprimering.
Konfigurer den sekundære server
For at tilføje den sekundære server og database skal du klikke på "Tilføj" på Databaseegenskaber dialogboks.
En dialogboks med navnet Indstillinger for sekundære databaser vil åbne. Vi skal oprette forbindelse til den sekundære databaseserver. For at gøre det skal du klikke på "Tilføj."
En dialogboks åbnes. Indtast servernavnet, og klik på Opret forbindelse :
Konfiguration af sekundære databaseindstillinger
Initialiser sekundær database
På fanen initialiser sekundær database kan du konfigurere en af følgende tre muligheder for at gendanne databasen:
- Hvis databasen ikke findes på den sekundære server, kan du generere en fuld sikkerhedskopi og gendanne den på den sekundære server. I dette scenarie kan du bruge den første mulighed.
- Hvis der er en databases fulde backup genereret af andre backupjob, eller du allerede har en, kan du gendanne den på den sekundære server. I dette scenarie kan du vælge den anden mulighed.
- Hvis du har gendannet den sekundære database med NORECOVERY-tilstand, kan du vælge den tredje mulighed.
Kopiér filer
På Kopiér filer fanen, kan du angive destinationsmappen for kopierede backupfilers placering. Opbevaringsperioden er også defineret der.
Guiden opretter et SQL-job for at kopiere filer til destinationsmappen. Sikkerhedskopieringsdestinationsmappen er \\domain\Log Shipping Backups. Navnet på kopijobbet er LogShipping_Copy_SQL01_AdventureWorks2017 .
Gendan transaktionslog
I Gendan transaktionslog fanen, kan du angive databasetilstanden. Hvis du vil beholde databasen i skrivebeskyttet tilstand, skal du vælge Standbytilstand eller vælg Ingen gendannelsestilstand .
I denne demo beholder vi databasetilstanden som NORECOVERY. Du kan angive forsinkelsen af backupgendannelse og konfigurere advarsler for backups, der ikke er gendannet inden for et angivet interval. I vores tilfælde bruger vi ikke standardindstillinger.
Navnet på gendannelsesjobbet er LogShipping_Restore_SQL01_AdventureWorks2017.
Når konfigurationen er klar, skal du klikke på OK for at gemme ændringerne.
Som du kan se, er den sekundære server og database blevet tilføjet i "Sekundære serverforekomster og databasegitter ” på Databaseegenskaber skærm.
Konfigurer overvågningsforekomst
Hvis du vil konfigurere overvågningsserverforekomsten, skal du sætte et flueben for Brug en skærmserverinstans . Klik på Indstillinger for at tilføje skærmforekomsten .
Vi vil bruge iscsi\SQL2017-instansen som en overvågningsserver for logforsendelse.
I Log Shipping Monitor Indstilling dialogboksen skal du angive navnet i Monitor server-forekomsten tekstboks.
Vi bruger sa konto for at overvåge logforsendelsen. Derfor skal du give sa som brugernavn og adgangskode. Du kan også angive opbevaringsperioden for overvågningsalarmer og historik.
Her bruger vi standardindstillinger. Navnet på advarselsjobbet er LogShipping_Alert_iscsi\sql2017 .
Klik på OK for at gemme konfigurationen og lukke dialogboksen.
Du kan generere et T-SQL-script for hele konfigurationen ved at klikke på Script-konfiguration knap. Kopier enten konfigurationsscriptet til udklipsholderen eller filen, eller åbn det i et nyt forespørgselsredigeringsvindue.
Vi ønsker ikke at skrive handlingen ud. Du kan ignorere dette trin.
Klik på OK for at gemme logforsendelseskonfigurationen, og processen starter:
Når logforsendelse er konfigureret, kan du se succesdialogboksen:
Test failover-scenarie
USE [AdventureWorks2017]
GO
CREATE TABLE [Person](
[BusinessEntityID] [int] NOT NULL,
[PersonType] [nchar](2) NOT NULL,
[NameStyle] [dbo].[NameStyle] NOT NULL,
[Title] [nvarchar](8) NULL,
[FirstName] [dbo].[Name] NOT NULL,
[MiddleName] [dbo].[Name] NULL,
[LastName] [dbo].[Name] NOT NULL,
[Suffix] [nvarchar](10) NULL,
[EmailPromotion] [int] NOT NULL,
[ModifiedDate] [datetime] NOT NULL,
CONSTRAINT [PK_Person_BusinessEntityID] PRIMARY KEY CLUSTERED
(
[BusinessEntityID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Udfør følgende forespørgsel for at indsætte demodata:
insert into [Person]([BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName] ,[MiddleName],[LastName] ,[Suffix] ,[EmailPromotion],[ModifiedDate])
select top 10 [BusinessEntityID],[PersonType],[NameStyle],[Title],[FirstName] ,[MiddleName],[LastName] ,[Suffix] ,[EmailPromotion],[ModifiedDate]
from Person.Person
For at udføre failover skal du tage en tail-log backup af adventureworks2017 databasen. Udfør følgende forespørgsel:
Backup Log adventureworks2017 to disk='\\domain\LogShippingBackups\Tail_Log_Backup.trn' with norecovery
Opret forbindelse til SQL02 (sekundær server) og gendan halelog-backupen ved hjælp af RESTORE WITH RECOVERY. Udfør følgende kode:
RESTORE LOG [AdventureWorks2017] FROM DISK = N'\\domain\LogShippingBackups\Tail_Log_Backup.trn' WITH RECOVERY
Når tail-log backup gendannes korrekt, skal du udføre forespørgslen for at bekræfte, at data er kopieret til den sekundære server:
Select * from person
Forespørgselsoutput:
Som du kan se, gendannes dataene på den sekundære server.
Konklusion
I denne artikel har vi forklaret SQL Server-logforsendelsesprocessen, og hvordan den konfigureres. Vi demonstrerede også den trinvise failover-proces for logforsendelsen.