久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

sqlserver關于mirror鏡像的知識點有哪些

145次閱讀
沒有評論

共計 5362 個字符,預計需要花費 14 分鐘才能閱讀完成。

本篇內容介紹了“sqlserver 關于 mirror 鏡像的知識點有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

mirror 鏡像的基本原理:主服務器上的主體數據庫執行的增、刪、改、查操作以日志的方法在鏡像服務器的鏡像數據庫中重做。主體數據庫創建鏡像后,會啟動一個單獨的事務日志發送線程,維護一個虛擬的發送隊列,然后讀取事務日志,將其進行壓縮,然后發送給 mirror 節點,mirror 節點接收到以后,會將其寫入本地在磁盤上的一個重做隊列文件中,然后再通過另外的一個線程異步的方式,從重做隊列中獲取事務日志,然后分發給應用線程 (process unit) 進行回放。

數據鏡像的兩種模式

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

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

1、搭建 mirror,必須先對主庫進行全備和日志備份,并且要以 norecovery 方式把全備和日志恢復到從庫,之后再在主庫右鍵數據庫 – properties– mirror,參考圖形界面一步步來搭建,如下是主庫搭建 mirror 的報錯, 因為從庫恢復的時候只恢復了數據庫沒有恢復日志導致

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、圖形界面搭建鏡像過程中,跳出的端點名稱會自動創建好,不需要手工先去創建,跳出的端點名稱和端口可以自己定義,默認的是 Mirroring 和 5022

3、搭建好后,監控 mirror 的工具,右鍵數據庫 – Tasks– Launch Database Mirroring Monitor, 這個工具主庫從庫都有,效果一樣,這點和 log shipping 的 Transaction Log Shipping Status 主庫只負責主庫,從庫只負責從庫不一樣。

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

5、搭建好后,主庫和從庫都有一個 job 名字是“Database Mirroring Monitor Job”,就算拆掉數據庫的 mirror,主從上該 job 還在,新增一個數據庫的 mirror,主備還是該 job,沒新增 job,該 job 刪除后,就算還有數據庫的 mirror,該 job 也不會自動重建,但是下次新增數據庫的 mirror 時,該 job 會重建

6、因為從庫的鏡像數據庫無法讀,所以可以在從庫創建快照數據庫來讀,來確定 mirror 是否真正的同步

7、如果想實現主從自動切換,即自動故障轉移功能,必須要有見證服務器

8、如果主庫故障了,從庫狀態變成(Mirror,Disconnected/In Recovery),執行如下語句,恢復從庫的讀寫狀態(必須先執行第二條語句刪除從庫的快照,否則第三條語句無法執行)

ALTER DATABASE testdb SET PARTNER OFF;

drop database testdb_snapshot;

RESTORE DATABASE testdb WITH RECOVERY;

9、如果主庫執行了移除 remove 鏡像操作后需要刪除從庫再重新搭建主庫從庫的鏡像,但是從庫仍然顯示(Mirror,Disconnected/In Recovery),導致從庫無法刪除,且從庫執行 ALTER DATABASE testdb SET PARTNER OFF 后狀態仍是(Mirror,Disconnected/In Recovery),則需要先在主庫配置一下鏡像,然后會報錯鏡像搭建不成功,這個時候從庫狀態顯示(In Recovery), 從庫這時候可以直接刪除。如果從庫還是無法刪除,就先在主庫配置一下鏡像,然后會報錯鏡像搭建不成功,再重啟從庫實例,從庫狀態一般會顯示為(suspect), 這時從庫也可以直接刪除了。

10、手動故障轉移需要將事務安全設置為 FULL,且當伙伴連接在一起并且數據庫已同步時即數據庫處于 SYNCHRONIZED 狀態時,才支持手動故障轉移,登錄主庫執行如下語句,上面 8 非手動故障轉移,因為數據庫不是同步狀態而是 Disconnected/In Recovery

USE master;

ALTER DATABASE testdb SET PARTNER FAILOVER;

11、如果從庫使用主庫的全備和日志備份進行 restore norecovery 后,開始搭建 mirror,但是這個過程中,mirror 還沒有搭建好,主庫又備份了日志,mirror 無法成功搭建,會有如下報錯,只能把主庫備份的日志再 restore norecovery 到從庫,才可以正常搭建 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、從庫無法直接 delete 刪除,這點和 logshipping 不一樣

13、鏡像故障查找,可以從主庫和從庫的日志中找相關信息

14、mirror 數據庫升級后,無法修改數據庫版本 COMPATIBILITY_LEVEL,因為 mirror 是只讀的,暫停 mirror 也無法修改,因為數據庫是 restoring 狀態

15、mirror 相關信息,可以參考視圖 sys.database_mirroring

16、mirror 的從庫,不能執行 backup

17、主庫升級后可以修改 level,從庫升級后無法修改 level,如果主庫修改了 level 一旦主庫的日志同步到從庫后,從庫對應的數據庫的 level 會和主庫一樣

18、主庫新增 datafile 后,從庫也會新增 datafile,并且路徑和主庫的路徑一樣

19、mirror 主庫增加了文件,但是從庫沒有相應的目錄,則同步會 suspend 掛起,就算從庫有默認的 datafile 和 logfile 路徑。在從庫的數據庫日志里面可以看到報錯信息: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 的數據庫無法搭建 mirror,會報錯 A database cannot be enabled for both Database Mirroring and FILESTREAM or for both Database Mirroring and MEMORY_OPTIMIZED_DATA storage

21、搭建 mirror 時遇到一個怪異報錯 Database mirror_1 cannot be opened. It is in the middle of a restore。最后發現是因為數據庫實例的版本是 2016,而搭建 mirror 時使用的 SSMS 版本是 2017,把 SSMS 換成 2016 就沒有再報這個錯誤了,這個算是 sqlserver 的 bug 了

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

create database mirror_snapshot on

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

as snapshot of mirror1;

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

USE msdb;  
EXEC sp_dbmmonitorresults Db1,2, 0;

24、主庫的狀態一直是(Principal,Suspend), 右鍵主庫 – 屬性 –Mirroring–Resume 后,主庫的狀態是(Principal,Synchronizing), 過一會主庫狀態還是(Principal,Suspend), 查看從庫實例的日志有如下內容

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.

    解決方法:右鍵主庫 – 屬性 –Mirroring–Remove Mirroring,從庫狀態變成(Mirror,Disconnected/In Recovery), 再在主庫創建 Mirror,這時會報錯,從庫狀態變成(restoring), 這個時候,把主庫備份的日志拿到從庫去手工 restore,所有日志都 restore 完了后,再在主庫創建 Mirror 就正常了。

25、8 核 CPU,數據庫最大內存 16GB 環境,發現 Database1 在 15 分鐘內產生的日志達到 500MB 以上時,mirror 很容易出現 suspend 的狀態,查看日志發現信息如下,就算你重啟數據庫,還是解決不了這個問題,只能移除 mirror,在從庫上再手工 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、關于 mirror 和 logshipping 的選擇,遇到數據庫在短時間內產生的日志很大,比如 15 分鐘內產生了 500MB,那么 mirror 不如 logshipping,因為 mirror 需要消耗更多的內存,mirror 很容易出現 suspend 的狀態

27、搭建 mirror 時遇到錯誤:服務器網絡地址“TCP://dbalias:5022″ 無法訪問或不存在。請檢查網絡地址名稱,并檢查本地和遠程端點的端口是否正常運行。(Microsoft SQL Server,錯誤: 1418)。

解決思路

27.1、telnet dbalias:5022 是否通

27.2、檢查主備機器的 sqlserver 啟動賬號是否有權限訪問對方實例

27.3、以上兩點都正常的情況下,重啟備機

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

28、監控 mirror 同步更新狀態可以結合使用存儲過程 msdb.sys.sp_dbmmonitorupdate 和系統表 msdb.dbo.dbm_monitor_data

“sqlserver 關于 mirror 鏡像的知識點有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計5362字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 垦利县| 松潘县| 揭东县| 四平市| 商南县| 施秉县| 自治县| 礼泉县| 阿城市| 当雄县| 盐池县| 青铜峡市| 泾阳县| 泰宁县| 南开区| 麟游县| 沅江市| 扎鲁特旗| 凤冈县| 南漳县| 连云港市| 北碚区| 都安| 方正县| 江永县| 南部县| 青海省| 全州县| 夏河县| 屏山县| 祁东县| 彝良县| 平利县| 当雄县| 炉霍县| 云安县| 勃利县| 巴林左旗| 新和县| 万盛区| 龙江县|