基于GOLDENGATE构建在线报表系统–模式1

By   2016-09-01  

   通过GOLDENGATE实现在线报表系统,在不同的系统拓扑下,可以有不同的实现模式。我们首先来研究一下最简单的配置架构,其拓扑结构如图所示:

    在该种拓扑结构中,需要在源端数据库创建一个extract进程组,用于捕获数据。extract进程组将捕获的数据通过网络直接投递到目标端,在目标端生成rmttrail文件。replicat组进程读取rmttrail文件后,将数据应用到数据库。

       搭建环境如下:

       源端数据库:mysql

      目标端数据库:mysql

      goldengate软件版本:12c

      配置过程如下

      1、在源端节点上,使用ADD EXTRACT命令创建EXTRACT进程组,命令如下:

  1. ADD EXTRACT ext, TRANLOG, BEGIN NOW
      2、在源端使用如下命令添加rmttrail文件:
  1. ADD RMTTRAIL /u01/mysqlogg/dirdat/lr, EXTRACT ext
        3、在源端节点上,使用edit param命令创建extract进程组的参数文件,添加参数内容如下
  1. EDIT PARAMS EXT
  1. -- Identify the Extract group:
  2. EXTRACT ext
  3. tranlogoptions altlogdest '/var/lib/mysql/binlog/bin.index'
  4. -- Specify database login information as needed for the database:
  5. SOURCEDB db1@192.168.18.11:3306, USERID ogg, PASSWORD ogg
  6. -- Valid for Oracle. Specify the name or IP address of the target system and
  7. -- optional encryption across TCP/IP:
  8. RMTHOST 192.168.18.12, MGRPORT 7809
  9. -- Specify the remote trail and encryption algorithm on the target system:
  10. RMTTRAIL /u01/mysqlogg/dirdat/lr
  11. -- Specify tables to be captured:
  12. TABLE db1.t*;
        4、在目标节点,创建检查表,用于存放复制进程组的检查点信息
  1. dblogin sourcedb ogg@192.168.18.12:3306 userid ogg password ogg
  2. add checkpointtable ogg.ggs_checkpoint
        5、在目标节点,创建replicat进程组,命令如下
  1. ADD REPLICAT rep, EXTTRAIL /u01/mysqlogg/dirdat/lr, BEGIN now
        6、在目标节点,使用edit param命令编辑replicat进程组参数如下
  1. EDIT PARAM rep
  1. -- Identify the Replicat group:
  2. REPLICAT rep
  3. -- State whether or not source and target definitions are identical:
  4. ASSUMETARGETDEFS
  5. -- Specify database login information as needed for the database:
  6. TARGETDB db1@192.168.18.12:3306, USERID ogg, PASSWORD ogg
  7. -- Specify tables for delivery and threads if using coordinated Replicat:
  8. MAP db1.t*, TARGET db1.*;

   优点:

        1、配置简单


   缺点:

        1、当网络发生故障时,extract进程组报错,在网络故障解除前,抽取工作无法持续进行,这段时间内,如果发生日志重用等操作,可能会导致数据丢失。测试过程如下:

  1. delimiter ;
  2. drop procedure if exists testc;
  3. delimiter $$
  4. create procedure testc()
  5. begin
  6. declare i int;
  7. set i = 1;
  8. while i < 1000000 do
  9. insert into db1.t1 values (i,i,i);
  10. set i = i +1;
  11. end while;
  12. end $$
  13. delimiter ;
  14. call testc();
关闭网络连接后,extract进程组发生阻塞,
重新启动extract进程组,无法恢复
 
    2、extract进程组在抓取数据的同时,执行网络功能、数据过滤和转换功能,负载较高。
建议:
    在生产环境中,不建议使用该种架构。

 

发表评论

邮箱地址不会被公开。