Oracle 单机切换为主备

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实现自动切换。


请使用浏览器的分享功能分享到微信等