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