0

假設我有一個大型生產鏡像1TB數據庫駐留在單個MDF設備上,我想將它分解成5個200 Gig設備。 我想不中斷生產。SQL服務器分割鏡像分貝到多個設備

我想我可以打破鏡像並使用RESTORE過程來創建鏡像,以快速實現拆分到多個設備,而不會中斷生產。這樣做會讓我在幾個小時內完成這件事。

有沒有人這樣做?無論如何,當我們在鏡像時,它是首選的方法嗎?

什麼是我的其他選擇,優點和缺點?和陷阱?

此外,我還記得另一個更有機的過程,其中一個將創建5個新的新設備,並且隨着時間的推移將對象移動到新設備。不確定這個過程,但我似乎記得正在討論它。聽起來像這可能需要很長時間,有時可能會導致一些計時?

感謝

...雷

+0

你可能會更好在serverfault.com – mrks 2013-04-07 16:10:54

回答

0

這是不是很簡單的過程,因爲它首先查找,產生的原因是,只需添加文件到SQL服務器是不夠的,即使您將添加4個新文件,它們全部是空白空間,您將擁有一個包含1Tb數據的文件和4個空文件,這些文件最終會填滿,因爲SQL Server使用比例填充方法處理文件,但大多數您的查詢仍然會觸及單個文件。

我認爲你正在這樣做以提高性能?如果是這樣,您將需要將數據移到不同的文件中,以便實際分割數據。是否可以在線執行此操作取決於您是否正在運行Enterprise Edition(因爲這樣可以在線重建索引)。

一個簡單的方法來移動一個表(或更準確地說聚簇索引,這與表爲所有意圖和目的幾乎相同)是添加一個新的文件組與一個新的數據文件,然後重建聚簇索引指定新的文件組,您可以使用以下方法來做到這一點:

CREATE CLUSTERED INDEX Existing_Index_Name ON schema_name.table_name(column_name) 
WITH(DROP_EXISTING=ON,Online=ON) on [new_filegroup_name] 
GO 

此代碼將創建新的文件組新的索引,擺脫舊的,如果你正在運行企業版,它將完成這一切而不會阻止用戶。

請參見以下鏈接文件組之間移動數據的更多方法:

Move data between SQL Server database filegroups

你也應該考慮分區的表,以幫助提高性能太:

Partitioning Tables and Indexes

關於您的鏡像設置,您應該打破鏡像,然後在主要添加所有文件/文件組,然後在文件組之間移動數據,然後bac修改主數據庫上的數據庫,在鏡像上恢復(因此鏡像上的所有文件都設置相同),然後重新設置鏡像。