Monitorování aktivity zálohování služby Azure SQL Managed Instance

Platí pro:Azure SQL Managed Instance

V tomto článku se dozvíte, jak monitorovat aktivitu zálohování pro službu Azure SQL Managed Instance buď dotazováním msdb databáze, nebo konfigurací relací rozšířených událostí (XEvent).

Přehled

Služba Azure SQL Managed Instance ukládá informace o zálohování do databáze msdb a během aktivity zálohování také generuje události (označované také jako rozšířené události nebo XEvents) pro účely generování sestav. Nakonfigurujte relaci XEvent pro sledování informací, jako je stav zálohování, typ zálohování, velikost, čas a umístění v databázi msdb . Tyto informace je možné integrovat se softwarem pro monitorování zálohování a také použít pro účely podnikového auditu.

Podnikové audity můžou vyžadovat doklad o úspěšných zálohách, čas zálohování a dobu trvání zálohování.

Dotazování databáze msdb

Pokud chcete zobrazit aktivitu zálohování, spusťte z uživatelem definované databáze následující dotaz:

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);

Konfigurace relace XEvent

Pomocí rozšířené události backup_restore_progress_trace můžete zaznamenat průběh zálohování služby SQL Managed Instance. Upravte relace XEvent podle potřeby, abyste mohli sledovat informace, které vás zajímají pro vaši firmu. Tyto fragmenty kódu T-SQL ukládají relace XEvent do vyrovnávací paměti okruhu, ale je také možné zapisovat do služby Azure Blob Storage. Relace XEvent, které ukládají data do vyrovnávací paměti okruhu, mají limit přibližně 1 000 zpráv, takže by se měly používat pouze ke sledování nedávné aktivity. Při převzetí služeb při selhání se navíc ztratí data vyrovnávací paměti okruhu. V případě historického záznamu záloh se místo toho zapisují do souboru události.

Jednoduché sledování

Nakonfigurujte jednoduchou relaci XEvent tak, aby zachytila jednoduché události o dokončených úplných zálohách. Tento skript shromažďuje název databáze, celkový počet zpracovaných bajtů a čas dokončení zálohování.

Pomocí jazyka Transact-SQL (T-SQL) nakonfigurujte jednoduchou relaci XEvent:

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;

Podrobné sledování

Nakonfigurujte podrobnou relaci XEvent, abyste mohli sledovat podrobnější informace o vaší aktivitě zálohování. Tento skript zachytává úplné zálohování, rozdílové zálohování i zálohování protokolů. Vzhledem k tomu, že je tento skript více podrobný, zaplní vyrovnávací paměť okruhu rychleji, takže položky mohou být recyklovány rychleji než jednoduchým skriptem.

Ke konfiguraci podrobné relace XEvent použijte Jazyk Transact-SQL (T-SQL):

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;

Monitorování průběhu zálohování

Po vytvoření relace XEvent můžete pomocí jazyka Transact-SQL (T-SQL) dotazovat výsledky vyrovnávací paměti okruhu a sledovat průběh zálohování. Jakmile se XEvent spustí, shromažďuje všechny události zálohování, aby se položky přidaly do relace přibližně každých 5 až 10 minut.

Jednoduché sledování

Následující kód jazyka Transact-SQL (T-SQL) se dotazuje na jednoduchou relaci XEvent a vrátí název databáze, celkový počet zpracovaných bajtů a čas dokončení zálohování:

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

Následující snímek obrazovky ukazuje příklad výstupu výše uvedeného dotazu:

Screenshot of the xEvent output

V tomto příkladu se během 2 hodin a 30 minut automaticky zálohovalo pět databází a v relaci XEvent je 130 položek.

Podrobné sledování

Následující kód Jazyka Transact-SQL (T-SQL) se dotazuje na podrobnou relaci XEvent a vrátí název databáze a také začátek a dokončení úplných, rozdílových záloh i záloh protokolů.

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

Následující snímek obrazovky ukazuje příklad úplného zálohování v relaci XEvent:

XEvent output showing full backups

Následující snímek obrazovky ukazuje příklad výstupu rozdílového zálohování v relaci XEvent:

XEvent output showing differential backups

Další kroky

Po dokončení zálohování můžete provést obnovení k určitému bodu v čase nebo nakonfigurovat zásady dlouhodobého uchovávání informací.

Další informace najdete v tématu automatizované zálohování.