環境說明:
依據我之前的文件說明,我的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
關鍵字:AlwaysOn、Data File、Log File
沒有留言:
張貼留言