溫馨提示×

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

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

sqlserver關(guān)于mirror鏡像的知識(shí)點(diǎn)有哪些

發(fā)布時(shí)間:2021-11-09 13:54:04 來(lái)源:億速云 閱讀:162 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫(kù)

本篇內(nèi)容介紹了“sqlserver關(guān)于mirror鏡像的知識(shí)點(diǎn)有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

mirror鏡像的基本原理:主服務(wù)器上的主體數(shù)據(jù)庫(kù)執(zhí)行的增、刪、改、查操作以日志的方法在鏡像服務(wù)器的鏡像數(shù)據(jù)庫(kù)中重做。主體數(shù)據(jù)庫(kù)創(chuàng)建鏡像后,會(huì)啟動(dòng)一個(gè)單獨(dú)的事務(wù)日志發(fā)送線程,維護(hù)一個(gè)虛擬的發(fā)送隊(duì)列,然后讀取事務(wù)日志,將其進(jìn)行壓縮,然后發(fā)送給 mirror 節(jié)點(diǎn),mirror 節(jié)點(diǎn)接收到以后,會(huì)將其寫入本地在磁盤上的一個(gè)重做隊(duì)列文件中,然后再通過(guò)另外的一個(gè)線程異步的方式,從重做隊(duì)列中獲取事務(wù)日志,然后分發(fā)給應(yīng)用線程(process unit)進(jìn)行回放。

數(shù)據(jù)鏡像的兩種模式

同步鏡像操作:在事務(wù)傳送中,主服務(wù)器必須等待鏡像服務(wù)器返回成功接收日志的消息后,主服務(wù)器才繼續(xù)下一事務(wù)日志到磁盤的寫入與提交到鏡像服務(wù)器。這種鏡像不會(huì)造成數(shù)據(jù)丟失,但是存在鏡像操作的事務(wù)延遲。

異步鏡像操作:在事務(wù)傳送中,主服務(wù)器不等待鏡像服務(wù)器返回日志的接收情況,繼續(xù)寫下一事務(wù)日志到物理磁盤并提交給鏡像服務(wù)器,這種鏡像操作性能較高,但是主服務(wù)器宕機(jī)后可能造成鏡像服務(wù)器數(shù)據(jù)丟失。

1、搭建mirror,必須先對(duì)主庫(kù)進(jìn)行全備和日志備份,并且要以norecovery方式把全備和日志恢復(fù)到從庫(kù),之后再在主庫(kù)右鍵數(shù)據(jù)庫(kù)-->properties-->mirror,參考圖形界面一步步來(lái)搭建,如下是主庫(kù)搭建mirror的報(bào)錯(cuò),因?yàn)閺膸?kù)恢復(fù)的時(shí)候只恢復(fù)了數(shù)據(jù)庫(kù)沒(méi)有恢復(fù)日志導(dǎo)致

The mirror database, "XX", has insufficient transaction log data to preserve the log backup chain of the principal database. This may happen if a log backup from the principal database has not been taken or has not been restored on the mirror database.

2、圖形界面搭建鏡像過(guò)程中,跳出的端點(diǎn)名稱會(huì)自動(dòng)創(chuàng)建好,不需要手工先去創(chuàng)建,跳出的端點(diǎn)名稱和端口可以自己定義,默認(rèn)的是Mirroring和5022

3、搭建好后,監(jiān)控mirror的工具,右鍵數(shù)據(jù)庫(kù)-->Tasks-->Launch Database Mirroring Monitor,這個(gè)工具主庫(kù)從庫(kù)都有,效果一樣,這點(diǎn)和log shipping的Transaction Log Shipping Status主庫(kù)只負(fù)責(zé)主庫(kù),從庫(kù)只負(fù)責(zé)從庫(kù)不一樣。

4、搭建好后,主庫(kù)后面狀態(tài)顯示(Principal,Synchronized),從庫(kù)后面狀態(tài)顯示(Mirror,Synchronized/Restoring..)

5、搭建好后,主庫(kù)和從庫(kù)都有一個(gè)job名字是“Database Mirroring Monitor Job”,就算拆掉數(shù)據(jù)庫(kù)的mirror,主從上該job還在,新增一個(gè)數(shù)據(jù)庫(kù)的mirror,主備還是該job,沒(méi)新增job,該job刪除后,就算還有數(shù)據(jù)庫(kù)的mirror,該job也不會(huì)自動(dòng)重建,但是下次新增數(shù)據(jù)庫(kù)的mirror時(shí),該job會(huì)重建

6、因?yàn)閺膸?kù)的鏡像數(shù)據(jù)庫(kù)無(wú)法讀,所以可以在從庫(kù)創(chuàng)建快照數(shù)據(jù)庫(kù)來(lái)讀,來(lái)確定mirror是否真正的同步

7、如果想實(shí)現(xiàn)主從自動(dòng)切換,即自動(dòng)故障轉(zhuǎn)移功能,必須要有見(jiàn)證服務(wù)器

8、如果主庫(kù)故障了,從庫(kù)狀態(tài)變成(Mirror,Disconnected/In Recovery),執(zhí)行如下語(yǔ)句,恢復(fù)從庫(kù)的讀寫狀態(tài)(必須先執(zhí)行第二條語(yǔ)句刪除從庫(kù)的快照,否則第三條語(yǔ)句無(wú)法執(zhí)行)

ALTER DATABASE testdb SET PARTNER OFF;

drop database testdb_snapshot;

RESTORE DATABASE testdb WITH RECOVERY;

9、如果主庫(kù)執(zhí)行了移除remove鏡像操作后需要?jiǎng)h除從庫(kù)再重新搭建主庫(kù)從庫(kù)的鏡像,但是從庫(kù)仍然顯示(Mirror,Disconnected/In Recovery),導(dǎo)致從庫(kù)無(wú)法刪除,且從庫(kù)執(zhí)行ALTER DATABASE testdb SET PARTNER OFF后狀態(tài)仍是(Mirror,Disconnected/In Recovery),則需要先在主庫(kù)配置一下鏡像,然后會(huì)報(bào)錯(cuò)鏡像搭建不成功,這個(gè)時(shí)候從庫(kù)狀態(tài)顯示(In Recovery),從庫(kù)這時(shí)候可以直接刪除。如果從庫(kù)還是無(wú)法刪除,就先在主庫(kù)配置一下鏡像,然后會(huì)報(bào)錯(cuò)鏡像搭建不成功,再重啟從庫(kù)實(shí)例,從庫(kù)狀態(tài)一般會(huì)顯示為(suspect),這時(shí)從庫(kù)也可以直接刪除了。

10、手動(dòng)故障轉(zhuǎn)移需要將事務(wù)安全設(shè)置為 FULL,且當(dāng)伙伴連接在一起并且數(shù)據(jù)庫(kù)已同步時(shí)即數(shù)據(jù)庫(kù)處于 SYNCHRONIZED 狀態(tài)時(shí),才支持手動(dòng)故障轉(zhuǎn)移,登錄主庫(kù)執(zhí)行如下語(yǔ)句,上面8非手動(dòng)故障轉(zhuǎn)移,因?yàn)閿?shù)據(jù)庫(kù)不是同步狀態(tài)而是Disconnected/In Recovery

USE master;

ALTER DATABASE testdb SET PARTNER FAILOVER;

11、如果從庫(kù)使用主庫(kù)的全備和日志備份進(jìn)行restore norecovery后,開(kāi)始搭建mirror,但是這個(gè)過(guò)程中,mirror還沒(méi)有搭建好,主庫(kù)又備份了日志,mirror無(wú)法成功搭建,會(huì)有如下報(bào)錯(cuò),只能把主庫(kù)備份的日志再restore norecovery到從庫(kù),才可以正常搭建mirror

The remote copy of database <DatabaseName> has not been rolled forward to a point in time that is encompassed in the local copy of the database log

12、從庫(kù)無(wú)法直接delete刪除,這點(diǎn)和logshipping不一樣

13、鏡像故障查找,可以從主庫(kù)和從庫(kù)的日志中找相關(guān)信息

14、mirror數(shù)據(jù)庫(kù)升級(jí)后,無(wú)法修改數(shù)據(jù)庫(kù)版本COMPATIBILITY_LEVEL,因?yàn)閙irror是只讀的,暫停mirror也無(wú)法修改,因?yàn)閿?shù)據(jù)庫(kù)是restoring狀態(tài)

15、mirror相關(guān)信息,可以參考視圖sys.database_mirroring

16、mirror的從庫(kù),不能執(zhí)行backup

17、主庫(kù)升級(jí)后可以修改level,從庫(kù)升級(jí)后無(wú)法修改level,如果主庫(kù)修改了level一旦主庫(kù)的日志同步到從庫(kù)后,從庫(kù)對(duì)應(yīng)的數(shù)據(jù)庫(kù)的level會(huì)和主庫(kù)一樣

18、主庫(kù)新增datafile后,從庫(kù)也會(huì)新增datafile,并且路徑和主庫(kù)的路徑一樣

19、mirror主庫(kù)增加了文件,但是從庫(kù)沒(méi)有相應(yīng)的目錄,則同步會(huì)suspend掛起,就算從庫(kù)有默認(rèn)的datafile和logfile路徑。在從庫(kù)的數(shù)據(jù)庫(kù)日志里面可以看到報(bào)錯(cuò)信息:CREATE FILE encountered operating system error 3(The system cannot find the path specified.) while attempting to open or create the physical file 'E:\XX\YY.ndf'.

20、FILETABLE的數(shù)據(jù)庫(kù)無(wú)法搭建mirror,會(huì)報(bào)錯(cuò)A database cannot be enabled for both Database Mirroring and FILESTREAM or for both Database Mirroring and MEMORY_OPTIMIZED_DATA storage

21、搭建mirror時(shí)遇到一個(gè)怪異報(bào)錯(cuò)Database 'mirror_1' cannot be opened. It is in the middle of a restore。最后發(fā)現(xiàn)是因?yàn)閿?shù)據(jù)庫(kù)實(shí)例的版本是2016,而搭建mirror時(shí)使用的SSMS版本是2017,把SSMS換成2016就沒(méi)有再報(bào)這個(gè)錯(cuò)誤了,這個(gè)算是sqlserver的bug了

22、在從庫(kù)創(chuàng)建鏡像數(shù)據(jù)庫(kù)mirror1的快照數(shù)據(jù)庫(kù)mirror_snapshot,NAME必須等于等于主庫(kù)里面的數(shù)據(jù)文件相同的邏輯名稱,filename自己隨意定義,指快照數(shù)據(jù)庫(kù)的filename

create database mirror_snapshot on

(NAME=mirror1,filename='G:\DEFAULT.DATA\mirror_snapshot')

as snapshot of mirror1;

23、監(jiān)控mirror數(shù)據(jù)庫(kù)Db1最近的同步情況,可以參考如下語(yǔ)句(2表示最后4小時(shí)的行,如果把2改成1表示最后2小時(shí)的行

USE msdb;  
EXEC sp_dbmmonitorresults Db1,2, 0;

24、主庫(kù)的狀態(tài)一直是(Principal,Suspend),右鍵主庫(kù)--屬性--Mirroring--Resume后,主庫(kù)的狀態(tài)是(Principal,Synchronizing),過(guò)一會(huì)主庫(kù)狀態(tài)還是(Principal,Suspend),查看從庫(kù)實(shí)例的日志有如下內(nèi)容

The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time. Rerun your statement when there are fewer active users. Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions.

    解決方法:右鍵主庫(kù)--屬性--Mirroring--Remove Mirroring,從庫(kù)狀態(tài)變成(Mirror,Disconnected/In Recovery),再在主庫(kù)創(chuàng)建Mirror,這時(shí)會(huì)報(bào)錯(cuò),從庫(kù)狀態(tài)變成(restoring),這個(gè)時(shí)候,把主庫(kù)備份的日志拿到從庫(kù)去手工restore,所有日志都restore完了后,再在主庫(kù)創(chuàng)建Mirror就正常了。

25、8核CPU,數(shù)據(jù)庫(kù)最大內(nèi)存16GB環(huán)境,發(fā)現(xiàn)Database1在15分鐘內(nèi)產(chǎn)生的日志達(dá)到500MB以上時(shí),mirror很容易出現(xiàn)suspend的狀態(tài),查看日志發(fā)現(xiàn)信息如下,就算你重啟數(shù)據(jù)庫(kù),還是解決不了這個(gè)問(wèn)題,只能移除mirror,在從庫(kù)上再手工restore這些日志,再搭建mirror

The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time. Rerun your statement when there are fewer active users. Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions.

Database mirroring will be suspended. Server instance 'Instance1' encountered error 1204, state 4, severity 19 when it was acting as a mirroring partner for database 'Database1'. The database mirroring partners might try to recover automatically from the error and resume the mirroring session. For more information, view the error log for additional error messages.

26、關(guān)于mirror和logshipping的選擇,遇到數(shù)據(jù)庫(kù)在短時(shí)間內(nèi)產(chǎn)生的日志很大,比如15分鐘內(nèi)產(chǎn)生了500MB,那么mirror不如logshipping,因?yàn)閙irror需要消耗更多的內(nèi)存,mirror很容易出現(xiàn)suspend的狀態(tài)

27、搭建mirror時(shí)遇到錯(cuò)誤:服務(wù)器網(wǎng)絡(luò)地址 “TCP://dbalias:5022″ 無(wú)法訪問(wèn)或不存在。請(qǐng)檢查網(wǎng)絡(luò)地址名稱,并檢查本地和遠(yuǎn)程端點(diǎn)的端口是否正常運(yùn)行。 (Microsoft SQL Server,錯(cuò)誤: 1418)。

解決思路

27.1、telnet dbalias:5022 是否通

27.2、檢查主備機(jī)器的sqlserver啟動(dòng)賬號(hào)是否有權(quán)限訪問(wèn)對(duì)方實(shí)例

27.3、以上兩點(diǎn)都正常的情況下,重啟備機(jī)

27.4、以上步驟3也做過(guò)還是不行的話,重啟主機(jī)(自己就遇到一個(gè)這樣的問(wèn)題,直到這第四步做完才能正常搭建mirror)

28、監(jiān)控mirror同步更新?tīng)顟B(tài)可以結(jié)合使用存儲(chǔ)過(guò)程msdb.sys.sp_dbmmonitorupdate和系統(tǒng)表msdb.dbo.dbm_monitor_data

“sqlserver關(guān)于mirror鏡像的知識(shí)點(diǎn)有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI