如何利用Direct NFS克隆Oracle数据库(一)

2015-07-16 12:09:09 · 作者: · 浏览: 1

下面对该项特性进行了测试,共涉及三台服务器,采用的均是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