下面对该项特性进行了测试,共涉及三台服务器,采用的均是32位RHEL 6.3操作系统,数据库版本11.2.0.4。
NFS服务器:
? 主机名:node3.being.com
? IP: 192.168.2.13
? 共享路径:/u01
生产数据库:
? 主机名: node1.being.com
? IP: 192.168.2.11
? ORACLE_HOME: /u01/app/oracle/product/11.2.0.4/db_1
? ORACLE_SID:prod
? 挂载点:/backup/prod/
克隆数据库:
? 主机名:node2.being.com
? IP:192.168.2.12
? ORACLE_HOME:/u01/app/oracle/product/11.2.0.4/db_1
? ORACLE_SID:orcl
? 挂载点:/prod/backup
?
一、准备NFS环境
首先查看一下node3的磁盘情况
[root@node3 ~]# df -h
Filesystem? ? ? ? ? ? Size? Used Avail Use% Mounted on
/dev/sda2? ? ? ? ? ? 5.8G? 3.9G? 1.6G? 72% /
tmpfs? ? ? ? ? ? ? ? 504M? ? 0? 504M? 0% /dev/shm
/dev/sda4? ? ? ? ? ? ? 20G? 172M? 19G? 1% /u01?
在这里,打算将/u01作为NFS磁盘共享出去。
在NFS Server的主配置文件中/etc/exports添加以下内容:
/u01 *(rw,no_root_squash)
在这里,注意/u01的权限,刚开始/u01默认的是755权限,node1挂载后,无法创建文件,报“Permission denied”。
修改/u01的权限
[root@node3 ~]# chmod 757 /u01/
重启rpcbind和nfs服务
[root@node3 ~]# /etc/init.d/rpcbind restart
Stopping rpcbind:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [FAILED]
Starting rpcbind:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
?
[root@node3 ~]# /etc/init.d/nfs restart
Shutting down NFS daemon:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [FAILED]
Shutting down NFS mountd:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [FAILED]
Shutting down NFS quotas:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [FAILED]
Starting NFS services:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting NFS quotas:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting NFS mountd:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
Starting NFS daemon:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]
?
查看配置是否成功
[root@node3 ~]# showmount -e 192.168.2.13
Export list for 192.168.2.13:
/u01 *
将rpcbind和nfs服务设为开机自启动
[root@node3 ~]# chkconfig rpcbind on
[root@node3 ~]# chkconfig nfs on
二、在生产数据库上挂载NFS文件系统
以root身份登录,创建备份目录
[root@node1 ~]# mkdir /backup/prod
挂载node3提供的nfs磁盘
?
[root@node1 ~]# showmount -e 192.168.2.13
Export list for 192.168.2.13:
/u01 *
[root@node1 ~]# mount 192.168.2.13:/u01 /backup/prod/
[root@node1 ~]# df -h
Filesystem? ? ? ? ? ? Size? Used Avail Use% Mounted on
/dev/sda2? ? ? ? ? ? 7.7G? 3.6G? 3.8G? 49% /
tmpfs? ? ? ? ? ? ? ? 400M? 184M? 217M? 46% /dev/shm
/dev/sda1? ? ? ? ? ? 194M? 27M? 158M? 15% /boot
/dev/sda4? ? ? ? ? ? ? 28G? 11G? 16G? 41% /u01
192.168.2.13:/u01? ? ? 20G? 172M? 19G? 1% /backup/prod
?
挂载后,无法给/backup/prod修改文件属主和属组,譬如我想将该目录设置为oracle用户专享的,结果如下:
[root@node1 ~]# chown oracle.oinstall /backup/prod/
chown: changing ownership of `/backup/prod/': Invalid argument
后来发现实在无此必要,node1中/backup/prod的权限和node3中的/u01权限是相对应的,都是757。我以oracle用户的身份在该目录下创建文件,文件的属主和属组就分别是oracle和oinstall。
设置为开机自动挂载
在/etc/rc.local添加以下内容:
mount 192.168.2.13:/u01 /backup/prod/
三、在克隆数据库上挂载NFS文件系统
以root身份登录,创建备份目录,名字随意
[root@node2 ~]# mkdir -p /prod/backup
挂载node3提供的NFS共享盘
?
[root@node2 ~]# mount 192.168.2.13:/u01 /prod/backup/
[root@node2 ~]# df -h
Filesystem? ? ? ? ? ? Size? Used Avail Use% Mounted on
/dev/sda3? ? ? ? ? ? 9.7G? 6.2G? 3.0G? 68% /
tmpfs? ? ? ? ? ? ? ? 400M? ? 0? 400M? 0% /dev/shm
/dev/sda1? ? ? ? ? ? 194M? 27M? 158M? 15% /boot
/dev/sdb? ? ? ? ? ? ? 20G? 4.2G? 15G? 23% /u01
192.168.2.13:/u01? ? ? 20G? 172M? 19G? 1% /prod/backup
?
同样设置开机自动挂载
在/etc/rc.local中添加以下内容:
mount 192.168.2.13:/u01 /prod/backup/
四、克隆数据库上启用Direct NFS
登录oracle账户,新建$ORACLE_HOME/dbs/oranfstab文件,内容如下:
[oracle@node2 ~]$ cat $ORACLE_HOME/dbs/oranfstab
server:node3.being.com
path:192.168.2.13
export:/u01
mount:/prod/backup
修改libodm11.so库文件的链接对象
[oracle@node2 lib]$ mv libodm11.so libodm11.so.bak
[oracle@node2 lib]$ ln -s libnfsodm11.so libodm11.so
五、备份生产数据库
支持三种备份方式:在线热备(类似于alter database begin backup)、offline 备份(需关闭数据库)、rman