高手教你用Symantec VCS配置DB2雙機(jī)-入門(mén)
高手教你用Symantec VCS配置DB2雙機(jī)-高級(jí)
將Oracle的雙機(jī)放在DB2雙機(jī)后面講有兩個(gè)原因:一是DB2的配置相對(duì)于oracle的配置來(lái)說(shuō)比較簡(jiǎn)單,數(shù)據(jù)庫(kù)的模式也比較容易理解,而其中相似的地方可以參照DB2的配置;二是DB2雙機(jī)的配置,也只能說(shuō)是oracle雙機(jī)配置的子集,在了解DB2的雙機(jī)配置之后,oracle雙機(jī)配置的很多相似的地方簡(jiǎn)單說(shuō)明一下即可。此外,讀者可以比較一下這兩種模式的異同,有利于讀者選擇更合適自己的雙機(jī)配置模式。
我們隨后還將介紹Sybase雙機(jī)的配置,將Sybase放在最后并不是因?yàn)樗鼜?fù)雜,而是因?yàn)樵谶@三種數(shù)據(jù)庫(kù)之中,Sybase的用戶群相對(duì)比較少,需要的人不多。
比較DB2與Oracle數(shù)據(jù)庫(kù)
DB2和Oracle有很多的不同,要想了解清楚,那個(gè)不是一朝一夕的功夫了。幸運(yùn)的是,因?yàn)槲覀儸F(xiàn)在只是需要做雙機(jī)配置,所以我們只是在可能會(huì)影響配置的概念上,做一個(gè)簡(jiǎn)單的比較。
1. 配置結(jié)構(gòu)的不同:
DB2數(shù)據(jù)庫(kù)的雙機(jī)熱備只支持一種模式,就是DB2的程序在兩臺(tái)機(jī)器上各有一份,只有數(shù)據(jù)文件存放在共享存儲(chǔ)中,如下圖所示:
圖1,DB2雙機(jī)配置結(jié)構(gòu)圖
這種配置模式的優(yōu)點(diǎn)是有利于數(shù)據(jù)庫(kù)的升級(jí),當(dāng)其中systemA需要升級(jí)的時(shí)候,就把服務(wù)切換到systemB上運(yùn)行,升級(jí)A的DB2程序,之后還可以把服務(wù)切換回到A來(lái),然后升級(jí)B的DB2程序。這個(gè)升級(jí)過(guò)程不會(huì)影響用戶的DB2使用,因?yàn)榭傆幸慌_(tái)機(jī)器可以使用DB2程序來(lái)響應(yīng)用戶的服務(wù)請(qǐng)求。
對(duì)于oracle來(lái)說(shuō)不但可以支持這種程序存放在不同機(jī)器上的做法,而且支持把oracle的程序文件也同時(shí)放在共享盤(pán)上,其結(jié)構(gòu)圖如下所示:
圖2,oracle雙機(jī)結(jié)構(gòu)圖-程序在各個(gè)服務(wù)器上
圖3,oracle雙機(jī)結(jié)構(gòu)圖-程序和數(shù)據(jù)都在共享盤(pán)上
將數(shù)據(jù)與程序同時(shí)放在共享盤(pán)上的優(yōu)點(diǎn)有兩個(gè):一是節(jié)省磁盤(pán)空間,用戶只需要保留一份數(shù)據(jù)庫(kù)備份;二是有利于程序的一致性,不會(huì)因?yàn)閿?shù)據(jù)庫(kù)版本的不同,產(chǎn)生差異,可以避免產(chǎn)生一些莫名的問(wèn)題。
2. 數(shù)據(jù)庫(kù)的工作模式不同
DB2數(shù)據(jù)庫(kù)是以實(shí)例為基礎(chǔ)的:多個(gè)硬盤(pán)或者服務(wù)器組成一個(gè)實(shí)例,一個(gè)實(shí)例下面可以劃分多個(gè)數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)只能屬于一個(gè)實(shí)例。Oracle可以理解為以用戶為基礎(chǔ)的數(shù)據(jù)庫(kù),不同的用戶訪問(wèn)不同的實(shí)例,不同的實(shí)例其實(shí)就是不同的數(shù)據(jù)庫(kù)。
配置Oracle雙機(jī)系統(tǒng)
閑話少說(shuō),現(xiàn)在開(kāi)始介紹一下利用VCS來(lái)配置oracle雙機(jī)的過(guò)程:
a) 創(chuàng)建數(shù)據(jù)文件使用的共享存儲(chǔ)(在system1上面執(zhí)行下列5個(gè)命令):
i. # vxdg init oracleDG c0t0d0; 創(chuàng)建磁盤(pán)組oracleDG,使用c0t0d0這個(gè)硬盤(pán);
ii. # vxassist -g oracleDG make oracleVol 5g; 在磁盤(pán)組上創(chuàng)建5G大小的卷oracleVol;
iii. # mkfs -F vxfs -o largefiles /dev/vx/rdsk/oracleDG/oracleVol; 創(chuàng)建文件系統(tǒng);
iv. # mkdir /oracle ; 創(chuàng)建mount點(diǎn),共享磁盤(pán)將mount到這里;
v. # mount -F vxfs /dev/vx/dsk/oracleDG/oracleVol /oracle; 將共享盤(pán)mount到本機(jī);
b) 在兩臺(tái)機(jī)器上面分別執(zhí)行下列命令,創(chuàng)建相同的用戶組和用戶:
vi. # groupadd -g 500 dba; 創(chuàng)建oracle管理組;
vii. # useradd -g dba -u 500 -d /home/oracle -m oracle; 創(chuàng)建oracle管理用戶;
注意:組ID或者用戶ID可以是任意尚未被使用的數(shù)值,但是一定要保證多臺(tái)機(jī)器必須一致。
c) 安裝oracle程序
到oracle安裝文件的目錄下,運(yùn)行下列命令安裝oracle程序
#. /runInstaller
在安裝過(guò)程中,指定oracle用戶為“oracle”。
注意:如果需要在多臺(tái)機(jī)器安裝oracle,則需要在多臺(tái)機(jī)器運(yùn)行該程序;如果僅僅想把程序安裝在共享盤(pán)上面,則僅僅需要在一臺(tái)機(jī)器安裝。
注意:安裝過(guò)程中有一步會(huì)問(wèn)用戶是否需要配置數(shù)據(jù)庫(kù),我們選擇“僅僅安裝軟件”,我們會(huì)在稍后配置數(shù)據(jù)庫(kù)文件到共享磁盤(pán)。
d) 配置數(shù)據(jù)庫(kù):
oracle程序安裝完畢后,我們需要配置數(shù)據(jù)庫(kù)到共享磁盤(pán)上,這樣多臺(tái)機(jī)器才能夠共享其數(shù)據(jù)資源;
# dbca
運(yùn)行數(shù)據(jù)庫(kù)配置助手來(lái)幫助用戶安裝數(shù)據(jù)庫(kù),注意需要將路徑指明到共享磁盤(pán)中。
e) 設(shè)置環(huán)境變量
在各個(gè)機(jī)器的/home/oracle/.profile文件中,設(shè)置兩個(gè)全局變量:
$ORACLE_HOME=/oracle 該變量指明數(shù)據(jù)庫(kù)的安裝位置;
$ORACLE_SID=oracle 該變量指明訪問(wèn)哪個(gè)數(shù)據(jù)庫(kù)實(shí)例;
f) 安裝VCS的oracle代理軟件:(以redhat為例)
# rpm -ivh VRTSvcsor
# rpm -ivh VRTScsocw
這樣,oracle的安裝就完成了。
測(cè)試Oracle雙機(jī)配置
在安裝結(jié)束之后,我們需要測(cè)試一下oracle能否在多臺(tái)機(jī)器上正常工作。
a) 將共享盤(pán)mount到第一臺(tái)機(jī)器(步驟可以參考DB2雙機(jī)配置)
b) 從這臺(tái)機(jī)器登陸數(shù)據(jù)庫(kù)并創(chuàng)建一個(gè)表
i. su – oracle 將系統(tǒng)用戶切換到oracle用戶;
ii. export $ORACLE_HOME=/oracle; 導(dǎo)出全局變量;
export $ORACLE_SID=oracle;
iii. $ORACLE_HOME/bin/sqlplus /nolog 進(jìn)入數(shù)據(jù)庫(kù)模式;
iv. connect / as sysdba 以系統(tǒng)管理員身份登陸數(shù)據(jù)庫(kù);
v. create user tester identified by '123456' default tablespace USERS temporary tablespace TEMP quota 100K on UERS; 創(chuàng)建一個(gè)新用戶tester;
vi. grant create session to tester; 賦予新用戶tester創(chuàng)建表的權(quán)限;
vii. create table tester.mytime ( tstamp date ); 在tester用戶空間下創(chuàng)建一個(gè)新表;
viii. insert into tester.mytime (tstamp) values (SYSDATE); 在新表中插入數(shù)據(jù);
ix. disconnect; 斷開(kāi)連接;
c) 測(cè)試其他集群節(jié)點(diǎn)可以工作:
i. connect tester/123456 以新用戶身份登陸數(shù)據(jù)庫(kù);
ii. update tester.mytime set ( tstamp ) = SYSDATE; 更新表的內(nèi)容;
iii. select TO_CHAR(tstamp, ’MON DD, YYYY HH:MI:SS AM’) from tester.mytime; 確認(rèn)表的內(nèi)容已經(jīng)被更新;
iv. exit 推出。
在經(jīng)過(guò)這個(gè)檢查之后,就說(shuō)明數(shù)據(jù)庫(kù)已經(jīng)正確安裝并可以被每個(gè)節(jié)點(diǎn)正常的訪問(wèn),測(cè)試成功。
配置VCS的oracle代理
這個(gè)過(guò)程與DB2的非常相似,唯一的不同在于DB2只有一個(gè)主進(jìn)程工作,監(jiān)控DB2是否正常工作只需監(jiān)控這個(gè)進(jìn)程即可。在oracle中有兩個(gè)進(jìn)程,一個(gè)是數(shù)據(jù)庫(kù)運(yùn)行的主進(jìn)程,另一個(gè)是監(jiān)控用戶請(qǐng)求的進(jìn)程,兩個(gè)進(jìn)程同時(shí)工作才能確保oracle的正常運(yùn)行。所以在oracle代理的配置過(guò)程中,需要多添加一個(gè)lsnr的資源,用來(lái)保證oracle監(jiān)控進(jìn)程的正常工作。
配置好的oracle代理結(jié)構(gòu)如圖所示:
圖4,oracle代理的配置結(jié)構(gòu)
按照該圖所示,配置oracle代理需要下列資源:
NIC:提供oracle相應(yīng)的網(wǎng)卡;
IP:提供oracle服務(wù)的IP地址;
DiskGroup:共享磁盤(pán)組;
Volume_data:存放oracle共享數(shù)據(jù)的卷;
Volume_binary:存放oracle程序的卷(如果程序不是放在共享磁盤(pán),該資源可以忽略);
Mount_data:數(shù)據(jù)庫(kù)共享數(shù)據(jù)的訪問(wèn)路徑;
Mount_binary:數(shù)據(jù)庫(kù)程序的訪問(wèn)路徑(如果程序不是放在共享磁盤(pán),該資源可以忽略);
Oracle:監(jiān)控oracle進(jìn)程是否正常工作;
Netlnsr:監(jiān)控oracle監(jiān)聽(tīng)進(jìn)程是否工作。
在這些資源都配置好之后,打開(kāi)VCS的圖形界面,可以讓該服務(wù)組執(zhí)行上線、下線或者切換,這樣,VCS就會(huì)自動(dòng)監(jiān)控oracle的工作情況,并在某臺(tái)機(jī)器發(fā)生故障的時(shí)候,自動(dòng)切換到其他節(jié)點(diǎn)繼續(xù)提供服務(wù)。這樣,oracle的雙機(jī)配置就完成了。