您好,登錄后才能下訂單哦!
在異步數(shù)據(jù)庫鏡像中,移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)
某數(shù)據(jù)庫部署為異步數(shù)據(jù)庫鏡像,鏡像數(shù)據(jù)庫所在磁盤空間不足,我得移動鏡像數(shù)據(jù)庫文件到新的磁盤上。
在異步數(shù)據(jù)庫鏡像中,應(yīng)用程序連接到主數(shù)據(jù)庫訪問。我們這里要根據(jù)你的線上環(huán)境考慮選擇哪種方式合適:
直接重做鏡像,將數(shù)據(jù)文件放在新的位置。
直接移動鏡像數(shù)據(jù)庫文件。
移動數(shù)據(jù)庫文件的所有操作都是對鏡像數(shù)據(jù)庫實(shí)例,如果鏡像數(shù)據(jù)庫實(shí)例上沒有其他線上主數(shù)據(jù)庫,不會對線上業(yè)務(wù)產(chǎn)生影響的情況下,可以直接移動鏡像數(shù)據(jù)庫文件。
1. 在主庫上點(diǎn)擊“Pause”,暫停鏡像會話。
2. 在鏡像庫上使用Alter Database指向一個(gè)新的位置。
a) 確定DXListing數(shù)據(jù)庫的邏輯文件名稱以及這些文件在磁盤上的當(dāng)前位置。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('DXListing'); GO
b) 使用 ALTER DATABASE更改每個(gè)文件的位置。
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. 停止鏡像數(shù)據(jù)庫所在實(shí)例的SQL Server服務(wù)。
4. 移動鏡像數(shù)據(jù)庫文件到一個(gè)新位置,并確保文件上的權(quán)限也還在。
5. 啟動鏡像數(shù)據(jù)庫所在實(shí)例的SQL Server服務(wù)。
6. 在主庫上點(diǎn)擊“RESUME”,恢復(fù)鏡像恢復(fù),并驗(yàn)證鏡像成功恢復(fù)。
還有一種方式,只需要重啟鏡像數(shù)據(jù)庫所在實(shí)例的SQL Server服務(wù),而不用暫停服務(wù)一段時(shí)間用于移動數(shù)據(jù)文件,實(shí)際線上我是用這種方式操作的。
1. 在主庫上點(diǎn)擊“Pause”,暫停鏡像會話。
2. 在鏡像庫上使用Alter Database指向一個(gè)新的位置。
a) 確定DXListing數(shù)據(jù)庫的邏輯文件名稱以及這些文件在磁盤上的當(dāng)前位置。
SELECT name, physical_name FROM sys.master_files WHERE database_id = DB_ID('DXListing'); GO
b) 使用 ALTER DATABASE更改每個(gè)文件的位置。
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. 重啟鏡像數(shù)據(jù)庫所在實(shí)例的SQL Server服務(wù)。
4. 移動鏡像數(shù)據(jù)庫文件到一個(gè)新位置,并確保文件上的權(quán)限也還在。
這時(shí),我們來看看鏡像狀態(tài)。
在主庫上:
在鏡像庫上:
可以看到,鏡像庫狀態(tài)不正常。這時(shí),我在鏡像庫上執(zhí)行以下操作:
USE master GO ALTER DATABASE DXListing SET PARTNER RESUME GO
報(bào)錯(cuò)如下:
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數(shù)據(jù)庫 OFFLINE 再 ONLINE,以實(shí)施更改。(當(dāng)然,此時(shí)重啟SQL Server服務(wù)應(yīng)該也可以,但建議還是在數(shù)據(jù)庫級別操作)
USE master GO ALTER DATABASE DXListing SET OFFLINE ALTER DATABASE DXListing SET ONLINE GO
錯(cuò)誤如下:
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.
這時(shí),我們再來看看數(shù)據(jù)庫狀態(tài)。
在鏡像庫上:
在主庫上:
發(fā)現(xiàn)狀態(tài)已經(jīng)正常。之前的錯(cuò)誤可以忽略。
6. 在主庫上點(diǎn)擊“RESUME”,恢復(fù)鏡像會話。驗(yàn)證鏡像狀態(tài)已同步。
參考:
https://msdn.microsoft.com/zh-cn/library/bb522469.aspx
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。