Oracle 單機切換為主備

chenoracle發表於2022-08-25

Oracle 高可用、容災架構有很多,官方架構主要有RAC、DG等,藉助第三方高可用軟體有Rose、VCS等。

類似Rose、VCS等第三方高可用軟體,在進行主備切換時,通常是檢測到資料庫埠或程式不存在時,自動進行VIP轉移、資料庫儲存轉移、資料庫例項停止和啟動等步驟,從而實現資料庫切換。


本次實驗,透過NFS模擬共享儲存,切換方式為手動切換VIP、手動切換共享儲存、手動重啟例項,後期可以考慮透過keepalived實現自動切換。


一:配置NFS服務

二:準備資料庫伺服器

三:掛載共享儲存

四:新增VIP

五:啟動主庫資料庫

六:配置從庫

七:主從切換


伺服器資訊如下:

NFS伺服器      192.168.8.41

Oracle伺服器1  192.16.8.100

Oracle伺服器2  192.168.8.42

VIP            192.168.8.200


一:配置NFS服務

NFS伺服器      192.168.8.41

1.檢查是否安裝nfs服務

[root@mysql02 /]# rpm -qa|grep nfs

nfs4-acl-tools-0.3.3-17.el7.x86_64

libnfsidmap-0.25-19.el7.x86_64

nfs-utils-1.3.0-0.54.0.1.el7.x86_64


如果沒有,需要安裝

yum install nfs-utils

yum install libnfsidmap


2.建立共享目錄,並賦予讀寫許可權。

設定共享目錄,並賦予讀寫許可權

mkdir /oradata

chmod -R 777 /oradata


3.修改配置檔案/etc/exports

vi /etc/exports

###/oradata 192.168.8.41(rw,insecure)

/oradata *(rw,insecure)

不限制訪問IP


4.啟動NFS服務

[root@mysql02 /]# systemctl start nfs-server.service 

[root@mysql02 /]# systemctl status nfs-server.service 

● nfs-server.service - NFS server and services

   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)

   Active: active (exited) since Wed 2022-08-24 18:42:17 CST; 5s ago

  Process: 4815 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)

  Process: 4810 ExecStartPre=/bin/sh -c /bin/kill -HUP `cat /run/gssproxy.pid` (code=exited, status=0/SUCCESS)

  Process: 4809 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)

 Main PID: 4815 (code=exited, status=0/SUCCESS)

   CGroup: /system.slice/nfs-server.service


Aug 24 18:42:17 mysql02 systemd[1]: Starting NFS server and services...

Aug 24 18:42:17 mysql02 systemd[1]: Started NFS server and services.


設定開機自啟動

[root@mysql02 ~]# systemctl list-unit-files |grep nfs-server

nfs-server.service                            disabled

[root@mysql02 ~]# systemctl enable nfs-server.service 

Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

[root@mysql02 ~]# systemctl list-unit-files |grep nfs-server

nfs-server.service                            enabled


二:準備資料庫伺服器

Oracle伺服器1  192.16.8.100

配置NFS客戶端

1.建立掛載目錄

在客戶端建立一個目錄用來掛載共享目錄,設定掛載目錄,並賦予讀寫許可權

mkdir /oranfs

chmod -R 777  /oranfs


2.驗證NFS資訊

showmount -e 192.168.8.41


3.停庫,複製資料檔案

192.16.8.100伺服器上目前已經存在一個oracle單例項資料庫,需要將資料檔案等複製到NFS共享儲存上。

分別檢查資料檔案、控制檔案、日誌檔案是否均在統一目錄下

SQL> select name from v$dbfile;
NAME
--------------------------------------------------------------------------------
/oradata/cjc/users01.dbf
/oradata/cjc/undotbs01.dbf
/oradata/cjc/sysaux01.dbf
/oradata/cjc/system01.dbf
/oradata/cjc/cjctbs01.dbf
/oradata/cjc/chentbs01.dbf
6 rows selected.


控制檔案沒有在同一個目錄下,需要將control02.ctl遷移到/oradata/cjc目錄下

SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/oradata/cjc/control01.ctl
/oracle/app/oracle/fast_recovery_area/cjc/control02.ctl

SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/oradata/cjc/redo03.log
/oradata/cjc/redo02.log
/oradata/cjc/redo01.log

停止當前資料庫例項

SQL> shutdown immediate


將/oradata/cjc目錄打包上傳到NFS伺服器上

tar -zcvf cjc.tar.gz cjc/

scp cjc.tar.gz 192.168.8.41:/oradata

登入到NFS伺服器上,解壓

cd /oradata

tar -zxvf cjc.tar.gz


將原/oradata目錄重新命名

mv /oradata /oradata_20220825bak


4.啟動資料庫例項

startup


5.修改監聽檔案

修改IP地址為VIP地址


三:掛載共享儲存

mount -t nfs -o rw,bg,hard,nointr,nolock,rsize=65536,wsize=65536,tcp,vers=3,timeo=600 192.168.8.41:/oradata /oradata

df -h

...

192.168.8.41:/oradata   47G   33G   15G  70% /oradata


mount|grep oradata

192.168.8.41:/oradata on /oradata type nfs (rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,hard,nolock,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.8.41,mountvers=3,mountport=20048,mountproto=tcp,local_lock=all,addr=192.168.8.41)


四:新增VIP

新增VIP

ip addr add 192.168.8.200/24 dev enp0s3

###ifup 192.168.8.200/24 enp0s3


###主庫移除VIP地址

###ip addr del 192.168.8.200/24 dev enp0s3


更新arp資訊

arping -c 1 -I enp0s3 -U 192.168.8.200


啟動監聽

lsnrctl start


五:啟動主庫資料庫

sqlplus / as sysdba

startup


六:配置從庫

Oracle伺服器2  192.168.8.42

安裝Oracle軟體11.2.0.4.0,不建立例項

檢查引數檔案內容,建立對應目錄。


七:主從切換

主庫:192.168.8.100

1.停監聽

lsnrctl start

2.停庫

shutdown immediate

3.解除安裝vip

ip addr del 192.168.8.200/24 dev enp0s3

4.umount共享儲存

umount /oradata


從庫:192.168.8.42

5.掛載共享儲存

mount -t nfs -o rw,bg,hard,nointr,nolock,rsize=65536,wsize=65536,tcp,vers=3,timeo=600 192.168.8.41:/oradata /oradata

6.新增VIP

ip addr add 192.168.8.200/24 dev enp0s3

更新arp資訊

arping -c 1 -I enp0s3 -U 192.168.8.200


7.啟動監聽

lsnrctl start

8.啟動資料庫

startup

alter system register;


後期可以考慮透過keepalived實現自動切換。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2912050/,如需轉載,請註明出處,否則將追究法律責任。

相關文章