亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

利用Oracle CRS搭建應用的高可用集群

系統 1807 0

前言:CRS的簡介和由來

從Oracle 10gR1 RAC 開始,Oracle推出了自身的集群軟件,這個軟件的名稱叫做Oracle Cluster Ready Service(Oracle集群就緒服務),簡稱CRS。從Oracle 10gR2開始,包括最新的11g,Oracle將其更名為Clusterware(集群件),但通常意義上我們認為CRS = Clusterware = Oracle Cluster Ready Service = Oracle Cluster Software.

CRS一般用來搭建Oracle的并行數據庫,即RAC,但除了與RAC的接口之外,CRS還提供了一組高可用性的應用程序接口(API),用來搭建一般應用程序的高可用集群,即一般我們常說的雙機熱備,比如使用CRS實現MySQL的雙機熱備。
這種主備模式的雙機熱備還可以包括許多第三方的應用程序,比如虛擬IP、磁盤組、文件系統、MySQL數據庫、Apache,或者單節點的Oracle實例,或者單節點的ASM,等等,都可以作為資源注冊到CRS中去,由CRS來啟動,關閉,監測應用程序的狀態,還可以設置應用程序相互的依賴關系,保證多組資源正確的啟動順序。

本文就以保護單節點oracle實例為例,演示如何使用CRS來實現上述功能。使用的主要的軟件有:Solaris 10u4, Oracle CRS 10.2.0.2 , Oracle RDMBS 10.2.0.3, VxVM 5.0 ,磁盤陣列型號是AMS1000。

系統拓撲圖大致如下:
利用Oracle CRS搭建應用的高可用集群

主要操作步驟如下:

一、準備工作:軟件安裝,數據庫創建

1.安裝Solaris 10, Veritas Volume Manager ,安裝過程略
2.創建用戶組dba/oinstall,oracle用戶,并修改相應profile和/etc/hosts文件
修改rhosts文件,配置oracle用戶的對等連接;
連接心跳網線;
如果生產環境中推薦心跳網絡使用千兆,推薦每臺機器有兩塊網卡分別連接兩個網絡交換機;
在操作系統中啟動心跳網卡;
準備共享磁盤,這里使用的是SAN環境下的共享盤ams_wms0_0098,大小為20G;

3.下面使用靜默方式來安裝Oracle集群軟件、數據庫軟件
這種安裝創建方式的優點是創建速度比較快,并且不需要運行圖形界面,適合遠程安裝和建庫;
缺點是不直觀,需要手工編寫響應文件;
這一步CRS的安裝只需要在一個節點上做:
oracle@rac01$. ./clusterware/runInstaller -silent -responsefile /tmp/shahand/crs.rsp
crs.rsp 文件內容參考“五-7”部分

CRS的runInstaller運行完畢以后,要手工在兩個節點上運行root.sh,
并要手工運行$CRS_HOME/cfgtoollogs/configToolAllCommands

檢查CRS安裝配置正確:

    
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> root @rac01 #crs_stat - t Name Type Target State Host -- ---------------------------------------------------------- ora....c01.gsd application ONLINE ONLINE rac01 ora....c01.ons application ONLINE ONLINE rac01 ora....c01.vip application ONLINE ONLINE rac01 ora....c02.gsd application ONLINE ONLINE rac02 ora....c02.ons application ONLINE ONLINE rac02 ora....c02.vip application ONLINE ONLINE rac02

檢查設置了正確的心跳網絡:
root@rac01 # $CRS_HOME/bin/oifcfg getif
e1000g0 10.198.88.0 global public
e1000g1 192.168.2.0 global cluster_interconnect

使用靜默方式安裝Oracle 數據庫軟件,這一步兩個節點都要做:
./runInstaller -silent -responsefile /tmp/shahand/db.rsp
db.rsp 文件內容參考“五-8”部分

4.創建oracle數據庫文件所需要的盤組、邏輯卷、文件系統、掛載文件系統并設置權限;
只需要在一個節點上做;

    
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> root @rac01 # vxdisksetup - i ams_wms0_0098 root @rac01 # vxdg init oradata12 ams_wms0_0098 root @rac01 # vxassist - g oradata12 make oradata 18G root @rac01 # vxedit - g oradata12 set user = oracle group = dba mode = 644 oradata root @rac01 # timex mkfs - F vxfs / dev / vx / rdsk / oradata12 / oradata version 7 layout 37748736 sectors, 18874368 blocks of size 1024 , log size 65536 blocks largefiles supported real 10.30 user 0.07 sys 0.04 root @rac01 # mount - F vxfs - o largefiles / dev / vx / dsk / oradata12 / oradata / oradata root @rac01 # chown oracle:dba / oradata root @rac01 # df - h / oradata / Filesystem size used avail capacity Mounted on / dev / vx / dsk / oradata12 / oradata 18G 70M 17G 1 % / oradata

5.靜默方式創建oracle數據庫,只需要一個節點上做:

    
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> oracle @rac01 $ dbca - silent - createDatabase - sid orcl - sysPassword sys - systemPassword sys / - datafileDestination / oradata - gdbName orcl - templateName General_Purpose.dbc Copying database files 1 % complete 3 % complete 11 % complete 18 % complete 26 % complete 37 % complete Creating and starting Oracle instance 40 % complete 45 % complete 50 % complete 55 % complete 56 % complete 60 % complete 62 % complete Completing Database Creation 66 % complete 70 % complete 73 % complete 85 % complete 96 % complete 100 % complete

手工檢查數據庫orcl的狀態,可以登陸數據庫select status from v$instance查看。

二、Oracle 集群軟件資源的手工注冊

1. 注銷crs本身自帶的ons、gsd、vip資源

root@rac01 # crs_stop -all
Attempting to stop `ora.rac01.gsd` on member `rac01`
Attempting to stop `ora.rac01.ons` on member `rac01`
Attempting to stop `ora.rac02.gsd` on member `rac02`
Attempting to stop `ora.rac02.ons` on member `rac02`
Stop of `ora.rac02.gsd` on member `rac02` succeeded.
Stop of `ora.rac02.ons` on member `rac02` succeeded.
Stop of `ora.rac01.gsd` on member `rac01` succeeded.
Stop of `ora.rac01.ons` on member `rac01` succeeded.
Attempting to stop `ora.rac01.vip` on member `rac01`
Attempting to stop `ora.rac02.vip` on member `rac02`
Stop of `ora.rac02.vip` on member `rac02` succeeded.
Stop of `ora.rac01.vip` on member `rac01` succeeded.

root@rac01 # crs_unregister ora.rac01.gsd
root@rac01 # crs_unregister ora.rac01.ons
root@rac01 # crs_unregister ora.rac01.vip
root@rac01 # crs_unregister ora.rac02.vip
root@rac01 # crs_unregister ora.rac02.ons
root@rac01 # crs_unregister ora.rac02.gsd
root@rac01 # crs_stat -t
CRS-0202: No resources are registered.

2.創建虛擬IP資源:

root@rac01 # crs_profile -create havip -t application -a /oracle/crs/bin/usrvip /
-o oi=e1000g0,ov=10.198.94.139,on=255.255.248.0
root@rac01 # crs_register havip
root@rac01 # crs_setperm havip -o root
root@rac01 # crs_setperm havip -u user:oracle:r-x
root@rac01 # crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
ha_vip application 0/1 0/0 OFFLINE OFFLINE
root@rac01 # crs_start havip
root@rac01 # crs_stat -t -v
Name Type R/RA F/FT Target State Host
----------------------------------------------------------------------
havip application 0/1 0/0 ONLINE ONLINE rac01


3.準備控制其他資源啟動、關閉、檢查的腳本文件dg.sh/fs.sh/db.sh/lsnr.sh
這四個腳本文件內容參考“五-3/4/5/6”部分

對crs_profile命令中的選項和參數做簡單說明:
(1) 選項-r定義了該資源所依賴的資源,在下面的例子中,資源oradata_mount啟動時依賴于
disk_group先 啟動,需要停止disk_group的時候必須先停止資源oradata_mount,
資源orcl_db的啟動則同時依賴于oradata_mount/disk_group/havip/listener;
(2) 參數-o 包括:ci的意思是crs對資源狀態的監測間隔(check interval),單位為秒;
ra : crs重啟資源的嘗試次數,RESTART_ATTEMPTS,次數到達以后將重新分配;
fi : 資源狀態出現錯誤以后,crs的嘗試間隔,FAILURE_INTERVAL,單位是秒;
ft : 資源狀態出現錯誤以后,crs的嘗試次數,FAILURE_THRESHOLD;
這些參數可以使用默認值,分別是60秒/1/0秒/0。
(3) 參數-a 是指ACTION_SCRIPT,參數值為資源啟動、關閉、監測的腳本,腳本固定的三個參數為
start/stop/check;

管理數據庫監聽的部分:

修改$ORACLE_HOME/network/admin/listener.ora文件,
將其中(HOST = rac01 )部分修改成(HOST = 10.198.94.139 ) (虛擬IP地址)

crs_profile -create listener -t application -a /oracle/crs/crs/public/lsnr.sh -r havip -o /
ci=180,ra=6,ft=2,fi=12
crs_register listener
crs_setperm listener -o root
crs_setperm listener -u user:oracle:r-x
crs_start listener

管理磁盤組和邏輯卷的部分:

crs_profile -create disk_group -t application -a /oracle/crs/crs/public/dg.sh -r havip -o /
ci=180,ra=6,ft=2,fi=12
crs_register disk_group
crs_setperm disk_group -o root
crs_setperm disk_group -u user:oracle:r-x

注:本身磁盤組的啟動并不依賴于虛擬IP的啟動,這里之所以設置兩者的依賴關系,
是為了防止虛擬IP在一個節點啟動,而磁盤組在另外一個節點啟動,造成資源不一致的情況出現。

管理文件系統的部分:

crs_profile -create oradata_mount -t application -a /oracle/crs/crs/public/fs.sh -r disk_group -o /
ci=180,ra=6,ft=2,fi=12
crs_register oradata_mount
crs_setperm oradata_mount -o root
crs_setperm oradata_mount -u user:oracle:r-x

管理數據庫實例的部分:

crs_profile -create orcl_db -t application -a /oracle/crs/crs/public/db.sh -r /
"oradata_mount listener" -o ci=180,ra=6,ft=2,fi=12
crs_register orcl_db
crs_setperm orcl_db -o root
crs_setperm orcl_db -u user:oracle:r-x
crs_start orcl_db

4.確保腳本具有執行屬性,并把public 和profile的內容拷到第二個節點上。
# chmod +x /oracle/crs/crs/public/*
# rcp -r -p /oracle/crs/crs/public/* rac02:/oracle/crs/crs/public/

5.啟動所有的資源
下面可以看到,在crs啟動和關閉資源的過程中,其順序是按照前面定義的資源依賴關系進行的:

root@rac01 # crs_stop -all
Attempting to stop `orcl_db` on member `rac01`
Stop of `orcl_db` on member `rac01` succeeded.
Attempting to stop `oradata_mount` on member `rac01`
Stop of `oradata_mount` on member `rac01` succeeded.
Attempting to stop `disk_group` on member `rac01`
Stop of `disk_group` on member `rac01` succeeded.
Attempting to stop `listener` on member `rac01`
Stop of `listener` on member `rac01` succeeded.
Attempting to stop `havip` on member `rac01`
Stop of `havip` on member `rac01` succeeded.

root@rac01 # crs_start -all
Attempting to start `havip` on member `rac01`
Start of `havip` on member `rac01` succeeded.
Attempting to start `listener` on member `rac01`
Start of `listener` on member `rac01` succeeded.
Attempting to start `disk_group` on member `rac01`
Start of `disk_group` on member `rac01` succeeded.
Attempting to start `oradata_mount` on member `rac01`
Start of `oradata_mount` on member `rac01` succeeded.
Attempting to start `orcl_db` on member `rac01`
Start of `orcl_db` on member `rac01` succeeded.

檢查資源狀態是否正常:

oracle@rac01 $ crs_stat -t
Name Type Target State Host
------------------------------------------------------------
disk_group application ONLINE ONLINE rac01
havip application ONLINE ONLINE rac01
listener application ONLINE ONLINE rac01
oradata_mount application ONLINE ONLINE rac01
orcl_db application ONLINE ONLINE rac01

三、Oracle 集群軟件的資源的管理

1.如果需要修改資源的屬性,使用crs_profile -update 選項;具體例子可以參見五-1的錯誤二;
2.如果資源的狀態為UNKNOWN,要對該資源進行關閉,使用crs_stop的命令的時候需要加入-f參數;
3.使用crs_profile -print <resource_name> 來查看資源的屬性情況,包括依賴關系等等,
同樣也可以使用crs_stat -p <resource_name> 來實現;
4.關于CRS的日志:主要在$CRS_HOME/log/node_name目錄下,但需要提醒的是,系統日志中也會有
比較重要的日志信息,比如Solaris下的/var/adm/messages、linux一般在/var/log/messages ,
HPUX則是/var/adm/syslog/syslog.log文件;
5.啟動、關閉、和查看crs資源的命令分別為crs_start 和crs_stop 和crs_stat,
每個命令都可以使用-H參數得到相應語法;
也可以使用stvctl start nodeapps -n rac1命令;

四、對集群軟件進行測試
1.手工切換節點:
在任意節點上依次使用下面的命令,以oracle或者root執行均可,只要配置正確的$PATH環境變量
crs_stop -all;
crs_start havip -c rac02;
crs_start listener -c rac02;
crs_start disk_group -c rac02;
crs_start oradata_mount -c rac02;
crs_start orcl_db -c rac02;
然后,登陸到rac02(現在為主節點)使用df -h /oradata 檢查共享盤是否掛載,
使用ps -ef|grep ora_檢查到oracle啟動,檢查后臺報警日志中沒有錯誤信息,

2.自動切換:

手工模擬主節點的故障情況:使用reboot命令
root@rac01 # reboot

Jan 8 14:53:57 rac01 reboot: [ID 662345 auth.crit] rebooted by root

從日志中看到備用節點rac02上的crs感應到了主節點的失敗,并接管相關服務:

2008-01-08 14:30:33.929: [ CRSMAIN][1] Starting Threads
2008-01-08 14:30:33.929: [ CRSMAIN][1] CRS Daemon Started.
2008-01-08 14:52:18.777: [ CRSEVT][71] Processing member leave for rac01, incarnation: 2
2008-01-08 14:52:18.878: [ CRSEVT][71] Do failover for: rac01
2008-01-08 14:52:42.180: [ CRSRES][73] startRunnable: setting CLI values
2008-01-08 14:52:42.193: [ CRSRES][73] Attempting to start `disk_group` on member `rac02`
2008-01-08 14:52:45.722: [ CRSRES][73] Start of `disk_group` on member `rac02` succeeded.
2008-01-08 14:52:45.731: [ CRSRES][73] startRunnable: setting CLI values
2008-01-08 14:52:45.732: [ CRSRES][73] Attempting to start `oradata_mount` on member `rac02`
2008-01-08 14:52:45.986: [ CRSRES][73] Start of `oradata_mount` on member `rac02` succeeded.
2008-01-08 14:52:46.013: [ CRSRES][73] startRunnable: setting CLI values
2008-01-08 14:52:46.015: [ CRSRES][73] Attempting to start `orcl_db` on member `rac02`
2008-01-08 14:53:31.486: [ CRSRES][73] Start of `orcl_db` on member `rac02` succeeded.
2008-01-08 14:53:31.487: [ CRSEVT][71] Post recovery done evmd event for: rac01
2008-01-08 14:53:31.603: [ CRSEVT][75] Processing RecoveryDone

然后再登陸rac02,查看文件系統是否掛載,確認數據狀態正常。

from:【IT168】

http://tech.it168.com/d/2008-01-31/200801311012828.shtml

利用Oracle CRS搭建應用的高可用集群


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人综合久久精品红 | 亚洲精品一二区 | 久久成人免费观看全部免费 | 欧美操操 | 四虎国产精品永免费 | 色综合视频 | 狠狠亚洲 | 久久精品综合一区二区三区 | 91在线丨亚洲 | 成年女人18毛片毛片免费 | 亚洲欧洲国产经精品香蕉网 | 日韩精品国产自在欧美 | 亚洲国产精品成人综合久久久 | 日韩国产午夜一区二区三区 | 日韩色综合| 97视频在线观看免费播放 | 午夜精品久久久久久 | 天天爽夜夜爽人人爽 | 欧美αv在线 | 国产一区精品视频 | 国产高清美女一级a毛片久久w | 国产精品自在欧美一区 | 香蕉九九| 国产91九色在线播放 | 日韩最新视频一区二区三 | er久99久热只有精品国产 | 婷婷激情四月 | 久久精品94精品久久精品 | 久久免费网| 五月天婷婷久久 | 五月天婷婷网址 | aaa影院 | 五月伊人 | 狠狠亚洲 | 国产精品一区二区久久精品涩爱 | 狠狠色丁香六月色 | 99久久精品国产亚洲 | 视频免费1区二区三区 | 99视频在线精品免费观看18 | 亚洲图片一区二区 | 久久大综合 |