前言
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实现自动切换。
欢迎关注我的公众号《IT小Chen》