2004 年 2 月 01 日 本文介紹了 DB2 UDB 的暫掛 I/O 特性,該特性與分割鏡像結(jié)合為高可用性,數(shù)據(jù)的清除以及測試環(huán)境的創(chuàng)建提供了多種方案。 簡介 隨著全球電子商務(wù)的持續(xù)發(fā)展,維護(hù)大型的數(shù)據(jù)庫并確保它們的高可用性成為了真正 24x7 面向數(shù)據(jù)的業(yè)務(wù)取得成功的關(guān)鍵需求。IBM DB2® Universal Database™ (UDB) 的暫掛 I/O 特性為具有持續(xù)系統(tǒng)可用性的聯(lián)機(jī)分割鏡像提供了一個(gè)接口,以滿足這種關(guān)鍵需求。本文從 DBA 的視角出發(fā),定義了一些主要概念(分割鏡像、暫掛 I/O 以及 db2inidb),并詳細(xì)解釋了三個(gè)在 DB2 UDB 中實(shí)施分割鏡像的不同場景。但因?yàn)榉指钸^程隨廠商而不同,所以必須查閱存儲(chǔ)器廠商提供的相應(yīng)文檔來在適用的系統(tǒng)中創(chuàng)建分割鏡像。
主要概念 為了使用 IBM DB2 Universal Database 來實(shí)施一個(gè)分割鏡像場景,首先要理解下面三個(gè)概念: 分割鏡像 分割鏡像是磁盤卷的一個(gè)相同而獨(dú)立的副本,可附屬于不同的系統(tǒng),并且具有多種用途,如填充測試系統(tǒng)、作為數(shù)據(jù)庫的熱備用副本以及從主機(jī)中清除備份。分割鏡像對(duì)硬件沒有特殊要求。然而,我們強(qiáng)烈推薦用戶使用智能存儲(chǔ)設(shè)備,如 IBM Enterprise Storage Server (ESS),即 "Shark"™,以及 EMC® Symmetrix® 3330。由于使用了 FlashCopy™ 技術(shù),ESS 能完全在內(nèi)部建立準(zhǔn)瞬時(shí)的數(shù)據(jù)副本。Symmetrix 上的 EMC TimeFinder® 軟件的瞬時(shí)分割特性也能以類似的方式分割鏡像。 一個(gè)數(shù)據(jù)庫的分割鏡像包含了數(shù)據(jù)庫目錄的全部內(nèi)容、所有表空間容器、本地?cái)?shù)據(jù)庫目錄以及活動(dòng)日志目錄(若沒有駐留在數(shù)據(jù)庫目錄中)。 僅在使用 db2inidb 工具的 snapshot 選項(xiàng)創(chuàng)建克隆數(shù)據(jù)庫時(shí)才需要用到活動(dòng)日志目錄。另外兩個(gè)選項(xiàng),standby 和 mirror 都不需要分割活動(dòng)日志目錄。 訪問分割鏡像的方法各不相同。具體方法由存儲(chǔ)器廠商的實(shí)現(xiàn)來決定。用戶只能用廠商提供的工具來訪問分割鏡像。 暫掛 I/O 進(jìn)行鏡像分割時(shí),確保源數(shù)據(jù)庫上沒有部分的頁面寫入是很重要的。方法之一就是讓數(shù)據(jù)庫脫機(jī)。但這種需要停機(jī)的方法在真正 24x7 生產(chǎn)環(huán)境中是不可行的。為了在分割鏡像的過程中提供持續(xù)的系統(tǒng)可用性,DB2 Universal Database Version 7 (FixPak 2) 引入了一個(gè)稱作暫掛 I/O 的新特性,它支持聯(lián)機(jī)分割鏡像而無須關(guān)閉數(shù)據(jù)庫。暫掛 I/O 特性通過暫掛源數(shù)據(jù)庫上所有的寫操作來防止部分的頁面寫入。雖然數(shù)據(jù)庫處于寫暫掛模式下,但是所有的表空間狀態(tài)都轉(zhuǎn)換為新的 SUSPEND_WRITE 狀態(tài),所有其他操作也都能正常執(zhí)行。然而,諸如從緩沖池中刷新廢頁或從日志緩沖區(qū)中刷新日志記錄這類需要進(jìn)行磁盤 I/O 的事務(wù)則必須等待。一旦恢復(fù)數(shù)據(jù)庫的寫操作,這些事務(wù)將繼續(xù)正常進(jìn)行。可使用下面的命令來暫掛或恢復(fù)源數(shù)據(jù)庫上的寫操作: db2 set write <suspend | resume> for database | db2inidb 工具 使用暫掛 I/O 特性創(chuàng)建的分割鏡像在被初始化為可用狀態(tài)之前一直處于寫暫掛模式。為了初始化分割鏡像,DB2 V7 FixPak 2 引入了一個(gè)新的工具,叫做 db2inidb。該工具既能執(zhí)行分割鏡像的映像的崩潰恢復(fù),也能將之置于前滾暫掛狀態(tài),這由 db2inidb 命令中的選項(xiàng)來決定,其語法如下所示: db2inidb < database_alias> as < snapshot |standby |mirror > [ relocate using < config_file> ] | "snapshot"選項(xiàng)強(qiáng)制分割鏡像執(zhí)行崩潰恢復(fù),而"standby"或"mirror"選項(xiàng)都使數(shù)據(jù)庫處于前滾暫掛狀態(tài)。而"relocate"選項(xiàng)是在 FixPak 4 中引入的,它可以按照數(shù)據(jù)庫名、數(shù)據(jù)庫目錄路徑、容器路徑、日志路徑及數(shù)據(jù)庫的實(shí)例名稱來重置分割鏡像。
暫掛 I/O 及 db2inidb 的普遍用法 要將暫掛 I/O 特性與 db2inidb 工具相結(jié)合來使用分割鏡像數(shù)據(jù)庫。融合 db2inidb 工具中三個(gè)選項(xiàng)(snapshot、standby 及 mirror)提供的功能及暫掛 I/O 特性,可創(chuàng)建數(shù)據(jù)庫的一個(gè)快照,該快照可用來: - 通過復(fù)制當(dāng)前數(shù)據(jù)來填充測試系統(tǒng)。
- 創(chuàng)建一個(gè)備用數(shù)據(jù)庫來用作熱備用。
- 當(dāng)分割鏡像數(shù)據(jù)庫(只包含 DMS 表空間)處于前滾暫掛狀態(tài)時(shí),執(zhí)行脫機(jī)備份。該功能在 Version 7 FixPak 3 中引入。若處于前滾暫掛狀態(tài),目前還不支持執(zhí)行包含 SMS 表空間的數(shù)據(jù)庫備份。
- 提供一種文件系統(tǒng)上的快速恢復(fù)。
在進(jìn)行鏡像分割之前,有必要用這種暫掛 I/O 特性來確保所有 DB2 數(shù)據(jù)被一致寫入磁盤(即不存在部分的頁面寫入)。該特性還能確保稍后使用 db2inidb 工具恢復(fù)數(shù)據(jù)庫為指定狀態(tài)。db2inidb 工具既能強(qiáng)制數(shù)據(jù)庫執(zhí)行崩潰恢復(fù)(指明 snapshot 選項(xiàng)時(shí)),又能將數(shù)據(jù)庫置于前滾暫掛狀態(tài)(指明 standby 或 mirror 選項(xiàng)時(shí))以支持附加日志文件的處理。
實(shí)施場景 下面三個(gè)場景的實(shí)施展示了如何綜合使用 db2inidb 和暫掛 I/O: 創(chuàng)建克隆數(shù)據(jù)庫來填充測試系統(tǒng) 下面的場景展示了如何使用暫掛 I/O 特性在目標(biāo)系統(tǒng)上創(chuàng)建克隆數(shù)據(jù)庫。在該場景中,分割鏡像數(shù)據(jù)庫進(jìn)行了一次 db2inidb 工具用 snapshot 選項(xiàng)初始化的崩潰恢復(fù)。您可以使用一個(gè)以這種方式產(chǎn)生的克隆數(shù)據(jù)庫來填充測試數(shù)據(jù)庫或生成報(bào)表而不影響生產(chǎn)系統(tǒng)。由于執(zhí)行的是崩潰恢復(fù),克隆數(shù)據(jù)庫將會(huì)啟動(dòng)新的日志鏈,因而無法重放源數(shù)據(jù)庫此后的任何日志文件。這種克隆數(shù)據(jù)庫的備份可用來還原源數(shù)據(jù)庫。但是在執(zhí)行分割后將不能通過源數(shù)據(jù)庫上產(chǎn)生的任何日志記錄來前滾事務(wù)。因此,這僅僅是一個(gè)版本級(jí)別的復(fù)制。 步驟 1:暫掛源數(shù)據(jù)庫上的 I/O 下面的命令暫掛源數(shù)據(jù)庫上 I/O(DB2 客戶機(jī)上的所有寫操作)以確保分割數(shù)據(jù)庫容器的鏡像時(shí)沒有部分頁面的寫入。請(qǐng)注意暫掛 I/O 將不會(huì)斷開與數(shù)據(jù)庫的現(xiàn)有連接且所有的操作都可以正常執(zhí)行。但那些需要進(jìn)行磁盤 I/O 的事務(wù)就必須等待。而一旦恢復(fù) I/O 操作,這些事務(wù)就可以繼續(xù)正常執(zhí)行。 db2 connect to < source-database> db2 set write suspend for database | 步驟 2:分割鏡像 分割鏡像的過程隨廠商而不同。請(qǐng)查閱存儲(chǔ)器廠商隨機(jī)提供的文檔,以了解如何創(chuàng)建分割鏡像。雖然分割鏡像的過程各不相同,但是以下內(nèi)容都必須同時(shí)分割: - 數(shù)據(jù)庫目錄的全部內(nèi)容
- 所有的表空間容器
- 本地?cái)?shù)據(jù)庫目錄
- 活動(dòng)日志目錄(若沒有包含在數(shù)據(jù)庫目錄中)
步驟 3:恢復(fù)源數(shù)據(jù)庫上的 I/O 下面命令恢復(fù)源數(shù)據(jù)庫上的 I/O(DB2 客戶機(jī)上的所有寫操作),而當(dāng)前的事務(wù)仍繼續(xù)正常執(zhí)行。 注意:用于發(fā)出 db2 set write suspend 命令的同一數(shù)據(jù)庫連接也用于發(fā)出 write resume 命令。 db2 set write resume for database | 步驟 4:使得分割鏡像在目標(biāo)機(jī)上可訪問 執(zhí)行鏡像分割后,目標(biāo)機(jī)的管理員必須使用存儲(chǔ)器廠商提供的工具來訪問分割鏡像副本。我們將此過程稱作“安裝”。在目標(biāo)系統(tǒng)上執(zhí)行以下步驟: - 創(chuàng)建一個(gè)與源機(jī)器上相同的數(shù)據(jù)庫實(shí)例。
- 利用 ON 參數(shù)給數(shù)據(jù)庫編制目錄(系統(tǒng)數(shù)據(jù)庫目錄):
db2 catalog database < database-name> as alias on <path> ...... | - 將數(shù)據(jù)庫目錄安裝到與源機(jī)器上相同的目錄。
- 將所有容器安裝到與源機(jī)器上相同的路徑。若容器位于幾個(gè)不同的目錄下,那么要安裝所有的容器目錄。
- 如果日志文件不是位于數(shù)據(jù)庫目錄下,同樣要將日志目錄安到與源機(jī)器上相同的目錄 。
步驟 5:啟動(dòng)目標(biāo)機(jī)上的數(shù)據(jù)庫實(shí)例 啟動(dòng)目標(biāo)機(jī)上的數(shù)據(jù)庫管理器。假設(shè) DB2 注冊表變量 DB2INSTANCE 被設(shè)置為與源機(jī)器中相同的實(shí)例名稱,啟動(dòng)命令就是: 步驟 6:使克隆數(shù)據(jù)庫的狀態(tài)一致 下面的命令初始化一個(gè)崩潰恢復(fù),并將回滾所有未完成的事務(wù)以保證數(shù)據(jù)庫的一致性。從源數(shù)據(jù)庫獲取所有在分割發(fā)生時(shí)活動(dòng)的日志文件很重要。但活動(dòng)日志目錄只能包含分割鏡像的日志文件。崩潰恢復(fù)完成后,將啟動(dòng)新的日志鏈,因而數(shù)據(jù)庫不能通過源數(shù)據(jù)庫的日志執(zhí)行前滾操作。此時(shí),數(shù)據(jù)庫將對(duì)任何操作可用。 db2inidb < target-database> as snapshot | 創(chuàng)建備用數(shù)據(jù)庫以用作熱備用 下面的場景展示了如何使用暫掛 I/O 特性在目標(biāo)系統(tǒng)上創(chuàng)建備用數(shù)據(jù)庫。在熱備用數(shù)據(jù)庫的場景中,源數(shù)據(jù)庫的日志文件將用于目標(biāo)(備用)數(shù)據(jù)庫。備用數(shù)據(jù)庫在執(zhí)行前滾時(shí)將一直處于前滾暫掛狀態(tài)??寺?shù)據(jù)庫(僅針對(duì) DMS)上的 DB2 備份映像可用于恢復(fù)源數(shù)據(jù)庫,因?yàn)樵趫?zhí)行分割鏡像后,它可以通過源數(shù)據(jù)庫產(chǎn)生的日志文件來執(zhí)行前滾恢復(fù)。 步驟 1:暫掛源數(shù)據(jù)庫上的 I/O 下面的命令暫掛源數(shù)據(jù)庫上 I/O(DB2 客戶機(jī)上的所有寫操作),以確保分割數(shù)據(jù)庫容器的鏡像時(shí)沒有部分頁面的寫入。請(qǐng)注意暫掛 I/O 將不會(huì)斷開與數(shù)據(jù)庫的現(xiàn)有連接,且所有的操作都可以正常執(zhí)行。但那些需要進(jìn)行磁盤 I/O 的事務(wù)就必須等待。而一旦恢復(fù) I/O 操作,這些事務(wù)就可以繼續(xù)正常執(zhí)行。 db2 connect to < source-database> db2 set write suspend for database | 步驟 2:分割鏡像 分割鏡像的過程隨廠商而不同。請(qǐng)查閱存儲(chǔ)器廠商隨機(jī)提供的文檔,以了解如何創(chuàng)建分割鏡像。雖然分割鏡像的過程各不相同,但是以下內(nèi)容都必須同時(shí)分割: - 數(shù)據(jù)庫目錄的全部內(nèi)容
- 所有的表空間容器
- 本地?cái)?shù)據(jù)庫目錄
這里 不需要分割活動(dòng)日志目錄。 步驟 3:恢復(fù)源數(shù)據(jù)庫上的 I/O 下面命令恢復(fù)源數(shù)據(jù)庫上的 I/O(DB2 客戶機(jī)上的所有寫操作),而當(dāng)前的事務(wù)仍繼續(xù)正常執(zhí)行。 注意:用于發(fā)出 db2 set write suspend 命令的同一數(shù)據(jù)庫連接也用于發(fā)出 write resume 命令。 db2 set write resume for database | 步驟 4:使分割鏡像在目標(biāo)機(jī)上可訪問 執(zhí)行鏡像分割后,目標(biāo)機(jī)的管理員必須使用存儲(chǔ)器廠商提供的工具來訪問分割鏡像副本。我們將此過程稱作“安裝”。在目標(biāo)系統(tǒng)上執(zhí)行以下步驟: - 創(chuàng)建一個(gè)與源機(jī)器上相同的數(shù)據(jù)庫實(shí)例。
- 利用 ON 參數(shù)給數(shù)據(jù)庫編制目錄(系統(tǒng)數(shù)據(jù)庫目錄):
db2 catalog database < database-name> as alias on <path> ...... | - 將數(shù)據(jù)庫目錄安裝到與源機(jī)器上相同的目錄。
- 將所有容器安裝到與源機(jī)器上相同的路徑。若容器位于幾個(gè)不同的目錄下,那么要安裝所有的容器目錄。
- 如果日志文件不是位于數(shù)據(jù)庫目錄下,要將日志目錄安裝到與源機(jī)器上相同的目錄。
步驟 5:啟動(dòng)目標(biāo)機(jī)上的數(shù)據(jù)庫實(shí)例 啟動(dòng)目標(biāo)機(jī)上的數(shù)據(jù)庫管理器。假設(shè) DB2 注冊表變量 DB2INSTANCE 被設(shè)置為與源機(jī)器中相同的實(shí)例名稱 ,啟動(dòng)命令就是: 步驟 6:將數(shù)據(jù)庫置于前滾模式 下面的命令將分割鏡像數(shù)據(jù)庫置于“前滾暫掛”狀態(tài)。執(zhí)行崩潰恢復(fù)之前,數(shù)據(jù)庫一直處于不一致狀態(tài)。 db2inidb < target database> as standby | 步驟 7:連續(xù)復(fù)制日志文件并前滾 將數(shù)據(jù)庫置于"前滾暫掛"狀態(tài)后,可使用源數(shù)據(jù)庫的日志文件前滾目標(biāo)數(shù)據(jù)庫。您可以用用戶出口程序來自動(dòng)連續(xù)歸檔非活動(dòng)的日志文件。但如果使用了用戶出口,就必須給源數(shù)據(jù)庫及目標(biāo)數(shù)據(jù)庫配置相同的用戶出口程序。 db2 rollforward db < target-database> to end of logs | 步驟 8:激活備用數(shù)據(jù)庫 如果源數(shù)據(jù)庫發(fā)生崩潰,可以為用戶訪問激活目標(biāo)機(jī)上的備用數(shù)據(jù)庫。為了激活備用數(shù)據(jù)庫,您必須解除備用數(shù)據(jù)庫的前滾暫掛狀態(tài)。通過指明 rollforward 命令的“stop”或“complete”選項(xiàng)可將數(shù)據(jù)庫置于一致狀態(tài)。備用數(shù)據(jù)庫處于一致狀態(tài)后,用戶就可以轉(zhuǎn)向它繼續(xù)工作了。但用戶應(yīng)用程序還必須重新連接該備用數(shù)據(jù)庫。備用數(shù)據(jù)庫上產(chǎn)生的日志文件將不能用于源數(shù)據(jù)庫。 當(dāng)目標(biāo)數(shù)據(jù)庫處于前滾暫掛狀態(tài)時(shí),若只含 DMS 表空間,就可以進(jìn)行脫機(jī)備份。該功能是在 Version 7 FixPak 3 中引入的。 db2 rollforward db < target-database> stop | 創(chuàng)建鏡像數(shù)據(jù)庫進(jìn)行快速鏡像文件恢復(fù) 下面的場景展示了如何使用暫掛 I/O 特性在目標(biāo)系統(tǒng)上創(chuàng)建鏡像數(shù)據(jù)庫。其目的是用分割鏡像數(shù)據(jù)庫來還原源數(shù)據(jù)庫并前滾源數(shù)據(jù)庫的日志文件。值得注意的是,您在源數(shù)據(jù)庫上的復(fù)制完成前,分割鏡像必須保持 SUSPEND_WRITE 狀態(tài)。 步驟 1:暫掛源數(shù)據(jù)庫上的 I/O 下面的命令暫掛源數(shù)據(jù)庫上的 I/O(DB2 客戶機(jī)上的所有寫操作),以確保分割數(shù)據(jù)庫容器的鏡像時(shí)沒有部分頁面的寫入。請(qǐng)注意暫掛 I/O 將不會(huì)斷開與數(shù)據(jù)庫的現(xiàn)有連接,且所有的操作都可以正常執(zhí)行。但那些需要進(jìn)行磁盤 I/O 的事務(wù)就必須等待。而一旦恢復(fù) I/O 操作,這些事務(wù)就可以繼續(xù)正常執(zhí)行。 db2 connect to < source-database> db2 set write suspend for database | 步驟 2:分割鏡像 分割鏡像的過程隨廠商而不同。請(qǐng)查閱存儲(chǔ)器廠商隨機(jī)提供的文檔,以了解如何創(chuàng)建分割鏡像。雖然分割鏡像的過程各不相同,但是以下內(nèi)容都必須同時(shí)分割: - 數(shù)據(jù)庫目錄的全部內(nèi)容
- 所有的表空間容器
- 本地?cái)?shù)據(jù)庫目錄
這里 不需要分割活動(dòng)日志目錄。 步驟 3:恢復(fù)源數(shù)據(jù)庫上的 I/O 下面命令恢復(fù)源數(shù)據(jù)庫上的 I/O(DB2 客戶機(jī)上的所有寫操作),而當(dāng)前的事務(wù)仍繼續(xù)正常執(zhí)行。 注意:用于發(fā)出 db2 set write suspend 命令的同一數(shù)據(jù)庫連接也用于發(fā)出 write resume 命令。 db2 set write resume for database | 發(fā)生磁盤故障后恢復(fù)分割鏡像的映像 此場景中不涉及“目標(biāo)”數(shù)據(jù)庫。該場景是用鏡像副本將“源”數(shù)據(jù)庫從磁盤故障中恢復(fù)。不能用 DB2 備份工具來備份分割鏡像,但可以由用操作系統(tǒng)的工具來完成。如果源數(shù)據(jù)庫發(fā)生崩潰,可以通過復(fù)制分割鏡像的映像來恢復(fù)。 步驟 1:停止源數(shù)據(jù)庫實(shí)例 使用下面的 DB2 命令來停止數(shù)據(jù)庫實(shí)例: 步驟 2:恢復(fù)分割鏡像的映像 使用存儲(chǔ)器廠商提供的工具復(fù)制源數(shù)據(jù)庫上分割鏡像數(shù)據(jù)庫的數(shù)據(jù)文件。這里最好不要使用操作系統(tǒng)的工具,因?yàn)椴僮飨到y(tǒng)不了解分割映像。 步驟 3:啟動(dòng)源數(shù)據(jù)庫實(shí)例 恢復(fù)了分割鏡像的映像后啟動(dòng)源數(shù)據(jù)庫實(shí)例。 步驟 4:初始化源數(shù)據(jù)庫上的鏡像副本 這一步用數(shù)據(jù)庫的鏡像副本替換源數(shù)據(jù)庫并將其置于前滾暫掛狀態(tài)。只有在源數(shù)據(jù)庫前滾至日志末尾后,才算完成崩潰恢復(fù)且數(shù)據(jù)庫才處于一致狀態(tài)。 db2inidb < database> as mirror | 步驟 5:前滾至日志末尾 必須使用源數(shù)據(jù)庫的日志文件來前滾數(shù)據(jù)庫: db2 rollforward database < database> to end of logs and complete |
處理分區(qū)環(huán)境 在多個(gè)分區(qū)的環(huán)境中,每個(gè)分區(qū)都看作一個(gè)獨(dú)立的數(shù)據(jù)庫。因此,在進(jìn)行鏡像分割時(shí),您必須暫掛每一個(gè)分區(qū)的 I/O。稍后,您同樣也必須恢復(fù)這些 I/O。對(duì)于 db2inidb 工具也一樣,在使用數(shù)據(jù)庫之前,必須在每個(gè)鏡像分區(qū)上運(yùn)行該工具。 因?yàn)閷⒚總€(gè)分區(qū)看作一個(gè)獨(dú)立的數(shù)據(jù)庫,所以每個(gè)節(jié)點(diǎn)的暫掛操作也都是獨(dú)立的。因此,您不必使用 db2_all 來暫掛所有節(jié)點(diǎn)的 I/O。然而,每個(gè)節(jié)點(diǎn)被依次掛起后,您最后還 必須暫掛目錄節(jié)點(diǎn)。在有多個(gè)分區(qū)的數(shù)據(jù)庫中,暫掛非目錄節(jié)點(diǎn)的 I/O 都需要與目錄節(jié)點(diǎn)建立連接以獲取授權(quán)。因此如果已暫掛目錄節(jié)點(diǎn),該連接將被掛起。 建議:在有多個(gè)分區(qū)的數(shù)據(jù)庫中暫掛 I/O 時(shí),應(yīng)先對(duì)所有節(jié)點(diǎn)分別執(zhí)行“set write suspend”,最后暫掛目錄節(jié)點(diǎn)。這樣就可以保證暫掛每個(gè) I/O 而不影響其他節(jié)點(diǎn)。 db2inidb 工具不需要連接數(shù)據(jù)庫。因此,您可以在每個(gè)分割鏡像上獨(dú)立地運(yùn)行 db2inidb 或通過 db2_all 在所有分區(qū)上同時(shí)運(yùn)行。惟一要求就是啟動(dòng)數(shù)據(jù)庫管理器。 例子:假設(shè) AIX 上的多分區(qū)數(shù)據(jù)庫有 4 個(gè)數(shù)據(jù)庫分區(qū)(0,1,2,3),其中 0 為目錄分區(qū),則應(yīng)該按如下命令來暫掛 I/O: export DBNODE=1; db2 terminate; db2 "connect to < database-alias>"; db2 "set write suspend for database" export DBNODE=2; db2 terminate; db2 "connect to < database-alias>"; db2 "set write suspend for database" export DBNODE=3; db2 terminate; db2 "connect to < database-alias>"; db2 "set write suspend for database" export DBNODE=0; db2 terminate; db2 "connect to < database-alias>"; db2 "set write suspend for database" | 例子:在所有數(shù)據(jù)庫分區(qū)上同時(shí)運(yùn)行 db2inidb: db2_all "db2inidb < target-database> as < options>" |
在同一臺(tái)機(jī)器上重置分割鏡像 因?yàn)榉指铉R像數(shù)據(jù)庫依賴于數(shù)據(jù)庫目錄路徑、容器路徑以及日志目錄路徑,所以除非重新配置這些路徑信息,否則就不能在同一臺(tái)機(jī)器上分割數(shù)據(jù)庫。若要分割數(shù)據(jù)庫,必須顯式地重新設(shè)置數(shù)據(jù)庫目錄、容器及日志目錄路徑。只要您將它們移至同一臺(tái)機(jī)器上的一個(gè)新目錄下,數(shù)據(jù)庫在啟動(dòng)時(shí)就不會(huì)找到它們。啟動(dòng)目標(biāo)系統(tǒng)時(shí)也會(huì)認(rèn)為 DB2 實(shí)例的設(shè)置與源機(jī)器相同,認(rèn)為實(shí)例所有者的用戶 ID 及組 ID 都相同。 DB2 UDB Version 7 的 FixPak 4 為 db2inidb 提供了一個(gè)新選項(xiàng)稱作“relocate”。relocate 選項(xiàng)允許您改變數(shù)據(jù)庫名、數(shù)據(jù)庫目錄路徑、容器路徑、日志路徑以及數(shù)據(jù)庫上的實(shí)例名。利用這一新選項(xiàng),您可以在同一系統(tǒng)中分割鏡像。 要使用 relocate 選項(xiàng),需要提供一個(gè)輸入文本文件,其中包含重置分割鏡像數(shù)據(jù)庫所需的配置信息。這是因?yàn)?relocate 選項(xiàng)在后臺(tái)調(diào)用 db2relocatedb 命令,關(guān)于配置文件選項(xiàng)的細(xì)節(jié),請(qǐng)查閱 Fixpak 4 的 版本信息 中 "db2relocatedb(new command)" 小節(jié)。 簡述配置文件的格式如下: DB_NAME=oldName,newName DB_PATH= oldPath,newPath INSTANCE= oldInst,newInst NODENUM= nodeNumber LOG_DIR= oldDirPath,newDirPath CONT_PATH= oldContPath1,newContPath1 CONT_PATH= oldContPath2,newContPath2
使用 relocate 的 db2inidb 命令 的語法如下所示: db2inidb < target-database> as < options> relocate using < config-file> |
結(jié)束語 DB2 Universal Database 的暫掛 I/O 特性與各種智能存儲(chǔ)設(shè)備提供的分割鏡像的功能相結(jié)合,可以通過提供以下功能來使您實(shí)現(xiàn)大型的真正 24x7 任務(wù)關(guān)鍵型的數(shù)據(jù)庫: - “零”停機(jī)時(shí)間的持續(xù)系統(tǒng)可用性
- 大型數(shù)據(jù)庫的快速備份及災(zāi)難恢復(fù)方法
- 從生產(chǎn)數(shù)據(jù)庫分離備份的能力
- 最大程度降低對(duì)生產(chǎn)數(shù)據(jù)庫的影響
- 通過當(dāng)前數(shù)據(jù)的副本快速填充測試數(shù)據(jù)庫
參考資料 有關(guān) DB2 中暫掛 I/O 特性的更多信息,請(qǐng)查閱:
|