• GoldenGate搭建与运维


      GolenGate介绍

      GoldenGate软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库实时同步(real-time data synchronize)、双活(active-active high availability)。GoldenGate软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制。

      免费下载地址:

      http://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.html

     GoldenGate安装

      GoldenGate软件在源端和目标端都需要进行安装和配置工作。根据源端和目标端的系统以及数据库版本的不同,下载安装不同版本的GoldenGate软件。

      2.1 安装前检查

      ①检查网络端口是否开通

        telnet IP PORT 如果指定端口不能够通信的话,trailfile是不能送达到目标端的。

      ②检查$ORACLE_HOME/lib环境变量是否在当前用户的.profile或.bash_profile里。

       一般来说:

        [Linux                               ]:LD_LIBRARY_PATH
        [Solaris 32-bit ruby            ]:LD_LIBRARY_PATH_32 or LD_LIBRARY_PATH
        [Solaris 64-bit ruby            ]:LD_LIBRARY_PATH_64 or LD_LIBRARY_PATH
        [HP-UX PA-RISC 32-bit ruby]:SHLIB_PATH
        [HP-UX PA-RISC 64-bit ruby]:SHLIB_PATH
        [HP-UX IA64                      ]:LD_LIBRARY_PATH
        [Mac OS X                         ]:DYLD_LIBRARY_PATH
        [AIX                                  ]:LIBPATH

      ③检查源端是否开启归档

        开启归档日志方法:

        (1)保存一致性,先关闭数据库
          SQL>shutdown immediate ;
        (2)启动到mount阶段
          SQL>startup mount;
        (3)切换到归档模式
          SQL>alter database archivelog;
        (4)切换到open阶段
          SQL>alter database open;

      但对于9i版本的数据库,还需要设置log_archive_start=true,否则归档是开通不了的,10g版本之后就废弃了这个参数。设置方法:

          SQL>alter system set log_archive_start=true scope=spfile;

      需要重启数据库才能生效。

      ④检查源端是否开启日志附加模式

        检查方法:select supplemental_log_data_min from v$database;

        修改方法:alter database add supplemental log data;

      ⑤源端与目标端字符集检查

        检查方法:select * from v$nls_parameters;

      ⑥ 源端和目标端创建goldengate用户

        SQL>create user ggmgr identified by ggmgr default tablespace users temporary tablespace temp;

        SQL>grant resource,connect,select any table to ggmgr;

      2.2 安装GoldenGate软件

        1、设置GGS_HOME路径

          export GGS_HOME=$ORACLE_BASE/goldengate

        2、解压压缩包:

          ①unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit.zip

          ②tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar

        3、./ggsci 进入Goldengate命令行

        4、创建子目录

          ggsci>create subdirs

        5、配置主进程参数

          主进程参数用来配置进程监听端口以及其他属性参数

          ggsci>edit params mgr  

    port 7809 #port 指定mgr进程通信端口
    dynamicportlist 7800-8000 #dynamicportlist 表示mgr进程可以为源与目的端动态通信指定端口
    autorestart extract *,retries 3,waitminutes 3,resetminutes 3 #autorestart extract 表示自动重启extract进程组,每3分钟尝试重启所有进程,重试3次,每3分钟清零

        6、启动主进程

          ggsci>start mgr

        7、在源端配置抓取进程(E进程)

          ggsci> add extract e_test ,tranlog,begin now #新增抽取进程e_test,基于日志方式,立即生效

        8、配置抓取进程参数

          ggsci> edit params e_test

        extract e_test
        setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
        userid ggmgr,password ggmgr      #连接DB的用户和密码,可以配置参数文件,具体在direnv里编辑文件user.oby文件
        rmthost oracle11g, mgrport 7812  #目标数据库服务器地址和GG服务端口号
        rmttrail ./dirdat/et             #远程队列的位置
        dynamicresolution                #优化参数,动态分析表结构
        table scott.emp;                 #抓取表信息,可以使用scott.*
        table scott.test;

        9、创建远程队列

          ggsci>add rmttrail /home/oracle/app/goldengate/dirdat/et extract e_test

        10、增加传输表信息

          ggsci>dblogin userid ggmgr,password ggmgr

          ggsic>add trandata scott.emp

        11、启动抓取进行

          ggsci>start extract e_test

        12、新增复制进程(R进程

          ggsci>add replicat r_test exttrail ./dirdat/ex,begin now,nodbcheckpoint

          当然可以配置checkpointtable,方法:

          ggsci>dblogin userid ggmgr,password ggmgr

          ggsci>add checkpointtable ggmgr.checkpoint

        13、配置复杂进程(R进程)

          ggsci>edit params r_test 

         replicat r_test                               #复制进程名
        userid ggmgr,password ggmgr                   #目标数据库的帐号密码
        assumetargetdefs                              #两台数据库数据结构一致则使用此参数
        reperror default,discard                      #如果复制数据出错则忽略
        discardfile ./dirdat/extest.dsc,append,megabytes 100 #错误信息写入文件,追加模式,最大100m                              
        map scott.emp, target ggmgr.emp;              #全表映射关系,注意target前必须留一个空格
        map scott.test ,target ggmgr.test             #指定列映射关系
        colmap(id=cn_id,cnname=cn_name);

         14、启动复杂进程

          ggsci>start replicat r_test

       至此,一个简单的GG链路就算配置完毕了。当然复杂的GG链路,还需要配置D(Data Pump)进程,此进程优势在于:

       主提取进程(即第一个extract)首先将trail生成在本地,然后datapump读取本地trail再发送到目标服务器,即便网络故障,主提取进程仍然能随着事务生成trail文件,而datapump则会暂时停止传输,等待网络通畅后在将堆积的本地trail文件发送至目标服务器,从而实现了断点传输的功能。在实际应用中,每一个同步流程都应该配置datapump以应对网络问题。

           15、新增D进程

        语法:

          ADD EXTRACT pump_NAME, EXTTRAILSOURCE <local_trail>, BEGIN <time>

        eg:

          ggsci> ADD EXTRACT D_TEST,EXTTRAILSOURCE ./dirdat/ex, begin now

         16、配置D进程

          ggsci>edit params d_test

        extract D_TEST
        setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
        userid ggmgr,password ggmgr      #连接DB的用户和密码,可以配置参数文件,具体在direnv里编辑文件user.oby文件
        exttrail ./dirdat/ex             #注意DATA PUMP进程与E进程的区别
        dynamicresolution                #优化参数,动态分析表结构
        table scott.emp;                 #抓取表信息,可以使用scott.*
        table scott.test;

     3、日常运维命令

        

        3.1 view params group_name  #查看已配置的参数

        3.2 edit params  group_name     #编辑参数文件

        3.3 view report  group_name      #查看进程日终

        3.4 info group_name  detail        #查看进程运行的详细信息

        3.5 stats extract/replicat group_name  #查看抓取或者复制进程的静态信息

          3.5.1 stats extract group_name table table_name #查看抓取某张表的静态信息

          3.5.2 STATS {EXTRACT | REPLICAT | ER} {<group| wildcard>}, REPORTRATE {HR | MIN | SEC}  #查看处理进度

          3.5.3 stats extract group_name,totalsonly table_name   #查看自启动以来单表的总的操作

          3.5.4 STATS {EXTRACT | REPLICAT | ER} {<group| wildcard>},{TOTAL | DAILY | HOURLY | LATEST}  #过滤静态信息

          3.5.5 SEND {EXTRACT | REPLICAT | ER} {<group |wildcard>}, REPORT   #

         3.6 查看日志信息

          路径:#GGS_HOME/ggserr.log

         3.7 获取源表机构定义

          defgen paramfile  dirprm/defgen.prm   #使用defgen建立源表定义文件,目标端要用到此命令,执行路径$GGS_HOME

          ggsci>edit params defgen

        DEFSFILE ./dirdef/defgen.def  #将生成文件的位置以及名称
        USERID ggmgr PASSWORD ggmgr   #
        TABLE scott.emp;              #传输的表
        TABLE scott.test;
    

          在$GGS_HOME路径下执行:

          ./defgen paramfile /home/oracle/app/goldengate/dirprm/defgen.prm    

        -----------------------------THE END ----------------------------------

       4 参考

        4.1 Oracle GoldenGate 11g Implementer's guide.pdf

        4.2 http://www.juliandyke.com/Blog/?p=396 

        4.3 http://blog.csdn.net/tianlesoftware/article/category/776328

  • 相关阅读:
    wget时http无效问题
    mysql8.0.15的最简单安装
    创建时间时jdbcType使用的准确性
    fastJson的几种转换模式
    (mybatis)EnumTypeHandler和EnumOrdinalTypeHandler的区别
    在文件上传时fileName.endsWith()的获取后悔
    day22
    day21
    day20
    day19
  • 原文地址:https://www.cnblogs.com/oracle-dba/p/3463305.html
Copyright © 2020-2023  润新知