Loading
0

HA GoldenGate on RAC

 

在Rac环境中使用GoldenGate我们可以只在一个节点上部署,但是这样无法实现HA,当那个节点挂了之后GoldenGate需要在其他节点重新部署重新配置,这样会造成日志缺失断层,所以在RAC环境还是尽量部署HA-GoldenGate。

 

实验环境:

操作系统:Oracle Enterprise Linux 6.3 64-bit

数据库版本:Oracle 11.2.0.3.4 64-bit for linux

GoldenGate版本:11.2.1.0.14 for Oracle 11g on Linux x86-64

参考资料:Oracle White Paper—Oracle GoldenGate high availability with Oracle Clusterware

 

在RAC环境中要实现GoldenGate的HA首先一点是需要将GoldenGate部署在各个节点都能访问到的共享的文件系统上,这里我们用到了11G ASM引入的新特新--ACFS,集群文件系统,该文件系统可以存放除了数据文件外的其他文件,我们需要创建磁盘组然后创建卷,具体步骤如下:

1. 使用asmca启动asm配置助手

QQ图片20140228102611

2. 在Disk Groups标签页面下点击Create创建磁盘组,将你配置的磁盘选上,填写相应的字盘组名

QQ图片20140228102844

3. 点击Ok开始创建磁盘组

QQ图片20140228103131

4. 磁盘组创建成功

QQ图片20140228103226

QQ图片20140228103330

5.  点击Volumes标签下的Create创建卷,填写卷名,选择合适的磁盘组,这里我们选择之前创建的OGG磁盘组

QQ图片20140228110131

6. 输入需要分配的大小,这里虽然现实磁盘组有2.82G,但是这个分配的大小不能等于磁盘组的全部大小,必须要留60M以上的空间才能成功创建卷

QQ图片20140303165955

7. 点击Ok开始创建,卷创建成功

QQ图片20140303170350

QQ图片20140303170510

8. 点击ASM Cluster File Systems标签下的Create开始创建ACFS,选择之前创建的Volume,选择General Purpose File System,输入你要挂载的路径

QQ图片20140303170609

9. 点击OK开始创建ACFS,ACFS创建成功

QQ图片20140303170707

QQ图片20140303170802

10. ACFS创建完成后进行两个节点的读写测试

ora1节点

ora2节点

ora节点1

双节点读写测试成功!

 

至此ACFS创建完成,OGG的具体安装部署不在这里赘述,若要了解OGG的具体部署可参考本站其他相关文章,HA的部署主要的区别就是OGG所有文件包括程序文件、日志文件、参数文件、TRAIL文件等等必须都放在ACFS的集群文件系统中让所有的节点都能访问的到,然后就是利用Oracle RAC的cluster创建集群服务实现HA。

1. 创建OGG应用的VIP

从$GRID_HOME/bin目录下运行appvipcfg命令去创建一个ogg应用的VIP,Oracle集群件会分配一个VIP到一个物理的服务器上,并且在发生服务器失败故障时会将该地址转移到其他存活的服务器上。

我们也必须要给予grid用户和数据库用户以及OGG用户(oracle)启动这个VIP的权限

以oracle用户从$GRID_HOME/bin使用crsctl start resource命令启动VIP

使用crsctl status resource命令确认VIP是否启动,启动在哪个节点上

从另一个节点我们必须要可以ping通这个IP地址

 

2. 创建Agent脚本

这个脚本是Oracle集群件用来检查manager进程是否正在运行并且在需要的时候去停止和启动该进程。上文所提到的Oracle white paper的附录中有一个可用的示例脚本,你可以根据自己的需要进行适当的修改。以下是我所用到的脚本,如果你使用这个脚本,你可能需要根据你自己的实际情况修改相应的GGS_HOME, CRS_HOME, ORACLE_HOME, LD_LIBRARY_PATH路径,如果你用到了ASM,那么你还需要修改ASMPASSWORD的值。

Download950 downloads

这个脚本叫做11gr2_gg_action.sh,你需要将这个脚本放在/ogg目录下(ogg的安装根目录),让集群中的任何一个节点都能访问到它。

 

3. 注册一个集群资源

我们用crsctl add resource命令在集群中添加OGG资源,我这里取名叫ggate

这个START_DEPENDENCIES和STOP_DEPENDENCIES表示VIP和ggate资源应该总是要一起启动和停止。

这里我们的OGG软件所有者与GRID所有者不是同一个账户,所以我们还必须使用crsctl命令将该资源的所有者设置为OGG软件所有者的账户,也就是oracle

4. 启动该应用资源

现在我们可以使用Oracle集群件来启动OGG了,我们使用oracle用户执行GRID_HOME/bin目录下的crsctl start resource启动ogg.

我们看到OGG的manager进程已经通过集群件启动起来了,无论我们是将ogg的mgr进程给kill掉还是手动停止mgr进程,又或者是将已挂载资源的主机当掉,只要有存活的服务器存在,那么集群件都会处理该失败将资源转移到可用的节点上自动启动相关进程以继续服务,这样OGG就利用Oracle的集群件实现了HA的功能。

请尊重我们的辛苦付出,未经允许,请不要转载 Ask600 的文章!