Oracle 10g RAC OCFS2叢集儲存遷移摘要
使用者一個Oracle 10g RAC的基於ocfs2的叢集,RedHat 5.4 64bit環境,需要更換儲存和升級更換8GHBA卡,過程總結如下:
準備篇:
1、先在root使用者下,用df -h 查看原儲存掛載的使用方式,評估遷移的資料量
2、用mount顯示現在儲存的掛載的情況和格式,把/etc/fstab 檔案備份、記錄下來
3、考慮到加入新HBA卡,原儲存LUN識別位置會發生改變,難以識別,通過
/sbin/scsi_id -g -u -s /block/sdX,查看現有儲存的每個LUN的uuid,記錄下來,為保險起見,在每個掛載的LUN,touch 一個標識原sdX的和掛載點的空檔案,以便同時掛載新老儲存時方便識別。
4、記錄下新的儲存的LUN的UUID,備查。
操作篇:
1、oracle下
su - oracle 切換到oracle使用者
sqlplus / as sysdba
shutdown immediate
退出oracle
在oracle安裝的$ORACLE_HOME/crs/bin目錄下,以root使用者執行 ./crs_ctl disable crs,以便在這個切換重啟過程中RAC crs資源不自動啟動,防止資料損毀。
2、把/etc/fstab裡的原儲存的自動掛載註解掉,逐台關閉伺服器,插入新8G FC HBA卡,先啟動1台rac主機,啟動後果然儲存的ID發生改變,自動探索與原來fdisk -l 的id不一致,先不管
3、在儲存端發現新的伺服器,將預先分好的LUN分配給主機,原伺服器上已經安裝過多重路徑軟體,這裡沒有做改變,主機端需要重新啟動以便發現新分配的儲存,重起後fdisk-l發現更多的儲存LUN,有檔案格式是原LUN,但sdX的儲存完全不對,這時原來記錄的UUID使用上了,用/sbin/scsi_id -g -u -s /block/sdX,逐個查看,用cat /sys/block/sda/device/vendor 也可以看到儲存的生產廠商(新老儲存不同廠商),這裡一定仔細,老儲存有資料,新儲存需要掛載後格式化。
4、根據uuid把原儲存的LUN還掛載到原目錄下,如
mount -o datavolume,nointr -t ocfs2 /dev/sdi1 /oa 類似,把原來的儲存逐一掛載到原目錄,這時可以在$ORACLE_HOME/crs/bin目錄下,通過./crs_crl start crs把crs啟動起來,可以通過 ./crs_crl check crs 來檢查,切換到oracle下,通過crs_stat -t查看RAC資源是否線上,RAC online後,那原儲存和RAC啟動沒有問題
5、在根目錄下,根據原來的掛載目錄建立新目錄,如原/oa,那就建/oa1目錄,用來掛載新儲存,LUN大於2T,需要用parted來分區,操作如下:
parted /dev/sdX
mklabel gpt
mkpart primary 0% 100%
print
quit
把規劃的LUN都分好區後,需要把分區格式化為ocfs2,只需要在一個node做一次,命令mkfs.ocfs2 -b 4K -C 32K -N 4 -L oa /dev/sdc1,逐一格式化
通過mount -o datavolume,nointr -t ocfs2 /dev/sdi1 /oa1類似的命令,把規劃的新儲存按對應關係掛載到新的目錄下。
6、停掉oracle ,停掉crs資源,通過cp -rp /原儲存掛載目錄 /新儲存掛載目錄,把檔案和子目錄及對應的許可權都拷貝到新儲存中,過程漫長,可以通過du -sh 查看新儲存的容量變化,把老儲存的內容原封不動拷貝到新儲存。
7、拷貝完成後,umount掉所有掛載到儲存,然後按原來的掛載目錄,把新儲存掛載到原來的掛載點,重新啟動crs資源,用crs_stat -t 查看rac是否線上,如正常,那說明新儲存已經可以正常工作了。
8、停資料庫,停crs,關機,把原4G HBA卡那掉,重新開機後,盤符發生改變,通過mount先手工載入,起動crs,都正常後,在/etc/fstab 下,文法如下
/dev/sde1 on /oa type ocfs2 (rw,_netdev,datavolume,nointr,heartbeat=local),逐條加入,這樣新儲存就可以開機自動載入了,不要忘了 crscrl enable crs,讓crs可以自動啟動。
9、另一個節點只要同樣分配LUN,也按原來的目錄掛載,最後crs_stat -t 2個節點都線上,並且重啟後儲存掛載和crs都自動啟動,工作正常,可通過在sqlplus下執行
select instance_name from v$instance;
select open_mode fromv$database;
查看資料庫工作情況,這樣儲存遷移和HBA卡更換就完成了。
總結:
通過以上遷移方式,只涉及到資料庫很少的操作,不需要匯入匯出資料庫,完全在linux的檔案層面完成遷移,對oracle水平要求比較低,邏輯上簡單,可操作性強,可以比較順利完成遷移。