Felügyelt Azure SQL-példány biztonsági mentési tevékenységének monitorozása

A következőre vonatkozik: Felügyelt Azure SQL-példány

Ez a cikk bemutatja, hogyan figyelheti a felügyelt Azure SQL-példány biztonsági mentési tevékenységeit az msdb adatbázis lekérdezésével vagy a kiterjesztett esemény (XEvent) munkamenetek konfigurálásával.

Áttekintés

Az Azure SQL Managed Instance a biztonsági mentési adatokat az msdb adatbázisban tárolja, és jelentéskészítés céljából a biztonsági mentési tevékenység során eseményeket (más néven bővített eseményeket vagy XEventeket) is létrehoz. Konfiguráljon egy XEvent-munkamenetet az olyan információk nyomon követéséhez, mint a biztonsági mentés állapota, a biztonsági mentés típusa, a méret, az idő és a hely az msdb adatbázisban. Ezek az adatok integrálhatók a biztonságimentés-monitorozási szoftverekkel, és a vállalati naplózáshoz is felhasználhatók.

A vállalati naplózáshoz szükség lehet a sikeres biztonsági mentések ellenőrzésére, a biztonsági mentés időpontjára és a biztonsági mentés időtartamára.

Msdb-adatbázis lekérdezése

A biztonsági mentési tevékenység megtekintéséhez futtassa a következő lekérdezést a felhasználó által definiált adatbázisból:

SELECT TOP (30) bs.machine_name, bs.server_name, DB_NAME(DB_ID(bs.database_name)) AS [Database Name], bs.recovery_model,
CONVERT (BIGINT, bs.backup_size / 1048576 ) AS [Uncompressed Backup Size (MB)],
CONVERT (BIGINT, bs.compressed_backup_size / 1048576 ) AS [Compressed Backup Size (MB)],
CONVERT (NUMERIC (20,2), (CONVERT (FLOAT, bs.backup_size) /
CONVERT (FLOAT, bs.compressed_backup_size))) AS [Compression Ratio], bs.has_backup_checksums, bs.is_copy_only, bs.encryptor_type,
DATEDIFF (SECOND, bs.backup_start_date, bs.backup_finish_date) AS [Backup Elapsed Time (sec)],
bs.backup_finish_date AS [Backup Finish Date], bmf.physical_device_name AS [Backup Location], bmf.physical_block_size
FROM msdb.dbo.backupset AS bs WITH (NOLOCK)
INNER JOIN msdb.dbo.backupmediafamily AS bmf WITH (NOLOCK)
ON bs.media_set_id = bmf.media_set_id  
WHERE DB_ID(bs.database_name) = DB_ID()
AND bs.[type] = 'D' 
ORDER BY bs.backup_finish_date DESC OPTION (RECOMPILE);

XEvent-munkamenet konfigurálása

A kiterjesztett esemény backup_restore_progress_trace használatával rögzítheti a felügyelt SQL-példány állapotának biztonsági mentését. Szükség szerint módosítsa az XEvent-munkameneteket a vállalkozása számára érdekes információk nyomon követéséhez. Ezek a T-SQL-kódrészletek az XEvent-munkameneteket a gyűrűpufferben tárolják, de az Azure Blob Storage-ba is írható. A gyűrűpufferben adatokat tároló XEvent-munkamenetek korlátja körülbelül 1000 üzenet, ezért csak a legutóbbi tevékenységek nyomon követésére használható. Emellett a gyűrűpuffer adatai elvesznek a feladatátvételkor. Ezért a biztonsági mentések előzményrekordjaihoz inkább írjon egy eseményfájlba.

Egyszerű nyomon követés

Konfiguráljon egy egyszerű XEvent-munkamenetet egyszerű események rögzítéséhez a teljes biztonsági mentésről. Ez a szkript összegyűjti az adatbázis nevét, a feldolgozott bájtok teljes számát és a biztonsági mentés befejezésének időpontját.

A Transact-SQL (T-SQL) használatával konfigurálja az egyszerű XEvent-munkamenetet:

CREATE EVENT SESSION [Simple backup trace] ON SERVER
ADD EVENT sqlserver.backup_restore_progress_trace(
WHERE operation_type = 0
AND trace_message LIKE '%100 percent%')
ADD TARGET package0.ring_buffer
WITH(STARTUP_STATE=ON)
GO
ALTER EVENT SESSION [Simple backup trace] ON SERVER
STATE = start;

Részletes nyomon követés

Konfiguráljon részletes XEvent-munkamenetet a biztonsági mentési tevékenység további részleteinek nyomon követéséhez. Ez a szkript rögzíti a teljes, a különbségi és a napló biztonsági mentésének kezdetét és befejezését. Mivel ez a szkript részletesebb, gyorsabban tölti ki a gyűrűpuffert, így a bejegyzések gyorsabban újrahasznosíthatók, mint az egyszerű szkripttel.

A Transact-SQL (T-SQL) használatával konfigurálja a részletes XEvent-munkamenetet:

CREATE EVENT SESSION [Verbose backup trace] ON SERVER 
ADD EVENT sqlserver.backup_restore_progress_trace(
    WHERE (
              [operation_type]=(0) AND (
              [trace_message] like '%100 percent%' OR 
              [trace_message] like '%BACKUP DATABASE%' OR [trace_message] like '%BACKUP LOG%'))
       )
ADD TARGET package0.ring_buffer
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,
       MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,
       TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)

ALTER EVENT SESSION [Verbose backup trace] ON SERVER
STATE = start;

A biztonsági mentés állapotának figyelése

Az XEvent-munkamenet létrehozása után a Transact-SQL (T-SQL) használatával lekérdezheti a gyűrűpuffer eredményeit, és nyomon követheti a biztonsági mentés állapotát. Az XEvent elindítása után összegyűjti az összes biztonsági mentési eseményt, így a rendszer nagyjából 5–10 percenként hozzáadja a bejegyzéseket a munkamenethez.

Egyszerű nyomon követés

A következő Transact-SQL -kód lekérdezi az egyszerű XEvent-munkamenetet, és visszaadja az adatbázis nevét, a feldolgozott bájtok teljes számát és a biztonsági mentés befejezésének időpontját:

WITH
a AS (SELECT xed = CAST(xet.target_data AS xml)
FROM sys.dm_xe_session_targets AS xet
JOIN sys.dm_xe_sessions AS xe
ON (xe.address = xet.event_session_address)
WHERE xe.name = 'Backup trace'),
b AS(SELECT
d.n.value('(@timestamp)[1]', 'datetime2') AS [timestamp],
ISNULL(db.name, d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)')) AS database_name,
d.n.value('(data[@name="trace_message"]/value)[1]', 'varchar(4000)') AS trace_message
FROM a
CROSS APPLY  xed.nodes('/RingBufferTarget/event') d(n)
LEFT JOIN master.sys.databases db
ON db.physical_database_name = d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)'))
SELECT * FROM b

Az alábbi képernyőképen egy példa látható a fenti lekérdezés kimenetére:

Screenshot of the xEvent output

Ebben a példában öt adatbázisról készült automatikus biztonsági mentés 2 óra 30 perc alatt, és 130 bejegyzés szerepel az XEvent-munkamenetben.

Részletes nyomon követés

A következő Transact-SQL -kód lekérdezi a részletes XEvent-munkamenetet, és visszaadja az adatbázis nevét, valamint a teljes, a különbségi és a napló biztonsági mentésének kezdetét és befejezését.

WITH
a AS (SELECT xed = CAST(xet.target_data AS xml)
FROM sys.dm_xe_session_targets AS xet
JOIN sys.dm_xe_sessions AS xe
ON (xe.address = xet.event_session_address)
WHERE xe.name = 'Verbose backup trace'),
b AS(SELECT
d.n.value('(@timestamp)[1]', 'datetime2') AS [timestamp],
ISNULL(db.name, d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)')) AS database_name,
d.n.value('(data[@name="trace_message"]/value)[1]', 'varchar(4000)') AS trace_message
FROM a
CROSS APPLY  xed.nodes('/RingBufferTarget/event') d(n)
LEFT JOIN master.sys.databases db
ON db.physical_database_name = d.n.value('(data[@name="database_name"]/value)[1]', 'varchar(200)'))
SELECT * FROM b

Az alábbi képernyőképen egy teljes biztonsági mentés látható az XEvent munkamenetben:

XEvent output showing full backups

Az alábbi képernyőképen egy példa látható egy különbségi biztonsági mentés kimenetére az XEvent munkamenetben:

XEvent output showing differential backups

Következő lépések

Miután a biztonsági mentés befejeződött, visszaállíthat egy adott időpontra, vagy konfigurálhat egy hosszú távú adatmegőrzési szabályzatot.

További információkért tekintse meg az automatikus biztonsági mentéseket.