Memantau aktivitas pencadangan untuk Azure SQL Managed Instance
Berlaku untuk: Azure SQL Managed Instance
Artikel ini mengajarkan anda cara memantau aktivitas pencadangan untuk Azure SQL Managed Instance dengan mengkueri msdb
database atau dengan mengonfigurasi sesi extended event (XEvent).
Gambaran Umum
Azure SQL Managed Instance menyimpan informasi pencadangan dalam msdb database dan menghasilkan peristiwa (yang dikenal sebagai Extended Events or XEvents) selama aktivitas pencadangan untuk tujuan pelaporan. Konfigurasikan sesi XEvent untuk melacak informasi seperti status cadangan, jenis cadangan, ukuran, waktu, dan lokasi dalam msdb
database. Informasi ini dapat diintegrasikan dengan perangkat lunak pemantauan cadangan dan juga digunakan untuk tujuan Audit Perusahaan.
Audit Perusahaan mungkin memerlukan bukti keberhasilan pencadangan, waktu pencadangan, dan durasi pencadangan.
Kueri database msdb
Untuk melihat aktivitas pencadangan, jalankan kueri berikut dari database yang ditentukan pengguna:
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);
Mengonfigurasi sesi XEvent
Gunakan acara yang diperluas backup_restore_progress_trace
untuk merekam kemajuan instans SQL Terkelola Anda. Ubah sesi XEvent sesuai kebutuhan untuk melacak informasi yang Anda minati untuk bisnis Anda. Cuplikan T-SQL menyimpan sesi XEvent di ring buffer, tetapi juga dimungkinkan untuk menulis ke Azure Blob Storage. Sesi XEvent menyimpan data di ring buffer memiliki batas sekitar 1000 pesan sehingga hanya boleh digunakan untuk melacak aktivitas terbaru. Selain itu, data ring buffer hilang saat failover. Dengan demikian, untuk catatan historis cadangan, tulis ke file peristiwa sebagai gantinya.
Pelacakan sederhana
Konfigurasikan sesi XEvent sederhana untuk menangkap peristiwa sederhana tentang pencadangan lengkap. Skrip ini mengumpulkan nama database, jumlah total byte yang diproses, dan waktu pencadangan selesai.
Gunakan transact-SQL (T-SQL) untuk mengonfigurasi sesi XEvent sederhana:
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;
Pelacakan verbose
Konfigurasikan sesi XEvent verbose untuk melacak detail yang lebih besar tentang aktivitas cadangan Anda. Skrip ini menangkap awal dan akhir dari pencadangan penuh, diferensial, dan log. Karena skrip ini lebih verbose, ia mengisi ring buffer lebih cepat, sehingga entri dapat mendaur ulang lebih cepat daripada dengan skrip sederhana.
Gunakan transact-SQL (T-SQL) untuk mengonfigurasi sesi XEvent verbose sederhana:
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;
Memantau kemajuan pencadangan
Setelah sesi XEvent dibuat, Anda dapat menggunakan Transact-SQL (T-SQL) untuk meminta hasil ring buffer dan memantau kemajuan cadangan. Setelah XEvent dimulai, ia mengumpulkan semua acara cadangan sehingga entri ditambahkan ke sesi kira-kira setiap 5-10 menit.
Pelacakan sederhana
Kode Transact-SQL (T-SQL) berikut ini meminta sesi XEvent sederhana dan mengembalikan nama database, jumlah total byte yang diproses, dan waktu pencadangan selesai:
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
Cuplikan layar berikut menampilkan contoh output kueri diatas:
Dalam contoh ini, lima database secara otomatis dicadangkan selama 2 jam dan 30 menit, dan ada 130 entri dalam sesi XEvent.
Pelacakan verbose
Kode Transact-SQL (T-SQL) berikut ini meminta sesi XEvent verbose dan mengembalikan nama database, serta awal dan akhir dari cadangan lengkap, diferensial, dan log.
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
Cuplikan layar berikut ini memperlihatkan contoh cadangan lengkap di sesi XEvent:
Cuplikan layar berikut ini memperlihatkan contoh output cadangan diferensial di sesi XEvent:
Langkah berikutnya
Setelah cadangan selesai, Anda kemudian dapat memulihkan ke titik waktu atau mengonfigurasi kebijakan penyimpanan jangka panjang.
Untuk mempelajari lebih lanjut, lihat pencadangan otomatis.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk