您好,登錄后才能下訂單哦!
在異步數據庫鏡像中,移動鏡像數據庫文件實戰
某數據庫部署為異步數據庫鏡像,鏡像數據庫所在磁盤空間不足,我得移動鏡像數據庫文件到新的磁盤上。
在異步數據庫鏡像中,應用程序連接到主數據庫訪問。我們這里要根據你的線上環境考慮選擇哪種方式合適:
直接重做鏡像,將數據文件放在新的位置。
直接移動鏡像數據庫文件。
移動數據庫文件的所有操作都是對鏡像數據庫實例,如果鏡像數據庫實例上沒有其他線上主數據庫,不會對線上業務產生影響的情況下,可以直接移動鏡像數據庫文件。
1. 在主庫上點擊“Pause”,暫停鏡像會話。
2. 在鏡像庫上使用Alter Database指向一個新的位置。
a) 確定DXListing數據庫的邏輯文件名稱以及這些文件在磁盤上的當前位置。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('DXListing'); GO
b) 使用 ALTER DATABASE更改每個文件的位置。
USE master; GO ALTER DATABASE DXListing MODIFY FILE (NAME = DXListing, FILENAME = 'E:\SQL-DATA\DXListing.mdf'); GO ALTER DATABASE DXListing MODIFY FILE (NAME = DXListing_log, FILENAME = 'E:\SQL-DATA\DXListing.ldf'); GO
3. 停止鏡像數據庫所在實例的SQL Server服務。
4. 移動鏡像數據庫文件到一個新位置,并確保文件上的權限也還在。
5. 啟動鏡像數據庫所在實例的SQL Server服務。
6. 在主庫上點擊“RESUME”,恢復鏡像恢復,并驗證鏡像成功恢復。
還有一種方式,只需要重啟鏡像數據庫所在實例的SQL Server服務,而不用暫停服務一段時間用于移動數據文件,實際線上我是用這種方式操作的。
1. 在主庫上點擊“Pause”,暫停鏡像會話。
2. 在鏡像庫上使用Alter Database指向一個新的位置。
a) 確定DXListing數據庫的邏輯文件名稱以及這些文件在磁盤上的當前位置。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('DXListing'); GO
b) 使用 ALTER DATABASE更改每個文件的位置。
USE master; GO ALTER DATABASE DXListing MODIFY FILE (NAME = DXListing, FILENAME = 'E:\SQL-DATA\DXListing.mdf'); GO ALTER DATABASE DXListing MODIFY FILE (NAME = DXListing_log, FILENAME = 'E:\SQL-DATA\DXListing.ldf'); GO
3. 重啟鏡像數據庫所在實例的SQL Server服務。
4. 移動鏡像數據庫文件到一個新位置,并確保文件上的權限也還在。
這時,我們來看看鏡像狀態。
在主庫上:
在鏡像庫上:
可以看到,鏡像庫狀態不正常。這時,我在鏡像庫上執行以下操作:
USE master GO ALTER DATABASE DXListing SET PARTNER RESUME GO
報錯如下:
Msg 945, Level 14, State 2, Line 1
Database 'DXListing' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details.
5. 使DXListing數據庫 OFFLINE 再 ONLINE,以實施更改。(當然,此時重啟SQL Server服務應該也可以,但建議還是在數據庫級別操作)
USE master GO ALTER DATABASE DXListing SET OFFLINE ALTER DATABASE DXListing SET ONLINE GO
錯誤如下:
Msg 954, Level 14, State 1, Line 1
The database "DXListing" cannot be opened. It is acting as a mirror database.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
這時,我們再來看看數據庫狀態。
在鏡像庫上:
在主庫上:
發現狀態已經正常。之前的錯誤可以忽略。
6. 在主庫上點擊“RESUME”,恢復鏡像會話。驗證鏡像狀態已同步。
參考:
https://msdn.microsoft.com/zh-cn/library/bb522469.aspx
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。