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

GoldenGate搭建与运维的更多相关文章

  1. CetenOS 6.9 搭建hubot运维机器人

    前言 Hubot是由Github开发的开源聊天机器人,基于Node.js采用CoffeeScript编写 可以借助Hubot开发Chatbot来自动化的完成想要一切自动化任务,比如: -运维自动化(编 ...

  2. 【搭建Saltstack运维工具】

    目录 所谓Salt 开始搭建 配置接受密钥 salt命令 YAML详解 目标定位字符串 state模块定义主机状态 Salt采集静态信息之GrainsSalt @(Saltstack) *** 所谓S ...

  3. Lnmp搭建zabbix运维监控系统

    使用目的? 在公司项目中需要做一个日志监控,最开始选择的是efk,但是efk的资料相对较少并且之前对这几个产品都没接触过,使用起来难度.于是选择了zabbix作为项目的运维监控系统. zabbix能做 ...

  4. Centos7搭建ansible运维自动化工具

    1)设置主机名和hosts文件 2)配置阿里云repo源 Wget -O /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Ce ...

  5. 零基础转行Linux云计算运维工程师获得20万年薪的超级学习技巧

    云计算概念一旦产生便一发不可收拾,成为移动互联网时代最为火热的行业之一.国内各大互联网公司例如阿里.腾讯.百度.网易等纷纷推出自己的云计算产品,3月10日,腾讯云0.01元投标时间更是让云计算在普罗大 ...

  6. 最适合初学者的Linux运维学习教程2018版

    Linux运维工程师是一个新颖岗位,现在非常吃香,目前从行业的角度分析,随着国内软件行业不断发展壮大,越来越多复杂系统应运而生,为了保证系统稳定运行,必须要有足够多的Linux运维工程师.维护是软件生 ...

  7. 【运维技术】redis(一主两从三哨兵模式搭建)记录

    redis(一主两从三哨兵模式搭建)记录 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也包含我自己,能够节省对应的时间. 软件架构: 生产环境使用三台 ...

  8. 快速搭建windows服务器的可视化运维环境

    开发好的程序部署在服务器上,如何对服务器的基本指标进行监控呢?最近对一套工具进行了研究,可以快速搭建服务器监管环境,很是强大,最重要的是它还很酷炫. 原理:数据采集+时序数据库+可视化,下面记录一下搭 ...

  9. 运维开发实践——基于Sentry搭建错误日志监控系统

    错误日志监控也可称为业务逻辑监控, 旨在对业务系统运行过程中产生的错误日志进行收集归纳和监控告警.似乎有那么点曾相识?没错... 就是提到的“APM应用性能监控”.但它又与APM不同,APM系统主要注 ...

随机推荐

  1. 【链表】Remove Duplicates from Sorted List II(三指针)

    题目: Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct  ...

  2. java学习-java.lang一Number类

    java.lang包是java语言中被用于编程的基本包.编写的程序基本上都要用到这个包内的常用类. 包含了基本数据类型包装类(Boolean,Number,Character,Void)以及常用类型类 ...

  3. 6-nginx-会话一致性解决(sesion一致)

    由于tomcat使用的为集群, 通过nginx访问时轮询不同的tomcat, 使得session无法统一, 所以将session单独抽取出来做共享session. 此tomcat版本为 7.0.61. ...

  4. jQuery为图片添加链接(创建新的元素来包裹选中的元素)

    主要用到 wrap()函数 http://www.w3school.com.cn/jquery/manipulation_wrap.asp 这个函数是创建新的的元素去包裹所执行这个方法的元素 如下例子 ...

  5. spark报错处理

    Spark报错处理 1.问题:org.apache.spark.SparkException: Exception thrown in awaitResult 分析:出现这个情况的原因是spark启动 ...

  6. 【LeetCode题解】231_2的幂(Power-of-Two)

    目录 描述 解法 1:判断整数 \(x\) 的二进制表示中是否只有一位为1 实现方式 1:除以 2 Java 实现(非递归) Python 实现(非递归) Java 实现(递归) Python 实现( ...

  7. activiti 临时笔记mark

    public class TenMinuteTutorial { public static void main(String[] args) { // Create Activiti process ...

  8. Android设计原则和设计模式

    1. 设计模式的六大基本原则 1.0 总结: 因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定.而软件中易变的细节,我们用从抽象派生的实现类来进行扩展,当软件需要发生变化时,我们 ...

  9. Keepalived 无法自动转换主备角色,请关注 iptables 防火墙配置

    最近在研究服务器高可用集群 (HA)…… 搭建了主备两台Keepalived,配置什么的全是网上照抄的,被验证过无数遍的示例…… 然而Master和Backup无法自动切换.两边会同时绑定浮动IP(V ...

  10. ShellExecute 启动外部程序 参数详细介绍

    ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件.打开一个目录.打印一个文件等等),并对外部程序有一定的控制. 目录 1基本简介 2原型参数 3返回值 4例子 5特殊用法 ...