方敏 楊建軍
摘要:數(shù)據(jù)庫(kù)遷移之后的容災(zāi)研究是一個(gè)極具挑戰(zhàn)的領(lǐng)域,數(shù)據(jù)庫(kù)的部署應(yīng)能及時(shí)發(fā)現(xiàn)問(wèn)題并對(duì)數(shù)據(jù)采取相應(yīng)的保護(hù)措施,防止數(shù)據(jù)的丟失和損壞,提高數(shù)據(jù)庫(kù)的穩(wěn)定性和運(yùn)行效率。本文通過(guò)提出一種基于DG的TB級(jí)數(shù)量容災(zāi)方法,解決了一彩票研發(fā)中心數(shù)據(jù)庫(kù)TB級(jí)數(shù)據(jù)出現(xiàn)的宕機(jī)問(wèn)題。經(jīng)過(guò)實(shí)施,彩票中心數(shù)據(jù)庫(kù)實(shí)現(xiàn)了高效運(yùn)行,具有容災(zāi)的功能,解決了兩臺(tái)數(shù)據(jù)庫(kù)在遷移之后單純的HA。
關(guān)鍵詞:DC;數(shù)據(jù)遷移;效率;穩(wěn)定性;容災(zāi)
中圖分類(lèi)號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)09-0236-03
1 引言
隨著數(shù)據(jù)量的快速增長(zhǎng),實(shí)現(xiàn)數(shù)據(jù)完整性和業(yè)務(wù)的連續(xù)性勢(shì)必成為企業(yè)優(yōu)先考慮的問(wèn)題。采取有效的措施保證數(shù)據(jù)庫(kù)的安全和高效運(yùn)行是非常重要的,這就要求中心數(shù)據(jù)庫(kù)不僅要對(duì)性能進(jìn)行提升、解決數(shù)據(jù)庫(kù)遷移后出現(xiàn)的HA,同時(shí)也要具備容災(zāi)的功能。
Oracle Data Guard簡(jiǎn)稱(chēng)DG,它是一種應(yīng)用效果比較好的數(shù)據(jù)庫(kù)容災(zāi)技術(shù),為實(shí)現(xiàn)數(shù)據(jù)完整性及業(yè)務(wù)的連續(xù)性提供了一種高可用性的技術(shù)方案,在商業(yè)上又被稱(chēng)為standby database技術(shù)。DG可以通過(guò)網(wǎng)絡(luò)進(jìn)行連接和通信,確保數(shù)據(jù)的高可用性,為節(jié)點(diǎn)級(jí)別的系統(tǒng)提供恢復(fù)功能,實(shí)現(xiàn)保護(hù)數(shù)據(jù)和恢復(fù)災(zāi)難的目的。
2 數(shù)據(jù)收集
2.1 數(shù)據(jù)庫(kù)高可用性方案
本文數(shù)據(jù)庫(kù)采用Oracle DataG uard基礎(chǔ)架構(gòu),創(chuàng)建、監(jiān)控并維護(hù)多個(gè)備用數(shù)據(jù)庫(kù),從而保護(hù)企業(yè)數(shù)據(jù)結(jié)構(gòu)不會(huì)受到故障、災(zāi)難、錯(cuò)誤或崩潰的影響。本文涉及的DG工作示意圖如圖1所示。
2.2 系統(tǒng)數(shù)據(jù)采樣
對(duì)系統(tǒng)數(shù)據(jù)采樣,為解決方案的制定提供依據(jù)。
2.1.1 確定OS系統(tǒng)類(lèi)型
Linux命令端輸人命令:lsb_release id
uname - i - m -p
2.2.2 確定oracle軟件的版本和參數(shù)
Sql>select*from v$version
2.2.3 確定庫(kù)名,實(shí)例名,唯一性庫(kù)名
Sql>select instance_name, name, db_unique_name from v $da-tabase;
2.2.4 確定歸檔模式,閃回模式,強(qiáng)制日志記錄的方式
Sql>select log_modeAashback_on,
force_logging from v$database;
2.2.5 確定ORACLE_BASE,ORACLE_HOME的值
Sql>ho echo $ORACLE_BASE
Sql>ho echo $ORACLE_HOME
3 解決方案的制定
3*1 規(guī)劃服務(wù)器
通過(guò)數(shù)據(jù)的收集確定DG部署的環(huán)境,明確了兩臺(tái)服務(wù)器的環(huán)境、實(shí)現(xiàn)方式,圖2是對(duì)兩臺(tái)服務(wù)器的規(guī)劃。
3.2 故障恢復(fù)時(shí)間計(jì)算
提高系統(tǒng)可用性最根本的方法就是降低故障恢復(fù)時(shí)間,一個(gè)典型故障恢復(fù)時(shí)間主要由硬件恢復(fù)時(shí)間、軟件恢復(fù)時(shí)間和數(shù)據(jù)恢復(fù)時(shí)間三個(gè)部分組成。
3.2.1 硬件恢復(fù)時(shí)間
硬件恢復(fù)時(shí)間是服務(wù)器和網(wǎng)絡(luò)故障以及其他共享存儲(chǔ)設(shè)備恢復(fù)所需要的時(shí)間。
定義1定義硬件恢復(fù)時(shí)間為t(h)。
3.2.2 軟件恢復(fù)時(shí)間
軟件恢復(fù)時(shí)間可以分為操作系統(tǒng)及基礎(chǔ)軟件和在操作系統(tǒng)上安裝的應(yīng)用程序兩個(gè)部分。
定義2對(duì)于操作系統(tǒng)及基礎(chǔ)軟件恢復(fù)時(shí)間,時(shí)間定義為t(o)。應(yīng)用程序軟件恢復(fù)時(shí)間,定義為t(p),可以推出軟件恢復(fù)時(shí)間t(s)為t(o)與t(p)之和。
t(s)=t(o)+t(p)(1)
3.2.3 數(shù)據(jù)恢復(fù)時(shí)間
由于每個(gè)系統(tǒng)的RPO不同,數(shù)據(jù)恢復(fù)量也就不同。同時(shí),數(shù)據(jù)恢復(fù)還存在難易程度不同,因此數(shù)據(jù)恢復(fù)時(shí)間可能受到多種因素的影響。
定義3定義數(shù)據(jù)恢復(fù)時(shí)間為t(d)。
另外,諸如進(jìn)程恢復(fù)、客戶端重試連接等其他因素也會(huì)影響整個(gè)系統(tǒng)的恢復(fù)時(shí)間,本文主要解決的是數(shù)據(jù)庫(kù)、服務(wù)器端及應(yīng)用服務(wù)器端軟件的高可用性問(wèn)題。
定義故障恢復(fù)時(shí)間trecover:
trecover-t(h)+t(s)+t(d)(2)
由公式1
=>trecover-t(h)+ t(o)+t(p) +t(d)(3)
3.3 高可用性容災(zāi)處理
在系統(tǒng)設(shè)計(jì)中采用算法判定任務(wù)的關(guān)鍵性,而不是通過(guò)災(zāi)難恢復(fù)計(jì)劃預(yù)先制定相關(guān)任務(wù)的關(guān)鍵等級(jí),這樣做的好處是能夠根據(jù)具體情況具體判斷每個(gè)任務(wù)的關(guān)鍵等級(jí),提高工作效率。高可用性容災(zāi)處理流程如圖3。
4 TB級(jí)數(shù)量容災(zāi)實(shí)現(xiàn)
4.1主庫(kù)環(huán)境設(shè)置
4.1.1主庫(kù)設(shè)置為歸檔
要求數(shù)據(jù)庫(kù)處于archivelog模式,如果是非歸檔模式則需要在宕機(jī)時(shí)間完成后切換到歸檔模式。
4.1.2設(shè)置強(qiáng)制日志記錄
要求所有的事務(wù)都可以通過(guò)歸檔進(jìn)行回滾。數(shù)據(jù)庫(kù)所有的操作都會(huì)記錄日志文件中。
4.1.3打開(kāi)閃回模式
閃回功能可以根據(jù)需求自定,這里使用dg_broker自動(dòng)切換,備庫(kù)實(shí)例化需要閃回功能。
Sql>alter database flashback on;
4.1.4 rman備份
rman>backup database;
4.1.5 配置網(wǎng)絡(luò)
網(wǎng)絡(luò)設(shè)置需要對(duì)oracle主目錄下的listener.ora和tnsnames.ora兩個(gè)文件進(jìn)行配置。
同樣使用Vl命令添加以下主庫(kù)和備庫(kù)的信息
CRMDP=
(DESCRIPTION= (ADDRESS= (PROTOCOkTCP) (HOST=c:rmdb)(PORT=1521)
( CONNECT_DATA=
(SERVER=DEDICATED)
(SID=crmdb)))
CRMDP=
(DESCRIPTION= (ADDRESS= (PROTOCOkTCP) (HOST=scrmdb)(PORT=1521)
( CONNECT_DATA=
(SERVER=DEDICATED)
(SID=crmdb)))
4.1.6 添加備庫(kù)聯(lián)機(jī)重做日志
根據(jù)主庫(kù)的日志文件組建立備庫(kù)日志組,原則上備庫(kù)比主庫(kù)日志文件組多一個(gè),且每組的成員至少一個(gè)。
4.2 備庫(kù)環(huán)境設(shè)置
4.2.1 復(fù)制主庫(kù)的密碼文件和參數(shù)文件
把主庫(kù)目錄/u01/crmsoft/admin/crmdb/pfile挎貝到備庫(kù)相同路徑下,得到備庫(kù)參數(shù)文件。
把主庫(kù)目錄/u01/crmsof t/ 11 g/dbs/orapwcrmdb文件拷貝到備庫(kù)相同路徑,得到參數(shù)文件。
4.2.2 準(zhǔn)備目錄
準(zhǔn)備與主庫(kù)放置文件路徑一樣的路徑,并以數(shù)據(jù)庫(kù)crmsoft用戶創(chuàng)建。
4.2.3 配置網(wǎng)絡(luò)
將listener.ora拷貝到備庫(kù)相同路徑下:
Scp
192. 168.2.23:/u01/c rmsoft/ 11 g/network/
admin/listener.ora$ORACLE_HOME/network/admin
4.3 克隆數(shù)據(jù)庫(kù)
lsnrctl start
連接rman:rman target sys/oracleSysl@crmdbp auxiliary sys/oracleSysl@crmdbs
當(dāng)輸出顯示為這個(gè)界面時(shí)候,說(shuō)明rman對(duì)于兩個(gè)數(shù)據(jù)庫(kù)之間的連接沒(méi)有問(wèn)題,執(zhí)行克?。?/p>
rman>duplicate target database for standby nofilecheck fromactive database;
輸出結(jié)果,說(shuō)明克隆數(shù)據(jù)庫(kù)已經(jīng)成功。
4.4 db_broker搭建DG
4.4.1 主庫(kù)備庫(kù)均要打開(kāi)dgbroker
Sql>alter system set db_broker_start=true
4.4.2 進(jìn)入dgbroker進(jìn)行配置
dgmgrl sys/oracleSysl@crmdbp
創(chuàng)建一個(gè)DG的配置,指定主庫(kù),連接的字符串:
DGMGRL>create configuration dgc as primary database is'
crmdbp' connect identifier is' crmdbp
增加一個(gè)物理備庫(kù)到DG中:
DGMGRL>add database cnudbs as connect identifier is' crm-dbs' maintained as physical
打開(kāi)配置,啟動(dòng)配置:
DGMGRL>show configuration;
DGMGRL>enable configuration;
此時(shí)配置已經(jīng)生效,數(shù)據(jù)庫(kù)已經(jīng)同步。
設(shè)置主庫(kù)備庫(kù)的log管理方式和文件管理方式
DGMGRL>edit database crmdbp property lo~ptmode=sync
DGMGRL>edit database crmdbp property standbyfilemanage-ment=auto
4.5 同步驗(yàn)證
檢查主庫(kù)最大序列號(hào)和備庫(kù)最大序列號(hào)
crmdbs上查看最大序列日志號(hào):
Sql>select max(sequence#) from v$archived_log;
crmdbp上切換日志
Sql>alter system switch logfile;
Crmdbs再次查看最大序列日志號(hào):
Sql>select max(sequence#) from v$archived_log;
結(jié)果顯示為后者比前者變化大,說(shuō)明實(shí)現(xiàn)了同步。
5 結(jié)束語(yǔ)
本文的解決方案和實(shí)施過(guò)程成功運(yùn)用在某彩票研發(fā)中心數(shù)據(jù)庫(kù),解決了彩票中心數(shù)據(jù)庫(kù)在工作環(huán)境中由于訪問(wèn)人數(shù)的增長(zhǎng)、數(shù)據(jù)庫(kù)升級(jí)、遷移等造成的宕機(jī)問(wèn)題。經(jīng)測(cè)試,環(huán)境搭建成功后,數(shù)據(jù)庫(kù)具有容災(zāi)的功能,實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的高可用性。
數(shù)據(jù)庫(kù)遷移后往往會(huì)出現(xiàn)大量的問(wèn)題,甚至造成數(shù)據(jù)庫(kù)的崩潰。即使Oracle提供的DG是一種比較優(yōu)秀的解決方案,但并沒(méi)有成熟到DBA運(yùn)用它就能完全很好的解決問(wèn)題的地步,需要DBA在實(shí)際工作中根據(jù)具體環(huán)境去分析、研究和完善。
參考文獻(xiàn):
[1]張政.數(shù)據(jù)容災(zāi)技術(shù)在企業(yè)信息系統(tǒng)中的應(yīng)用[J].信息與電腦(理論版),2016(1):119,125.
[2]柳志權(quán).企業(yè)信息系統(tǒng)中應(yīng)用數(shù)據(jù)容災(zāi)技術(shù)的分析[J].電子技術(shù)與軟件工程,2018(20):181.
[3]葉嘉酩,胡曉勤,王喆.數(shù)據(jù)容災(zāi)技術(shù)在企業(yè)信息系統(tǒng)中的應(yīng)用[J].信息與電腦,2016(12):119+125.
[4]方華峰.數(shù)據(jù)容災(zāi)備份與恢復(fù)的關(guān)鍵技術(shù)及應(yīng)用研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014(3):43-44.
[5]喬阿美.Oracle容災(zāi)技術(shù)在企業(yè)ERP系統(tǒng)中的應(yīng)用研究[Jl,電子技術(shù)與軟件工程,2014(23):68.
[6]傅玲,易建湘.數(shù)據(jù)中心數(shù)據(jù)庫(kù)升級(jí)、遷移與整合[J].電腦編程技巧與維護(hù),2019(8):109-110,113.
[7]杜軍龍,金俊平,周劍濤.具備完整性追溯的系統(tǒng)數(shù)據(jù)容災(zāi)機(jī)制[J].計(jì)算機(jī)工程,2019,45(7):170-175.
[8]林國(guó)勇,黃帆.一種用于云計(jì)算的數(shù)據(jù)容災(zāi)分配算法的改進(jìn)[J].科學(xué)技術(shù)與工程,2017,17(1):260-264.
【通聯(lián)編輯:王力】
作者簡(jiǎn)介:方敏(1981-),女,四川眉山人,碩士,講師,主要研究方向:軟件工程;楊建軍(1976-)男,甘肅天水人,講師,主要研究方向:嵌入式軟件教學(xué)與研究。