2015年11月7日 星期六

如果在AlwaysOn上進行各個節點的Data File與Log File的搬移

近日由於資料量的成長,所以原本配置的磁碟已不夠空間,在進行評估後,決定要將Data File與Log File搬到新的磁碟上,但由於我的AlwaysOn架構已上線了,所以必須在最短的時間內進行搬移,在參考了相關的文件後,我也將我的設定方式整理如下。

環境說明:
依據我之前的文件說明,我的AlwaysOn目前有三個節點、第一、二節點為同步,第三個節點為非同步,並且設定可以進行唯讀。

預期方案:
為了不影響正常的運作,所以預期會在主要節點先進行設定,但設定完成後,再Failover到次要節點,此時再進行檔案的搬移,最後再Failover到另一個節點,再進行設定後即可,所以在此次的影響,只有二次各約1~3秒的時間,也就是Failover的時間。

設定步驟:
1、如果次要節點可以進行連線與讀取時,需要先行關閉,但由於我的架構只有第三個節點可以唯讀連線,所以只需設定第三個節點即可。

USE[master]
GO
ALTER AVAILABILITY GROUP [cary-ag] MODIFY REPLICA ON N 'cary-sqln3' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = NO))
GO

2、設定資料庫的實體檔案路徑,請注意此設定並不會立即生效,只有當資料庫重新啟動時,才會進行生效。

此動作請依序在三個不同的節點上各自進行,並且注意存放的目錄也要讓SQL Server的啟動帳號有讀寫的權限。

ALTER DATABASE [cary-db] MODIFY FILE (NAME='cary-db',FILENAME='E:\sql_data\cary-db.mdf')
go
ALTER DATABASE [cary-db] MODIFY FILE (NAME='cary-db_log',FILENAME='E:\sql_data\cary-db_log.ldf')
go

3、請在主要節點上進行Failover,此時主要與次要節點的身份會進行互換。
ALTER AVAILABILITY GROUP [cary-ag] FAILOVER;
GO

4、切換完成後,請在原本的主要節點(切換後是次要節)上,先將SQL Server的服務先停止,然後再將檔案複製到你的目的地,然後再進行服務的啟動,此時再確認Data File與Log File是否已指定到新的位置上。

5、同樣的,再進行第三個步驟,然後再進行另一個節點的設定,直到三個節點都設定完成。

6、最後都設定完成後,再將第三個節點的唯讀連線開啟,即設定完成。
USE[master]
GO
ALTER AVAILABILITY GROUP [cary-ag] MODIFY REPLICA ON N'cary-sqln3' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY))
GO

參考連結:
How to move databases configured for SQL Server AlwaysOn
http://blogs.msdn.com/b/sqlserverfaq/archive/2014/02/06/how-to-move-databases-configured-for-sql-server-alwayson.aspx

關鍵字:AlwaysOnData FileLog File

沒有留言:

張貼留言