sql >> Database >  >> RDS >> Sqlserver

SQL Server-logboekverzending configureren

In dit artikel wordt het stapsgewijze implementatieproces van de verzending van SQL Server Log uitgelegd. Het is de noodhersteloplossing op databaseniveau die eenvoudig is in te stellen en te onderhouden.

De verzending van het log omvat drie stappen:

  1. Genereer de logback-up op de primaire database.
  2. Kopieer de back-up naar de netwerklocatie of de specifieke map op de secundaire server.
  3. Herstel de logback-up op de secundaire server.

De technologie voor het verzenden van logboeken voert de hierboven beschreven stappen uit met behulp van SQL Server-agenttaken. Tijdens het configuratieproces creëert de wizard voor het verzenden van logbestanden die taken op primaire en secundaire servers.

Log verzending kan in twee operationele modi zijn.

  • Herstelmodus . De SQL-taak herstelt back-ups van transactielogboeken in de secundaire database. De status van de database is HERSTELLEN , en het is niet toegankelijk.
  • Standby-modus . De SQL-taak herstelt back-ups van transactielogboeken op de secundaire database, maar de database kan in de alleen-lezen modus blijven. Daarom kunnen gebruikers er leesbewerkingen op uitvoeren. Met deze optie kunnen we de rapportage-applicatie ontladen.

Opmerking:de Standby-modus heeft een nadeel:de database is niet beschikbaar tijdens het uitvoeren van de hersteltaak. Alle gebruikers die met de database zijn verbonden, moeten tijdens dat proces de verbinding verbreken. Anders kan de hersteltaak worden uitgesteld .

Het grootste nadeel van het verzenden van logbestanden is de afwezigheid van automatische failover-ondersteuning. Om een ​​failover uit te voeren, moet u de volgende stappen uitvoeren:

  1. Genereer een back-logback-up en kopieer deze naar een secundaire databaseserver.
  2. Stop alle logboekverzendingstaken op de primaire server.
  3. Herstel het logboek op de secundaire server.

Dit proces kan de beschikbaarheid van de secundaire database vertragen.

Nu gaan we verder met het stapsgewijze onderzoek van het implementatieproces. Allereerst hebben we het werkstation voorbereid door het op de volgende manier in te stellen:

Servernaam Rol
SQL01 Primaire server
SQL02 Secundaire server
iSCSI\SQL2017 Bewakingsserver
\\domain\Log verzendback-ups Netwerkshare om de back-ups te kopiëren

Configureer de primaire server

De SQL01 fungeert als een primaire server en de database. We gaan Logboekverzending instellen tussen de AdventureWorks2017-database.

Om de Logboekverzending te configureren, maakt u verbinding met de SQL01-instantie:

  1. SQL Server Management Studio openen
  2. Database uitbreiden
  3. Klik met de rechtermuisknop op AdventureWorks2017
  4. Beweeg over taken
  5. Klik op Transactielogboeken verzenden.

De Database-eigenschappen dialoogvenster wordt geopend.

Om logboekverzending in te schakelen, klikt u op Dit inschakelen als primaire database in een configuratie voor logboekverzending optie.

Om het back-upschema van het transactielogboek voor verzending van het logboek te configureren, klikt u op Back-upinstellingen .

Er wordt een dialoogvenster geopend, 'Back-upinstelling transactielogboek'.

Geef in het dialoogvenster de netwerkshare op waarnaar u de back-ups van het transactielogboek wilt kopiëren:het Netwerkpad naar back-upmap tekstvak. U kunt de bewaarperiode voor back-ups bepalen in Bestanden verwijderen die ouder zijn dan vermeld in het tekstvak. Als de back-uptaak ​​mislukt of het back-upbestand niet wordt uitgevoerd gedurende de tijd die is opgegeven in het tekstvak, geeft de SQL Server een waarschuwing.

Bij verzending van logbestanden kopieert SQL Server de back-ups van logbestanden naar de netwerkshare. De wizard maakt automatisch een back-uptaak ​​tijdens het implementatieproces. Het maakt ook automatisch een schema, maar je kunt het wijzigen door op de knop Schema te klikken.

In mijn geval heb ik de naam van de back-uptaak ​​gewijzigd om deze te identificeren. De naam van de taak is LogShipping_Backup_AdventureWorks2017 .

Ik heb geen wijzigingen aangebracht in het taakschema en de instellingen voor back-upcompressie.

Configureer de secundaire server

Om de secundaire server en database toe te voegen, klikt u op "Toevoegen" op de Database-eigenschappen dialoogvenster.

Een dialoogvenster met de naam Secundaire database-instellingen zal openen. We moeten verbinding maken met de secundaire databaseserver. Klik hiervoor op 'Toevoegen'.

Er wordt een dialoogvenster geopend. Voer de servernaam in en klik op Verbinden :

Configuratie secundaire database-instellingen

Secundaire database initialiseren

Op het tabblad secundaire database initialiseren kunt u een van de volgende drie opties instellen om de database te herstellen:

  1. Als de database niet bestaat op de secundaire server, kunt u een volledige back-up maken en deze terugzetten op de secundaire server. In dit scenario kunt u de eerste optie gebruiken.
  2. Als er een volledige back-up van een database is die is gegenereerd door andere back-uptaken, of als u er al een hebt, kunt u deze herstellen op de secundaire server. In dit scenario kunt u de tweede optie kiezen.
  3. Als u de secundaire database met de NORECOVERY-status hebt hersteld, kunt u de derde optie kiezen.

Bestanden kopiëren

Op de Bestanden kopiëren tabblad, kunt u de doelmap voor de locatie van de gekopieerde back-upbestanden specificeren. Daar wordt ook de bewaartermijn gedefinieerd.

De wizard maakt een SQL-taak om bestanden naar de doelmap te kopiëren. De back-upbestemmingsmap is \\domain\Log Shipping Backups. De naam van de kopieertaak is LogShipping_Copy_SQL01_AdventureWorks2017 .

Transactielogboek herstellen

In het Transactielogboek herstellen tabblad, kunt u de databasemodus specificeren. Als u de database in alleen-lezen modus wilt houden, selecteert u Standby-modus of kies de Geen herstelmodus .

In deze demo behouden we de databasestatus als NORECOVERY. U kunt de vertraging voor het herstellen van back-ups specificeren en waarschuwingen configureren voor back-ups die niet binnen een opgegeven interval zijn hersteld. In ons geval gebruiken we geen standaardinstellingen.

De naam van de hersteltaak is LogShipping_Restore_SQL01_AdventureWorks2017.

Zodra de configuratie gereed is, klikt u op OK om de wijzigingen op te slaan.

Zoals u ziet, zijn de secundaire server en database toegevoegd in "Secundaire serverinstanties en databases raster ” op de Database-eigenschappen scherm.

Controle-instantie configureren

Als u de Monitor-serverinstantie wilt configureren, plaatst u een vinkje bij Gebruik een monitorserverinstantie . Om de monitorinstantie toe te voegen, klikt u op Instellingen .

We gaan de instantie iscsi\SQL2017 gebruiken als een monitoringserver voor de verzending van logbestanden.

In de Instelling Verzendmonitor loggen dialoogvenster, geef de naam op in het Monitor server-exemplaar tekstvak.

We gebruiken de sa account om de verzending van het logboek te controleren. Daarom moet u sa . opgeven als gebruikersnaam en wachtwoord. U kunt ook de bewaarperiode van de monitoringwaarschuwingen en -geschiedenis specificeren.

Hier gebruiken we standaardinstellingen. De naam van de waarschuwingstaak is LogShipping_Alert_iscsi\sql2017 .

Klik op OK om de configuratie op te slaan en het dialoogvenster te sluiten.

U kunt een T-SQL-script genereren voor de gehele configuratie door op de Scriptconfiguratie te klikken knop. Kopieer het configuratiescript naar het klembord of het bestand of open het in een nieuw query-editorvenster.

We willen de actie niet scripten. U kunt deze stap negeren.

Klik op OK om de verzendconfiguratie van het logbestand op te slaan en het proces begint:

Zodra Logboekverzending is geconfigureerd, kunt u het dialoogvenster voor succes zien:

Testfailoverscenario

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

Voer de volgende query uit om demogegevens in te voegen:

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

Om een ​​failover uit te voeren, maakt u een back-logback-up van de adventureworks2017-database. Voer de volgende vraag uit:

Backup Log adventureworks2017 to disk='\\domain\LogShippingBackups\Tail_Log_Backup.trn' with norecovery

Maak verbinding met de SQL02 (secundaire server) en herstel de back-up van het staartlogboek met HERSTEL MET HERSTEL. Voer de volgende code uit:

RESTORE LOG [AdventureWorks2017] FROM  DISK = N'\\domain\LogShippingBackups\Tail_Log_Backup.trn' WITH  RECOVERY

Zodra de back-logback-up succesvol is hersteld, voert u de query uit om te controleren of de gegevens naar de secundaire server zijn gekopieerd:

Select * from person

Query-uitvoer:

Zoals je ziet, worden de gegevens hersteld op de secundaire server.

Conclusie

In dit artikel hebben we het verzendproces van SQL Server-logboeken uitgelegd en uitgelegd hoe u dit kunt configureren. We hebben ook het stapsgewijze failoverproces van de verzending van logbestanden gedemonstreerd.


  1. Room - Gebruik van externe SQLites en interne DB

  2. Wereldback-updag:4 interessante feiten over gegevensverlies om te weten

  3. Deel 3 – Klanten, oproepen en vergaderingen

  4. Tupels gebruiken in de SQL IN-clausule