Sql-Server

AlwaysOn 高可用性 MDF 和 LDF 文件位置

  • August 27, 2019

我們有 4 個副本,其中 03 個副本處於只讀模式和手動故障轉移。

我們有一些驅動器問題,我們需要重新排列 MDF 和 LDF 文件。在主要我們有 2 個驅動器IJ. 該I驅動器包含 MDF/ndf 和 LDF 文件。驅動器上J是 tempdb 文件。

在所有其他 03 副本中,我們只有我驅動所有 MDF/ndf/ldf 和 Tempmpdb 文件。

目前,設置工作正常,沒有任何問題。

在我們的主副本中,驅動器空間不足,僅剩 10%。我們可以將 ldf 文件移動到J80% 空閒的驅動器嗎?

請注意,在所有 03 只讀副本中,我們沒有J驅動器。

在我們的主副本中,驅動器空間不足,僅剩 10%。我們可以把 ldf 文件移動到 80% 空閒的 J 盤嗎?

請注意,在所有 03 只讀副本中,我們沒有 J 驅動器。

理論上,您可以使用不同的磁碟。(除非您使用直接播種將數據庫播種到輔助節點)。

但是,我更希望具有相同的磁碟和磁碟吞吐量,以提高透明度並降低I/O從屬設備變為主設備時出現問題的可能性,以及其他考慮因素,例如將數據文件添加到數據庫中。

快速測試:

在主伺服器上,在兩個磁碟上創建一個數據庫

CREATE DATABASE [test]
ON  PRIMARY 
( NAME = N'test', FILENAME = N'F:\DATA\test.mdf' , SIZE = 105472KB , FILEGROWTH = 102400KB )
LOG ON 
( NAME = N'test_log', FILENAME = N'E:\LOG\test_log.ldf' , SIZE = 11264KB , FILEGROWTH = 10240KB )
GO
ALTER DATABASE [test] SET RECOVERY FULL
GO

BACKUP DATABASE [test] TO DISK = '\\Share\test.bak'
WITH STATS=5;

在一個磁碟上的輔助設備上還原

RESTORE DATABASE [test]
FROM DISK = '\\Share\test.bak'
WITH MOVE 'test' to  'F:\DATA\test.mdf',
MOVE 'test_log' to 'F:\DATA\test_log.ldf',
NORECOVERY,STATS=5;

將主節點添加到 ag(在主節點上執行)

ALTER AVAILABILITY GROUP AGName ADD DATABASE test;  

將輔助添加到 ag(在輔助上執行)

ALTER DATABASE test SET HADR AVAILABILITY GROUP = AGName;

驗證所有副本上的數據庫

在此處輸入圖像描述

更改主節點上的數據文件

ALTER DATABASE test
MODIFY FILE (name='test',FILENAME = N'H:\DATA\test.mdf')


ALTER AVAILABILITY GROUP AGName REMOVE DATABASE test;  
ALTER DATABASE test SET OFFLINE WITH ROLLBACK IMMEDIATE

-- copy file

ALTER DATABASE test SET ONLINE


ALTER AVAILABILITY GROUP AG ADD DATABASE test;  

再次將輔助節點添加到 AG

ALTER DATABASE test SET HADR AVAILABILITY GROUP = AGName;

驗證所有副本上的數據庫

在此處輸入圖像描述


將輔助節點更改為駐留在完全不同的磁碟上

在初級

ALTER AVAILABILITY GROUP AGName REMOVE DATABASE test;  
BACKUP DATABASE [test] TO DISK = '\\BEUAT0563\T$\DATA\test.bak'
WITH STATS=5;

在二級

RESTORE DATABASE [test]
FROM DISK = 'T:\DATA\test.bak'
WITH MOVE 'test' to  'T:\DATA\test.mdf',
MOVE 'test_log' to 'T:\DATA\test_log.ldf',
NORECOVERY,STATS=5,REPLACE;

在初級

ALTER AVAILABILITY GROUP DA4EMS_BEUAT_AG ADD DATABASE test; 

在二級

ALTER DATABASE test SET HADR AVAILABILITY GROUP = DA4EMS_BEUAT_AG;

額外注意事項

如果您將額外文件添加到輔助磁碟上不存在的磁碟上的數據庫,您將收到錯誤消息:

USE [master]
GO
ALTER DATABASE [test] ADD FILE ( NAME = N'test2', FILENAME = N'F:\DATA\test2.ndf' , SIZE = 105472KB , FILEGROWTH = 102400KB ) TO FILEGROUP [PRIMARY]
GO

這試圖在所有副本上創建一個額外的數據庫文件,期望磁碟存在。

我們可以把 ldf 文件移動到 80% 空閒的 J 盤嗎?

是的。

你應該?

可能不是。

在所有其他 03 副本中,我們只有我驅動所有 MDF/ndf/ldf 和 Tempmpdb 文件。

如現有答案中所述。最佳情況下,每個副本都應該被同時配置並且能夠在故障轉移時作為主副本

可比系統:對於給定的可用性組,所有可用性副本都應在可處理相同工作負載的可比系統上執行。

足夠的磁碟空間:伺服器實例承載可用性副本的每台電腦都必須為可用性組中的所有數據庫擁有足夠的磁碟空間。請記住,隨著主數據庫的增長,它們相應的輔助數據庫也會增長相同的數量。來源

如果您在虛擬伺服器上執行,添加磁碟應該不難。對於 * mdf/ndf * ldf * tempdb mdf/ndf/ldf * 備份 bak/trn,最好使用四 (4) 個單獨的磁碟

引用自:https://dba.stackexchange.com/questions/246331