私はOla Hallengren Maintenance Solutionを実行していますが、AGバックアップの優先設定が[Prefer Secondary]に設定されているにもかかわらず、トランザクションログがセカンダリでバックアップされていないため、トランケートされていません。実行した場合:
SELECT availability_groups.name,
dm_hadr_availability_replica_states.role_desc,
UPPER(availability_groups.automated_backup_preference_desc) as 'preference'
FROM sys.databases databases
INNER JOIN sys.availability_databases_cluster availability_databases_cluster ON databases.group_database_id = availability_databases_cluster.group_database_id
INNER JOIN sys.availability_groups availability_groups ON availability_databases_cluster.group_id = availability_groups.group_id
INNER JOIN sys.dm_hadr_availability_replica_states dm_hadr_availability_replica_states ON availability_groups.group_id = dm_hadr_availability_replica_states.group_id AND databases.replica_id = dm_hadr_availability_replica_states.replica_id
WHERE databases.name = 'EXT_CONFIG_DB'
セカンダリで、私は得ます:
name role_desc preference
SP-EXT-CONFIG SECONDARY SECONDARY
これは予想通りです。ただし、次に実行した場合:
SELECT sys.fn_hadr_backup_is_preferred_replica('EXT_Config_DB') as 'is_preferred_replica'
私は得ます:
is_preferred_replica
0
これは誤りであり、1
に設定する必要があります。 fn_hadr_backup_is_preferred_replica
ビットが0
に設定されているため、Olaジョブはバックアップを行わないため、ログを切り捨てません。検索は小文字のインスタンス名が問題である可能性を示唆しているようですが、私のインスタンス名はすべて大文字です。
誰かがfn_hadr_backup_is_preferred_replicaが1ではなく0を返すように解決策を提案できますか?
これは誤りであり、
1
に設定する必要があります。
1に設定したい場合は、バックアップ設定を適切に構成する必要があります。
1
が返されないのは、現在の設定に基づいてはならないためです。現在、すべてのレプリカのバックアップ優先度はまったく同じです。つまり、次にレプリカ名を確認します。 UK-DR-SQL001\WSS
が最初にソートされるので、そのすべきは、関数がUK-SB-SQL01\WSS
を返すセカンダリ(1
がプライマリである場合)になります。
別のサーバーでバックアップを実行する場合は、優先度を適切に設定します。
以下は、現在の設定を前提として、UK-DR-SQL001\WSS
が1
が返されるレプリカである必要があることを示す非常に単純な再現です。
CREATE TABLE #Replicas
(
ReplicaName VARCHAR(40) NOT NULL,
BackupPriority INT NOT NULL
)
GO
INSERT INTO #Replicas(ReplicaName, BackupPriority)
Values('UK-DR-SQL001\WSS', 50)
,('UK-SB-SQL01\WSS',50)
,('UK-SB-SQL02\WSS',50)
GO
-- current case UK-SB-SQL01\WSS is the PRIMARY
-- prefer secondary is set
-- default collation assumed
SELECT ReplicaName, BackupPriority
FROM #Replicas
WHERE ReplicaName <> 'UK-SB-SQL01\WSS'
ORDER BY BackupPriority DESC --most important first
, ReplicaName ASC
私はOla Hallengren Maintenance Solutionを実行していますが、AGバックアップ設定がPrefer Secondaryに設定されているにもかかわらず、トランザクションログがセカンダリにバックアップされていないため、トランケートされていません。
これはDRサーバーでセットアップまたは実行されていないようです。またはバックアップ少なくともが試行されます。
関数fn_hadr_backup_is_preferred_replica
の内部コードは、SELECT @@SERVERNAME
の出力を利用して、レプリカ名を確実に一致させます。
その出力がセカンダリのレプリカ名と一致することを確認します。また、サーバーで大文字と小文字を区別する照合を使用している場合は、exactの一致である必要があります。そうしないと、同じ結果が得られます。