Sql-Server
使用 AlwaysOn 可用性組時的事務日誌維護
我們正在使用 SQL Server 2012 的 HADR(AlwaysOn 可用性組)功能。伺服器和 AG 配置如下:
- SQL12_SRV1 –> AG1(PRIMARY) - SYNC –>> DBTest
- SQL12_SRV2 –> AG1(SECONDARY) –>> DBTest - ASYNC
DBTest 數據庫正在增長(200GB),每天大約每月增長,並且相同的事務日誌文件也將根據數據增長。
那麼如何通過使用正確的日誌備份方式來最小化事務日誌文件的大小。我們必須在哪個 Replica 上進行日誌備份。
提前致謝。
您可以從任一副本備份事務日誌。在主副本或輔助副本上進行事務日誌備份會將兩個副本的事務日誌標記為可重用(假設沒有其他停止器,如活動事務等)。
要進行測試,請在非生產環境中設置可用性組,就像在生產系統中一樣(非同步送出到輔助副本)。
在我的測試環境中,我有一個測試數據庫,
TestBackupDatabase
我通過一個虛擬表使用記錄的事務來膨脹它:use TestBackupDatabase; go create table dbo.TestTable ( id int identity(1, 1) not null, some_int int not null default 1 ); go insert into dbo.TestTable default values; go 1000
現在,當我在我的主伺服器上進行事務日誌備份時,
DBCC SQLPERF(LOGSPACE)
我在兩個事務日誌(主伺服器和輔助伺服器)上看到,由於日誌截斷,使用的空間已經下降。在主伺服器上使用相同的測試備份事務日誌:insert into dbo.TestTable default values; go 1000
我現在在輔助非同步副本上進行事務日誌備份。在每個副本上再次執行
DBCC SQLPERF(LOGSPACE)
我看到相同的行為:事務日誌重用。
當您使用 AlwaysOn 可用性組時,即使您進行了適當的備份,日誌文件也可能會變得更大,並且日誌驅動器可能會隨著時間的推移而變滿。為了保持適當的(最小化)日誌文件大小,您可以使用以下技術。
- 在 AlwaysOn 配置中,將備份優先級選項更改為主副本/伺服器。
- 由於數據庫預設處於完全恢復模式,因此至少進行一次完全備份和 1 進行事務日誌備份。
- 收縮主副本上所有數據庫的日誌文件。這將截斷所有可用性副本上的空日誌驅動器。
- 最後,安排一個作業定期進行適當的備份。這將使您的日誌文件保持正確的大小。
我希望這個能幫上忙!