use*_*184 8 sql-server backup logs sql-server-2012 availability-groups
我们正在使用 SQL Server 2012 的 HADR(AlwaysOn 可用性组)功能。服务器和 AG 配置如下:
SQL12_SRV1 --> AG1(PRIMARY) - SYNC -->> DBTest
SQL12_SRV2 --> AG1(SECONDARY) -->> DBTest - ASYNC
DBTest 数据库每天都在增长 (200GB),大约每月和相同的事务日志文件也将根据数据增长。
那么如何通过使用正确的日志备份方法来最小化事务日志文件大小。我们必须在哪个副本上进行日志备份。
提前致谢。
Tho*_*ger 10
您可以从任一副本备份事务日志。在主要副本或次要副本上执行事务日志备份会将两个副本的事务日志标记为可重用(前提是没有其他阻止程序,如活动事务等)。
要进行测试,请在非生产环境中设置可用性组,就像在生产系统中一样(异步提交到辅助副本)。
在我的测试环境中,我有一个测试数据库,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
Run Code Online (Sandbox Code Playgroud)
现在,当我在主服务器上进行事务日志备份时,使用DBCC SQLPERF(LOGSPACE)
我在两个事务日志(主要和次要)上看到由于日志截断而使用的空间已经下降。在主数据库上使用相同的测试来备份事务日志:
insert into dbo.TestTable
default values;
go 1000
Run Code Online (Sandbox Code Playgroud)
我现在在辅助异步副本上进行事务日志备份。DBCC SQLPERF(LOGSPACE)
在每个副本上再次运行我看到相同的行为:事务日志重用。
BOL 参考:活动辅助节点:辅助副本上的备份(AlwaysOn 可用性组)