DB2 分區(qū)數(shù)據(jù)庫(kù)備份與恢復(fù)操作如何進(jìn)行?
我們今天主要向大家描述的是DB2 分區(qū)數(shù)據(jù)庫(kù)進(jìn)行備份與恢復(fù)操作的正確操作步驟,我們主要是通過(guò)舉例說(shuō)明的方式來(lái)說(shuō)明啟用了前滾恢復(fù)模式的 DB2 分區(qū)數(shù)據(jù)庫(kù)的正確操作方式,正確地利用 BACKUP/RESTORE/ROLLFORWARD 等命令進(jìn)行備份。
恢復(fù)以及帶有 OVERFLOW 選項(xiàng)的前滾操作。對(duì)于 DB2 的分區(qū)數(shù)據(jù)庫(kù),某些直接發(fā)出的 DB2 命令只作用于當(dāng)前一個(gè)分區(qū),備份和恢復(fù)(BACKUP/RESTORE)就屬于這一類(lèi)命令。但是對(duì)于硬盤(pán)數(shù)據(jù)恢復(fù)分區(qū)數(shù)據(jù)庫(kù),由于同一數(shù)據(jù)庫(kù)的數(shù)據(jù)分布在多個(gè)分區(qū)上。
則對(duì)它的備份和恢復(fù)操作就要考慮到各分區(qū)上數(shù)據(jù)的完整及同步問(wèn)題,因此可以在 DB2 命令前加上 db2_all 命令,以便 DB2 命令在數(shù)據(jù)庫(kù)的各個(gè)分區(qū)上被執(zhí)行,而無(wú)需分別對(duì)每個(gè)分區(qū)重復(fù)發(fā)出相同的命令。
另外在 DB2 中,啟用了前滾數(shù)據(jù)恢復(fù)模式的數(shù)據(jù)庫(kù),使用的是歸檔日志方式,而非缺省的循環(huán)日志方式。這樣,在進(jìn)行恢復(fù)操作時(shí),可在利用 RESTORE 命令恢復(fù)了數(shù)據(jù)庫(kù)或表空間的備份后,再通過(guò)前滾命令(ROLLFORWARD)命令前滾歸檔日志中的事務(wù),恢復(fù)數(shù)據(jù)庫(kù)備份時(shí)間點(diǎn)之后提交的事務(wù),***程度的保護(hù)數(shù)據(jù)庫(kù)的數(shù)據(jù)。
與備份和恢復(fù)命令不同的是,前滾命令僅能通過(guò)在分區(qū)數(shù)據(jù)庫(kù)的編目分區(qū)上運(yùn)行,來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)各分區(qū)的前滾操作。
下面就以一個(gè)啟用了前滾恢復(fù)模式的分區(qū)數(shù)據(jù)庫(kù) SAMPLE 為例介紹其備份、恢復(fù)以及前滾操作的具體步驟。這里假設(shè)該數(shù)據(jù)庫(kù)創(chuàng)建在一臺(tái)服務(wù)器上,具有四硬盤(pán)數(shù)據(jù)恢復(fù)個(gè)分區(qū),其編目分區(qū)為0號(hào)分區(qū)。
一. 對(duì)分區(qū)數(shù)據(jù)庫(kù)的備份操作:
前面已經(jīng)介紹了,備份操作僅作用于分區(qū)數(shù)據(jù)庫(kù)的當(dāng)前分區(qū),所以要使用“db2_all”的命令實(shí)現(xiàn)對(duì)所有分區(qū)進(jìn)行備份(這里使用聯(lián)機(jī)備份方式),即:
- db2_all "db2 backup db sample online"
但是上述命令對(duì)各分區(qū)的備份是以串行方式進(jìn)行的,為提高備份操作的性能,還有一種可使分區(qū)間以并行方式進(jìn)行的方法。即在上述命令的 DB2 命令前加上以下選項(xiàng)來(lái)實(shí)現(xiàn)命令的并行:
<<+分區(qū)號(hào)< :表示后續(xù)命令作用于該分區(qū)。
<<-分區(qū)號(hào)< :表示后續(xù)命令作用于除該分區(qū)之外的其它分區(qū)。
||<<-分區(qū)號(hào)< 或 <<-分區(qū)號(hào); :表示后續(xù)命令作用數(shù)據(jù)恢復(fù)于除該分區(qū)之外的其它分區(qū),并且是以并行方式進(jìn)行的。
但由于備份和恢復(fù)操作要求獨(dú)占編目分區(qū),因此在對(duì)其它分區(qū)進(jìn)行并行方式的備份操作之前,首先必須完成該分區(qū)的備份操作。其方法為:
db2_all "<<+0< db2 backup db sample online" -- 對(duì)編目分區(qū)的備份
db2_all "||<<-0< db2 backup db sample online" -- 對(duì)其它分區(qū)硬盤(pán)數(shù)據(jù)恢復(fù)的并行備份
或 db2_all "<<-0<; db2 backup db sample online"
注:分區(qū)數(shù)據(jù)庫(kù)的備份結(jié)束后會(huì)為每個(gè)分區(qū)都產(chǎn)生一個(gè)備份映象文件。
二. 對(duì)分區(qū)數(shù)據(jù)庫(kù)的恢復(fù)操作:
由于備份和恢復(fù)操作都只作用于當(dāng)前數(shù)據(jù)庫(kù)分區(qū),因此也可分為串行和并行的方式。為了在前滾恢復(fù)中介紹 OVERFLOW 選項(xiàng)的使用,這里我們將 SAMPLE 數(shù)據(jù)庫(kù)恢復(fù)到同實(shí)例的一個(gè)名為 SAMPNEW 的新數(shù)據(jù)庫(kù)中,其命令應(yīng)為:
·分區(qū)間串行方式:
- db2_all "db2 restore db sample into sampnew without prompting"
注:由于是分區(qū)數(shù)據(jù)庫(kù),因此在完成了***個(gè)分區(qū)的恢復(fù)操作,開(kāi)始第二個(gè)分區(qū)的恢復(fù)操作時(shí)系統(tǒng)會(huì)出現(xiàn) SQL2529W 的警告,表明數(shù)據(jù)庫(kù)已存在,是否要覆蓋數(shù)據(jù)恢復(fù)的提示,而在某些平臺(tái)下,如 Linux,這一提示會(huì)導(dǎo)致分區(qū)數(shù)據(jù)庫(kù)恢復(fù)操作的失敗,如:
- $ db2_all "db2 restore db sample into sapmnew"
- DB20000I The RESTORE DATABASE command completed successfully.
- rhas3: db2 restore db sample into sapmnew completed ok
- SQL2529W Warning! Restoring to an existing database that is different from the backup image database,
- and the alias name "SAPMNEW" of the existing database do es not match the alias name "SAMPLE"
- of the backup image, and the database name "SAPMNEW" of the existing database does not match the database name "SAMPLE"
- of the backup image. The target database will be overwritten by the backup version.
- The Roll-forward recovery logs associated with the target database will be deleted.
- Do you want to continue ? (y/n) SQL2001N The utility was interrupted. The output data may be incomplete.
- rhas3: db2 restore db sample into sapmnew completed rc=4
因此建議在上述硬盤(pán)數(shù)據(jù)恢復(fù)命令中加入了“WITHOUT PROMPTING”的選項(xiàng),湖南SEO,以避免該提示的出現(xiàn)。
·分區(qū)間并行方式
- db2_all "<<+0< db2 restore db sample into sampnew"
- db2_all "||<<-0< db2 restore db sample into sampnew without prompting"
- 或 db2_all "<<-0<; db2 restore db sample into sampnew without prompting"
因編目分區(qū)是***個(gè)進(jìn)行恢復(fù)的分區(qū),所以無(wú)需加“WITHOUT PROMPTING”選項(xiàng)。
由于我們使用的備份映象文件是通過(guò)聯(lián)機(jī)備份產(chǎn)生的,因此在恢復(fù)操作結(jié)束后,數(shù)據(jù)庫(kù)將處于前滾暫掛狀態(tài),必須通過(guò)前滾操作前滾歸檔日志,以取消前滾暫掛狀態(tài),使數(shù)據(jù)庫(kù)最終可用。
三. 對(duì)分區(qū)數(shù)據(jù)庫(kù)的前滾操作:
由于新數(shù)據(jù)庫(kù) SAMPNEW 的日志路徑下不包含源 SAMPLE 數(shù)據(jù)庫(kù)日志路徑下的歸檔日志文件,所以在前滾操作之前,需要將 SAMPLE 的歸檔日志文件復(fù)制到一個(gè)特定的路徑下,然后在發(fā)出前滾命令時(shí),使用 OVERFLOW 選項(xiàng)來(lái)指定該路徑,以替代 SAMPNEW 的數(shù)據(jù)恢復(fù)日志路徑來(lái)提供前滾操作要使用的歸檔日志文件。
為查找源 SAMPLE 數(shù)據(jù)庫(kù)歸檔日志存放的路徑,可利用如下命令:
- db2_all "db2 get db cfg for sample" | grep "Path"
- Path to log files = /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/
- Path to log files = /home/db2inst1/db2inst1/NODE0001/SQL00001/SQLOGDIR/
- Path to log files = /home/db2inst1/db2inst1/NODE0002/SQL00001/SQLOGDIR/
- Path to log files = /home/db2inst1/db2inst1/NODE0003/SQL00001/SQLOGDIR/
這里假設(shè)將各分區(qū)的歸檔日志文件對(duì)應(yīng)復(fù)制到 /sampnew 下,因前滾命令僅可在編目分區(qū)上執(zhí)行,所以在編目分區(qū)上前滾到日硬盤(pán)數(shù)據(jù)恢復(fù)志文件尾并結(jié)束前滾狀態(tài)的命令應(yīng)寫(xiě)為:
- db2 "rollforward db sampnew to end of logs and complete overflow log path
- (/sampnew/NODE0000/SQL00001/SQLOGDIR,
- /sampnew/NODE0001/SQL00001/SQLOGDIR on dbpartitionnum 1,
- /sampnew/NODE0002/SQL00001/SQLOGDIR on dbpartitionnum 2,
- /sampnew/NODE0003/SQL00001/SQLOGDIR on dbpartitionnum 3,
- )"
注:對(duì)于0號(hào)分區(qū),在 OVERFLOW 選項(xiàng)中不能使用“ON DBPARTITIONNUM 0”的子句,否則會(huì)遇到:
- SQL0104N An unexpected token "on" was found following "<identifier>". Expected tokens may include: ")". SQLSTATE=42601
的報(bào)錯(cuò),表明命令語(yǔ)法不正確。
至此,我們完成了對(duì)已啟用硬盤(pán)數(shù)據(jù)恢復(fù)前滾恢復(fù)模式的 DB2 分區(qū)數(shù)據(jù)庫(kù) SAMPLE,利用 BACKUP 命令進(jìn)行聯(lián)機(jī)備份,并使用 RESTORE 和 ROLLFORWARD 命令恢復(fù)至一個(gè)新數(shù)據(jù)庫(kù) SAMPNEW 的舉例介紹。如果要了解更多關(guān)于 DB2 數(shù)據(jù)庫(kù)備份、恢復(fù)和前滾數(shù)據(jù)恢復(fù)命令的其它選項(xiàng)及其功能,可參看 DB2 的《命令參考手冊(cè)》。
【編輯推薦】
- import 或是 load多個(gè)DB2主從表談何容易?
- DB2確定某個(gè)表的統(tǒng)計(jì)信息的收集時(shí)間大揭秘
- 失敗DB2® access 服務(wù)器配置的正確恢復(fù)流程
- IBM DB2 Content Manager V83與手工配置SSL
- DB2 -964問(wèn)題的殲滅很簡(jiǎn)單!