的TSM備份恢復(fù)測(cè)試實(shí)踐)
簡(jiǎn)介資源包內(nèi)含一份docx格式技術(shù)文檔大小約1.83MB圍繞TSM 6.3 Linux、Mhvtl、Oracle與DB2的備份恢復(fù)測(cè)試展開(kāi)。內(nèi)容面向系統(tǒng)運(yùn)維、備份管理員及數(shù)據(jù)庫(kù)DBA適合在企業(yè)級(jí)備份恢復(fù)方案驗(yàn)證或項(xiàng)目實(shí)施前參考。文檔以CentOS 6.5為實(shí)驗(yàn)平臺(tái)第一部分介紹Mhvtl虛擬帶庫(kù)軟件包括在Linux下編譯安裝、配置以及帶庫(kù)可用性測(cè)試第二部分講解TSM主服務(wù)器安裝配置包括存儲(chǔ)設(shè)備定義、卷配置、備份策略創(chuàng)建并執(zhí)行備份。第三部分是基于TSM的Oracle備份從客戶端環(huán)境準(zhǔn)備、NUB客戶端安裝到服務(wù)器端配置再到手工發(fā)起備份。第四部分為Oracle異機(jī)恢復(fù)涉及環(huán)境準(zhǔn)備、修改TSM授權(quán)文件并通過(guò)RMAN和TSM命令依次恢復(fù)Spfile、控制文件、數(shù)據(jù)文件、歸檔日志最后打開(kāi)數(shù)據(jù)庫(kù)。整份文檔操作步驟完整命令具體可幫助讀者搭建一套可運(yùn)行的TSM加Mhvtl備份恢復(fù)測(cè)試環(huán)境掌握虛擬帶庫(kù)與TSM配合完成數(shù)據(jù)庫(kù)備份恢復(fù)的關(guān)鍵方法。目前已有241人學(xué)習(xí)適合需要落地同類備份方案的工程師。1. 這套備份恢復(fù)測(cè)試在解決什么問(wèn)題把標(biāo)題拆開(kāi)看這是一個(gè)典型的“沒(méi)有物理磁帶庫(kù)也要把備份鏈路完整落地”的測(cè)試場(chǎng)景。TSM 6.3 是服務(wù)端Mhvtl 是跑在 Linux 上的虛擬磁帶庫(kù)Oracle 和 DB2 是真正要被保護(hù)的數(shù)據(jù)庫(kù)。對(duì)絕大多數(shù)備份運(yùn)維人員來(lái)說(shuō)手頭不一定有帶庫(kù)真機(jī)但項(xiàng)目驗(yàn)收、方案交付又必須證明備份能寫進(jìn)去、能讀出來(lái)、數(shù)據(jù)庫(kù)能恢復(fù)。這套組合解決的問(wèn)題就是用一臺(tái)普通 Linux 服務(wù)器模擬真實(shí)帶庫(kù)行為讓 TSM 6.3 認(rèn)認(rèn)真真走完從服務(wù)端、存儲(chǔ)池、策略到 Oracle RMAN/DB2 備份調(diào)度和恢復(fù)演練的完整閉環(huán)而且結(jié)果可以拿給項(xiàng)目方看。適合誰(shuí)正在做備份方案選型測(cè)試、需要輸出測(cè)試報(bào)告、或者想搞懂 TSM 與數(shù)據(jù)庫(kù)備份機(jī)制的人。2. 用 Mhvtl 在 Linux 上搭一套虛擬磁帶庫(kù)最小可跑環(huán)境2.1 為什么數(shù)據(jù)庫(kù)備份測(cè)試要用虛擬磁帶庫(kù)而不是直接寫磁盤路徑很多剛接觸 TSM 的人會(huì)問(wèn)反正都是存文件為什么不能讓 TSM 直接把備份寫到普通目錄原因在于 TSM 6.3 的備份域模型里“磁帶庫(kù)”是一個(gè)帶設(shè)備語(yǔ)義的對(duì)象。數(shù)據(jù)庫(kù)客戶端通過(guò) SBTSystem Backup to Tape接口和帶庫(kù)驅(qū)動(dòng)打交道驅(qū)動(dòng)會(huì)向 TSM 請(qǐng)求掛載一卷磁帶、定位到特定位置如果底層沒(méi)有真正的磁帶設(shè)備語(yǔ)義RMAN 和 DB2 的備份通道根本拉不起來(lái)。Mhvtl 做的就是把這層語(yǔ)義模擬出來(lái)它把文件按卷組織通過(guò) SCSI 命令仿真讓上層以為自己在操作一臺(tái) LTO 帶庫(kù)。備份數(shù)據(jù)最終落在 Linux 文件系統(tǒng)里但協(xié)議棧上的體驗(yàn)與真實(shí)帶庫(kù)一致。我一般會(huì)在 CentOS 或 Ubuntu 服務(wù)器上裝 Mhvtl原因很簡(jiǎn)單它不需要額外硬件普通 KVM 虛機(jī)也能跑而且支持多驅(qū)動(dòng)器、多槽位足夠模擬出測(cè)試所需的帶庫(kù)拓?fù)?。更重要的一點(diǎn)Mhvtl 能讓你反復(fù)做恢復(fù)測(cè)試而不心疼磁帶。真實(shí)帶庫(kù)的驅(qū)動(dòng)器壽命是有限資源虛擬環(huán)境下隨便折騰出問(wèn)題隨時(shí)清掉重來(lái)這本身就是測(cè)試環(huán)境最大的價(jià)值。2.2 安裝 Mhvtl 并驗(yàn)證設(shè)備是否被系統(tǒng)識(shí)別以常見(jiàn)發(fā)行版為例安裝 Mhvtl 需要先確認(rèn)系統(tǒng)里有 sg3_utils 和 lsscsi這兩個(gè)工具負(fù)責(zé)底層 SCSI 設(shè)備的管理與查看。編譯安裝完成后配置集中在 /etc/mhvtl/device.conf它描述了一臺(tái)虛擬帶庫(kù)里有幾個(gè)驅(qū)動(dòng)器、多大容量、什么類型。下面是一個(gè)最小配置# /etc/mhvtl/device.conf # VTL: 虛擬帶庫(kù)標(biāo)識(shí) VTL 1 # 第一個(gè)驅(qū)動(dòng)器模擬 LTO-5容量單位是 MB DRIVE 1 LTO5 400000 # 槽位定義給 TSM 提供可用的空帶 SLOT 1 40配置的含義VTL 1 表示創(chuàng)建一臺(tái)虛擬帶庫(kù)DRIVE 1 LTO5 400000 表示第一個(gè)驅(qū)動(dòng)器的類型是 LTO-5、容量按 400 GB 模擬SLOT 1 40 表示 40 個(gè)槽位。改完配置后重啟 mhvtl 服務(wù)再用 lsscsi 確認(rèn)系統(tǒng)是否識(shí)別出新的磁帶設(shè)備systemctl restart mhvtl lsscsi -g | grep -E tape|mediumx如果看到類似 /dev/sgX 和 /dev/stX 的設(shè)備節(jié)點(diǎn)輸出說(shuō)明 Mhvtl 已經(jīng)把虛擬帶庫(kù)暴露給了操作系統(tǒng)。注意我強(qiáng)調(diào)在配置 TSM 之前必須先確認(rèn)設(shè)備節(jié)點(diǎn)因?yàn)?Mhvtl 在重啟后設(shè)備號(hào)可能變化這塊如果不做前置檢查后面 TSM 定義路徑時(shí)很容易踩坑。2.3 給虛擬帶庫(kù)裝磁帶并確認(rèn)機(jī)械臂可用帶庫(kù)只有驅(qū)動(dòng)器還不夠TSM 做備份調(diào)度時(shí)需要一個(gè)“機(jī)械臂”來(lái)抓取磁帶放入驅(qū)動(dòng)器這個(gè)動(dòng)作在 Mhvtl 里由虛擬的 medium changer 承擔(dān)。啟動(dòng)服務(wù)后可以用 mtx 工具測(cè)試機(jī)械臂動(dòng)作是否正常mtx -f /dev/sg5 status mtx -f /dev/sg5 load 1 1 mtx -f /dev/sg5 unload 1 1先看 status 是否列出了 40 個(gè)槽位和驅(qū)動(dòng)器然后執(zhí)行 load 1 1意思是把 1 號(hào)槽位的磁帶裝載進(jìn) 1 號(hào)驅(qū)動(dòng)器再 unload。能成功執(zhí)行這兩步說(shuō)明機(jī)械臂通路正常。這一步很容易被跳過(guò)但它是 TSM 定義路徑之前必須確認(rèn)的底層能力如果這里失敗后面 TSM 里的 checkout/checkin 全都會(huì)報(bào)設(shè)備忙或未就緒。我遇到過(guò)一上來(lái)就配 TSM、結(jié)果所有命令都卡在掛載階段的情況回頭排查才發(fā)現(xiàn)是 Mhvtl 的 changer 設(shè)備沒(méi)加載對(duì)。3. TSM 6.3 服務(wù)端初始化從設(shè)備定義到策略綁定3.1 初始化 TSM 實(shí)例與管理員賬號(hào)Mhvtl 環(huán)境就緒后開(kāi)始安裝 TSM 6.3 服務(wù)端。安裝完成后第一步是初始化實(shí)例用 dsmserv 命令創(chuàng)建數(shù)據(jù)庫(kù)和日志卷。TSM 服務(wù)端的元數(shù)據(jù)本身存放在 TSM 的數(shù)據(jù)庫(kù)里這個(gè)數(shù)據(jù)庫(kù)也需要分配存儲(chǔ)空間。常見(jiàn)做法是單獨(dú)給 TSM 數(shù)據(jù)庫(kù)卷一個(gè)目錄避免和備份數(shù)據(jù)混在一起mkdir -p /tsmdata/db /tsmdata/log dsmserv format -data /tsmdata/db/tsmdb.vol -log /tsmdata/log/tsmlog.vol dsmservformat 命令創(chuàng)建了 TSM 數(shù)據(jù)庫(kù)卷和日志卷dsmserv 啟動(dòng)服務(wù)端進(jìn)程。首次啟動(dòng)后需要用 dsmadmc 進(jìn)入管理命令行創(chuàng)建管理員 ID 并設(shè)置密碼dsmadmc -seidadmin -passwordadmin grant authority admin sysadmin這里 -seid 和 -password 的默認(rèn)值在安裝文檔里都有生產(chǎn)環(huán)境務(wù)必改成強(qiáng)密碼。grant authority 把系統(tǒng)管理員權(quán)限授予該用戶。TSM 6.3 的管理邏輯是管理員登錄后所有后續(xù)操作都在 dsmadmc 命令行里完成。我一般把這一步稱為“服務(wù)端的戶口本”后面的設(shè)備、存儲(chǔ)池、策略全部登記在這個(gè)實(shí)例下。3.2 定義磁帶庫(kù)、路徑與驅(qū)動(dòng)器TSM 服務(wù)端不會(huì)自動(dòng)發(fā)現(xiàn) Mhvtl 的設(shè)備必須手動(dòng)定義。注意設(shè)備號(hào)要以上一步 lsscsi 查到的為準(zhǔn)Mhvtl 重啟后這個(gè)號(hào)會(huì)變這也是整個(gè)測(cè)試流程里最容易翻車的環(huán)節(jié)。下面是一組完整的定義命令# 定義磁帶庫(kù)類型為 SCSI define library MHVTL_LIB librarytypeSCSI # 定義服務(wù)端到庫(kù)控制器的路徑 define path TSM_SERVER MHVTL_LIB srctserver desttlibrary device/dev/sg5 online # 定義驅(qū)動(dòng)器 define drive MHVTL_LIB DRIVE01 # 定義路徑的驅(qū)動(dòng)器部分 define path TSM_SERVER DRIVE01 srctserver desttdrive libraryMHVTL_LIB device/dev/sg6 onlinedefine library 的 librarytypeSCSI 表示這是一臺(tái)通過(guò) SCSI 控制的帶庫(kù)對(duì)應(yīng) Mhvtl 暴露的 medium changer 設(shè)備。define path 是告訴 TSM 服務(wù)端通過(guò)哪個(gè)設(shè)備節(jié)點(diǎn)訪問(wèn)庫(kù)控制器和驅(qū)動(dòng)器。DRIVE01 是驅(qū)動(dòng)器在 TSM 側(cè)的邏輯名可以和 Mhvtl 的驅(qū)動(dòng)器編號(hào)不對(duì)應(yīng)但路徑必須指對(duì)。最后可以用 q path 和 q drive 查看定義是否生效q path q drive運(yùn)行后如果狀態(tài)顯示 ONLINE說(shuō)明服務(wù)端已經(jīng)能訪問(wèn)虛擬帶庫(kù)的機(jī)械臂和驅(qū)動(dòng)器。這里有個(gè)細(xì)節(jié)TSM 服務(wù)端主機(jī)名 TSM_SERVER 要和你當(dāng)前服務(wù)器的主機(jī)名一致很多人在這里順手寫錯(cuò)結(jié)果路徑定義總是報(bào)錯(cuò)。3.3 定義設(shè)備類、存儲(chǔ)池與策略域設(shè)備類決定備份卷的寫入格式存儲(chǔ)池是 TSM 管理物理卷的容器策略域決定備份保留多久。三者缺一不可順序通常是先設(shè)備類再存儲(chǔ)池最后策略。用下面一組命令完成# 定義設(shè)備類指向庫(kù)并指定格式 define devclass MHVTL_CLS devtypeLTO libraryMHVTL_LIB # 定義存儲(chǔ)池綁定設(shè)備類 define stgpool VTLPOOL MHVTL_CLS maxscratch50 # 定義策略域與管理類 define domain BACKUP_DOM define mgmtclass BACKUP_DOM STANDARD_MC # 綁定管理類到存儲(chǔ)池 define copygroup BACKUP_DOM STANDARD_MC STANDARDdevclass 里的 devtypeLTO 要和 Mhvtl 模擬的 LTO-5 匹配TSM 6.3 支持直接識(shí)別 LTO 類型。VTLPOOL 創(chuàng)建時(shí) maxscratch50 意思是允許存儲(chǔ)池動(dòng)態(tài)創(chuàng)建最多 50 卷臨時(shí)磁帶這個(gè)參數(shù)太小時(shí)備份會(huì)在高峰期因?yàn)闊o(wú)可用卷而失敗。管理類 BACKUP_DOM 下的 copygroup 里需要定義備份數(shù)據(jù)的保留策略# 在 copygroup 里定義數(shù)據(jù)保留版本與時(shí)間 update copygroup BACKUP_DOM STANDARD_MC STANDARD verexists7 verdeleted2 retextra1verexists7 表示每個(gè)文件保留 7 個(gè)版本verdeleted2 表示文件被刪除后再保留 2 個(gè)版本retextra1 表示歸檔類數(shù)據(jù)額外保留 1 份。這個(gè)參數(shù)組合是我做測(cè)試常用的保守值既能讓恢復(fù)測(cè)試有足夠版本可選又不會(huì)讓虛擬磁帶庫(kù)被歷史版本塞滿。3.4 注冊(cè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)并測(cè)試一次手工備份TSM 的服務(wù)端配置最終要落到“誰(shuí)來(lái)備份”的問(wèn)題上。Oracle 和 DB2 在 TSM 里都以節(jié)點(diǎn)的身份出現(xiàn)節(jié)點(diǎn)名需要和數(shù)據(jù)庫(kù)客戶端配置完全一致。注冊(cè)兩個(gè)節(jié)點(diǎn)的命令如下register node ORACLE_NODE orapass register node DB2_NODE db2pass密碼是客戶端連接時(shí)用的測(cè)試環(huán)境可以簡(jiǎn)單些生產(chǎn)環(huán)境必須用加密傳輸和復(fù)雜密碼。節(jié)點(diǎn)注冊(cè)后就可以通過(guò) TSM 的命令行發(fā)起一次手工備份驗(yàn)證最直觀的方式是備份 TSM 自身的數(shù)據(jù)庫(kù)backup db q processbackup db 會(huì)把 TSM 元數(shù)據(jù)寫入 VTLPOOLq process 可以觀察當(dāng)前有沒(méi)有活動(dòng)進(jìn)程。我建議第一次跑到這里就停下來(lái)先確認(rèn) TSM 自身能備份成功再繼續(xù)配置數(shù)據(jù)庫(kù)客戶端。這樣排查問(wèn)題時(shí)就能劃定邊界TSM 鏈路有問(wèn)題還是數(shù)據(jù)庫(kù)客戶端配置有問(wèn)題。4. Oracle 與 DB2 備份恢復(fù)測(cè)試兩套通道同一套驗(yàn)證邏輯4.1 Oracle 側(cè)安裝 TSM 客戶端并配置 tdpo.optOracle 備份走的是 SBT 接口TSM 6.3 時(shí)代對(duì)應(yīng)的組件是 TDP for Oracle。安裝完成后配置集中在 dsm.sys 和 tdpo.opt 兩個(gè)文件。dsm.sys 描述服務(wù)端連接信息tdpo.opt 描述備份節(jié)點(diǎn)的可選參數(shù)。下面是一個(gè)典型的配置# /opt/tivoli/tsm/client/oracle/bin/tdpo.opt TDPO_NODE ORACLE_NODE TDPO_PSWDPATH /opt/tivoli/tsm/client/oracle/bin TDPO_MGMTCLASS STANDARD_MC TDPO_DATAFORMAT 2TDPO_NODE 必須和 TSM 服務(wù)端注冊(cè)的節(jié)點(diǎn)名一致TDPO_PSWDPATH 指定保存密碼文件的位置TDPO_MGMTCLASS 指定備份寫入哪個(gè)管理類。TDPO_DATAFORMAT 2 使用 TSM 的專有格式恢復(fù)時(shí)只能通過(guò) TSM 讀取。設(shè)置好之后用 dsmc 命令測(cè)試連通性dsmc -seidORACLE_NODE -passwordorapass q nodename能查詢到節(jié)點(diǎn)信息說(shuō)明客戶端與服務(wù)端的握手成功。這一步不通后面 RMAN 里 100% 報(bào) SBT 通道初始化失敗。4.2 用 RMAN 發(fā)起 Oracle 備份與恢復(fù)驗(yàn)證連通性確認(rèn)后RMAN 側(cè)只需要分配一個(gè) SBT 通道。備份腳本如下rman target / run { allocate channel ch1 type sbt_tape parms ENV(TDPO_OPTFILE/opt/tivoli/tsm/client/oracle/bin/tdpo.opt); backup database plus archivelog; release channel ch1; }allocate channel 里的 sbt_tape 是固定寫法關(guān)鍵在于 ENV 參數(shù)必須指向 tdpo.opt 的絕對(duì)路徑。RMAN 啟動(dòng)時(shí)會(huì)把控制文件里記錄的備份信息與 TSM 的卷對(duì)應(yīng)起來(lái)。備份完成后用 list backup 查看備份集然后做一次恢復(fù)驗(yàn)證rman target / run { allocate channel ch1 type sbt_tape parms ENV(TDPO_OPTFILE/opt/tivoli/tsm/client/oracle/bin/tdpo.opt); restore database; recover database; }restore 是從 TSM 卷上把數(shù)據(jù)文件讀回來(lái)recover 是應(yīng)用歸檔日志把數(shù)據(jù)庫(kù)推進(jìn)到一致?tīng)顟B(tài)。很多團(tuán)隊(duì)只做備份不做恢復(fù)這是自欺欺人。在測(cè)試環(huán)境里我強(qiáng)烈建議每次備份后立刻做一次 restore 到不同目錄的演練因?yàn)椤皞浞莩晒Α焙汀澳芑謴?fù)”之間隔著一整條鏈路。4.3 DB2 側(cè)配置 TSM 參數(shù)并執(zhí)行備份DB2 走的是 TSM 的 API 客戶端不依賴 RMAN配置直接在 DB2 實(shí)例參數(shù)里完成。需要設(shè)置三個(gè)參數(shù)TSM_MGMTCLASS、TSM_NODE、TSM_OWNER。下面以 SAMPLE 庫(kù)為例db2 update db cfg for SAMPLE using TSM_MGMTCLASS STANDARD_MC TSM_NODE DB2_NODE TSM_OWNER db2inst1TSM_OWNER 填寫運(yùn)行 DB2 實(shí)例的操作系統(tǒng)用戶名TSM 會(huì)以這個(gè)用戶的身份去訪問(wèn)密碼文件。配置完成后發(fā)起一次備份db2 backup db SAMPLE use TSM db2 list history backup all for SAMPLEbackup 命令會(huì)調(diào)用 TSM 的 API 把數(shù)據(jù)庫(kù)寫入虛擬磁帶庫(kù)list history 能看到備份映像的時(shí)間戳。DB2 的備份映像在 TSM 里是以“節(jié)點(diǎn)時(shí)間戳”為標(biāo)識(shí)的后續(xù)恢復(fù)必須精確指定。4.4 DB2 恢復(fù)驗(yàn)證的兩種方式DB2 恢復(fù)有兩種典型場(chǎng)景恢復(fù)到一個(gè)全新數(shù)據(jù)庫(kù)或恢復(fù)到原庫(kù)并前滾到指定時(shí)間點(diǎn)。全庫(kù)恢復(fù)的命令如下db2 restore db SAMPLE from TSM taken at 2025-01-10-12.00.00taken at 后面的時(shí)間戳來(lái)自 list history 的輸出寫錯(cuò)一個(gè)字符就會(huì)報(bào)映像不存在。如果還有歸檔日志要前滾追加 rollforward 命令db2 rollforward db SAMPLE to end of logs恢復(fù)測(cè)試?yán)镒畛R?jiàn)的失敗是時(shí)間戳寫錯(cuò)、或者原庫(kù)仍有連接會(huì)話導(dǎo)致文件被占用。習(xí)慣上我會(huì)先把應(yīng)用連接斷開(kāi)再執(zhí)行 restore。5. 避坑Mhvtl、TSM 與數(shù)據(jù)庫(kù)客戶端之間的典型故障5.1 現(xiàn)象TSM 定義路徑時(shí)提示設(shè)備不可用Mhvtl 重啟后/dev/sg5、/dev/sg6 這類設(shè)備號(hào)經(jīng)常前后對(duì)調(diào)TSM 里定義好的路徑就會(huì)指向錯(cuò)誤的設(shè)備。原因Linux 對(duì) SCSI 設(shè)備的命名取決于內(nèi)核枚舉順序Mhvtl 服務(wù)啟動(dòng)時(shí)機(jī)變化會(huì)改變枚舉結(jié)果。解決不要用固定設(shè)備號(hào)先執(zhí)行 lsscsi -g 查看當(dāng)前實(shí)際設(shè)備再重新 define path。更徹底的辦法是給 Mhvtl 設(shè)備寫 udev 規(guī)則根據(jù)序列號(hào)生成固定軟鏈接讓 TSM 始終引用同一個(gè)路徑。5.2 現(xiàn)象Oracle 的 RMAN 通道一直處于等待狀態(tài)分配 SBT 通道后RMAN 長(zhǎng)時(shí)間停在 Waiting for tape mount沒(méi)有任何報(bào)錯(cuò)。原因TSM 服務(wù)端沒(méi)有可用空卷存儲(chǔ)池 maxscratch 設(shè)置過(guò)小或虛擬帶庫(kù)里沒(méi)有足夠空帶。解決用 q stgpool VTLPOOL 查看 available scratch volume 數(shù)量如果為 0在 TSM 里執(zhí)行 checkout 把帶庫(kù)里的空帶移入存儲(chǔ)池或者直接更新 maxscratch 到更大值。我習(xí)慣把 maxscratch 設(shè)到 50Mhvtl 里預(yù)留 10 卷空帶專門給測(cè)試用。5.3 現(xiàn)象DB2 備份報(bào) TSM 密碼文件認(rèn)證失敗db2 backup 時(shí)提示 TSM password file 無(wú)法讀取。原因TSM_OWNER 指定的用戶和實(shí)際執(zhí)行命令的操作系統(tǒng)用戶不一致密碼文件存在了別的用戶目錄下。解決先確認(rèn)執(zhí)行 db2 backup 的 Linux 用戶再在 TSM 客戶端執(zhí)行 dsmc 生成密碼文件時(shí)用同一用戶。常見(jiàn)做法是直接切換到 db2inst1 用戶登錄再執(zhí)行 dsmc 初始化密碼文件。5.4 現(xiàn)象恢復(fù)測(cè)試把備份卷刪沒(méi)了restore 時(shí)提示備份映像的卷已被回收TDPO 返回卷不可用。原因TSM 存儲(chǔ)池啟用了自動(dòng)回收reclamation測(cè)試環(huán)境的保留期設(shè)置太短備份數(shù)據(jù)還沒(méi)過(guò)期就被回收掉了。解決在測(cè)試階段把 copygroup 的 verexists 調(diào)大并把存儲(chǔ)池的 reclamation threshold 調(diào)高比如設(shè)到 90意思是卷使用率達(dá)到 90% 才觸發(fā)回收。生產(chǎn)環(huán)境按業(yè)務(wù)要求設(shè)置測(cè)試環(huán)境以“能反復(fù)恢復(fù)”為第一目標(biāo)。5.5 現(xiàn)象Mhvtl 主機(jī)重啟后 TSM 服務(wù)端連不上虛擬帶庫(kù)原因Mhvtl 服務(wù)沒(méi)有設(shè)置開(kāi)機(jī)自啟或者 TSM 服務(wù)端先于 Mhvtl 啟動(dòng)導(dǎo)致驅(qū)動(dòng)器和庫(kù)路徑全部掉線。解決把 mhvtl 加入 systemctl enable在 TSM 服務(wù)啟動(dòng)前確認(rèn) lsscsi 輸出正常。穩(wěn)妥的做法是加一個(gè)監(jiān)控腳本檢測(cè)到 Mhvtl 設(shè)備不存在時(shí)不自啟 TSM避免服務(wù)端在 10 分鐘超時(shí)上反復(fù)重試帶來(lái)的日志刷屏。6. 把恢復(fù)測(cè)試做成日常習(xí)慣一個(gè)可以反復(fù)執(zhí)行的驗(yàn)證腳本測(cè)試環(huán)境的價(jià)值在于可重復(fù)。我把整套驗(yàn)證固化成一個(gè)腳本每次改完配置先跑一遍確認(rèn)鏈路完好再交給項(xiàng)目方。腳本主要檢查四件事Mhvtl 設(shè)備是否在線、TSM 存儲(chǔ)池狀態(tài)、Oracle 和 DB2 各自的備份映像時(shí)間、以及最近一次的恢復(fù)是否成功。骨架如下#!/bin/bash set -e # 1. 檢查 Mhvtl 設(shè)備 lsscsi -g | grep -E tape|mediumx # 2. 檢查 TSM 存儲(chǔ)池和驅(qū)動(dòng)器 dsmadmc -seidadmin -passwordadmin q stgpool VTLPOOL | grep AVAILABLE dsmadmc -seidadmin -passwordadmin q drive | grep ONLINE # 3. 檢查數(shù)據(jù)庫(kù)側(cè)最近的備份映像 rman target / catalog /dev/null EOF list backup of database completed after sysdate-1; EOF # 4. 打印 DB2 歷史備份 db2 list history backup all for SAMPLE | grep 2025-腳本里沒(méi)有實(shí)際的恢復(fù)動(dòng)作它只是把“萬(wàn)事俱備”的狀態(tài)用命令確認(rèn)一遍。真正恢復(fù)驗(yàn)證我要求每周至少手動(dòng)做一次Oracle 恢復(fù)到一個(gè)中間目錄、DB2 恢復(fù)到獨(dú)立實(shí)例而不是在原庫(kù)上覆蓋。這能保證一旦生產(chǎn)環(huán)境出問(wèn)題團(tuán)隊(duì)對(duì)恢復(fù)流程有肌肉記憶。另一個(gè)實(shí)用技巧是給 TSM 啟用心跳監(jiān)控。在 dsmadmc 里定義 schedule讓系統(tǒng)每 30 分鐘對(duì) VTLPOOL 做一次一致性檢查發(fā)現(xiàn)卷?yè)p壞立刻告警。虛擬帶庫(kù)的卷本質(zhì)是文件磁盤損壞比物理磁帶更難發(fā)現(xiàn)定時(shí)檢查比事后補(bǔ)救值錢得多。我對(duì)這套環(huán)境的最終態(tài)度是備份測(cè)試不是“跑通一次備份”就結(jié)束而是讓恢復(fù)成為習(xí)慣。沒(méi)有恢復(fù)驗(yàn)證的備份測(cè)試文檔充其量是一份記錄不是一套可交付的能力。在這套 Mhvtl TSM Oracle DB2 的框架里把恢復(fù)演練次數(shù)做到和備份次數(shù)一樣頻繁才是真正把環(huán)境用到位了。希望這些步驟和教訓(xùn)能幫到你。本文還有配套的精品資源點(diǎn)擊獲取