溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

在異步鏡像中移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)

發(fā)布時(shí)間:2020-06-29 11:58:00 來源:網(wǎng)絡(luò) 閱讀:2812 作者:UltraSQL 欄目:數(shù)據(jù)庫

在異步數(shù)據(jù)庫鏡像中,移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)


某數(shù)據(jù)庫部署為異步數(shù)據(jù)庫鏡像,鏡像數(shù)據(jù)庫所在磁盤空間不足,我得移動鏡像數(shù)據(jù)庫文件到新的磁盤上。

 

在異步數(shù)據(jù)庫鏡像中,應(yīng)用程序連接到主數(shù)據(jù)庫訪問。我們這里要根據(jù)你的線上環(huán)境考慮選擇哪種方式合適:

  1. 直接重做鏡像,將數(shù)據(jù)文件放在新的位置。

  2. 直接移動鏡像數(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)。

在主庫上:

在異步鏡像中移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)

在異步鏡像中移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)

在鏡像庫上:

在異步鏡像中移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)


可以看到,鏡像庫狀態(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)。

在鏡像庫上:

在異步鏡像中移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)

在主庫上:

在異步鏡像中移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)

在異步鏡像中移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)

發(fā)現(xiàn)狀態(tài)已經(jīng)正常。之前的錯(cuò)誤可以忽略。


6. 在主庫上點(diǎn)擊“RESUME”,恢復(fù)鏡像會話。驗(yàn)證鏡像狀態(tài)已同步。

在異步鏡像中移動鏡像數(shù)據(jù)庫文件實(shí)戰(zhàn)


參考:

https://msdn.microsoft.com/zh-cn/library/bb522469.aspx



向AI問一下細(xì)節(jié)

免責(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)容。

AI