[SQL]改變 AlwaysON 的資料庫在 Secondary 放在不同位置

當建立好 AlwaysON 之後,當你增加資料庫的檔案時候,會自動在 Secondary 上也會建立相同檔案,但如果要改變存放在不同路徑,那該如何處理呢 ?

前一陣子指導安裝了一組 SQL Server AlwaysON 的環境,也協助設定好維護計畫,本來想說應該沒有甚麼問題了,正在高興的時候,就傳來對方的訊息了,看來真的不能高興太早。

原來一開始的規劃,沒有注意到 Secondary 磁碟存放空間,使得 Primary 的磁碟空間雖然足夠,但是 Secondary 上面有些不足,因此需要將設定在 AlwaysON 上的資料庫,其中一個資料檔案在 Secondary 上面,需要改放在其他磁碟上,因此朋友來詢問,是否可以在不重做的情況下去完成這個任務呢 ? 本來跟他在電話中說,但可能沒有說得足夠清楚,使得朋友一值沒有設定好,因此趁著還有一點 Azure 額度的時候,趕快來做個 Lab 紀錄一下該如何來處理。

首先在我們 Lab 的環境中,分別有兩台 SQL Server,其中 sqlserver-0 是 Primary,sqlserver-1 是 Secondary,在 AG 的環境下有個範例資料庫 DEMO

目前 Lab 的環境中,資料庫的資料檔案都放在 F:\DATA 的目錄下,我們利用檔案總管可以看到相關的檔案都放在該目錄下

同樣也透過 SQL 指令來檢查一下,確認檔案存放的目錄

因為目前資料庫已經在 AG 內了,所以當我們要把 DEMO 資料庫增加一個資料檔,該資料檔在 Primary 和 Secondary 要放在不同的目錄下的話,那首先我們要在  Secondary 的節點下面,選擇「Always ON 高可用性」→「可用性群組」→ 我們的 AG 群組 →「可用性資料庫」→目標資料庫 上面,按下滑鼠右鍵選擇「移除次要資料庫」,透過這樣的方式讓 Secondary 上的資料庫暫時跟 Primary 上的資料庫,暫時脫離關係。

確認沒有選錯資料庫後,就可以按下下方的「確定」,這樣我們在 Primary 上對資料庫做變動,就無法同步到 Secondary 上了。

此時透過 SSMS 上面查看,可以看到在「可用性資料庫」下的 DEMO 資料庫,前方的圖示已經改變成顯示黃色警告了,並且資料庫從原本的「正在同步處理」,變成「正在還原」,看起來兩邊已經斷開關係了。

那接下來我們就可以回到 Primary 那台上,將 DEMO 資料庫增加一個資料檔案,並且存放在預設目錄下

也再度利用 SQL 指令,確認在 DEMO 資料庫上所新增加的檔案目前是放在 F:\DATA 的下面

接下來我們就要用複製資料庫交易記錄檔的技巧來處理,所以我們以下用 BACKUP LOG 的指令來處理,先將交易紀錄檔案備份出來

接下來我們在 Secondary 上面選擇還原備份,指定剛剛前面步驟備份出來的檔案,選好之後千萬不要急著按下確定。而是選擇左邊選單上的「檔案

在檔案這最重要的一個項目就是透過這裡來變更資料檔案存放的目錄,我們將原本 DEMO2 的檔案是放在 F:\ 磁碟,改成新的資料檔案磁碟和目錄,放到 G:\DATA 的目錄下。。

而最後一個重點就是要選擇復原狀態是 「RESTORE WITH NORECOVERY」,這裡要是沒有選擇正確的話,那麼 Secondary 的資料庫就報銷了,因此在還原資料庫這三個步驟要特別去注意一下。

檢查無誤之後,就可以按下「確認」,去完成還原資料庫的工作了。還原好之後,我們再次連接 Secondary 的伺服器,可以看到資料庫在 Secondary 已經在不同的路徑下了

但別高興太早,因為現在 Primary 和  Secondary 已經不在同一個 AG 內了,所以我們要選擇把 DEMO 資料庫給重新加回去 AG 裡面,所以我們在原本黃色警示的資料庫上面,按下滑鼠右鍵選擇「加入可用性群組

確認無誤就可以按下「確定

如果還原這一段時間都沒有使用的話,那麼整個過程應該一下子就結束。此時我們就可以在 SSMS 上面,看到資料庫已經順利還原了


基本上這些步驟都蠻簡單的,如果您有遇到類似的狀況發生,就可以參考上述步驟,自行來做個處理囉。