zoukankan      html  css  js  c++  java
  • 10.Oracle Golden Date(ogg)的搭建和管理

    一. GoldenGate 概述

      GoldenGate现在是业内成熟的数据容灾与复制产品;GoldenGate是一种基于日志的结构化数据复制方式,它通过解析源数据库在线日志或归档日志获得数据的增删改变化(数据量只有日志的四分之一左右),再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。

    二. GoldenGate 搭建

      目标在linux系统下安装Oracle;利用GoldenGate 实现数据同步;可复制DML和DDL操作

    环境如下:本环境目标端是源端的克隆;步骤请参考第8篇

      源端 目标端
    操作系统 linux6.5 linux6.5
    IP 192.168.1.235 192.168.1.221
    数据库版本 11.2.0.4.0 11.2.0.4.0
    GoldenGate版本 11.2.1.0.1 11.2.1.0.1

    2.1 创建 GoldenGate 操作系统用户

      两台服务器都需要创建 ogg 操作系统用户(此步骤非必须,也可以使用ORACLE用户安装)。

    useradd -u 1003 -g oinstall -G dba ogg
    passwd ogg

    2.2 修改 GoldenGate 系统用户环境变量

    source /home/oracle/.bash_profile
    # or
    export ORACLE_BASE=/u01/app
    export ORACLE_HOME=$ORACLE_BASE/oracle
    export ORACLE_SID=ora221
    export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin/data/ogg
    export NLS_LANG=AMERICAN_AMERICA.UTF8
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    alias sqlplus='rlwrap sqlplus'
    alias ggsci='rlwrap ggsci'

    2.3 创建 GoldenGate 安装目录

      两台服务器都需要做同样的操作。

    mkdir -p /data/ogg
    chown -R ogg:oinstall /data/ogg

    2.4 安装 GoldenGate

      两台服务器都需要操作。

    unzip fbo_ggs_Linux_x64_ora11g_64bit.tar.zip
    tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /data/ogg
      登录 GoldenGate执行ggsci命令即可。

    2.5 建立 GoldenGate表空间 

      两台服务器都需要操作: 建议使用单独的表空间存放 GoldenGate 数据

    create tablespace tsp_ogg datafile '/data/oracle/data/ogg01.dbf' size 100M autoextend on;

    2.6 创建 GoldenGate 用户并赋权

      两台服务器都需要操作

    create user ogg identified by ogg default tablespace tsp_ogg;
    grant dba to ogg;
    GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;

    2.7 配置数据库

      由于 GoldenGate 的原理是根据 Oracle 的日志进行抽取复制。为了保证日志的完整性;需要打开 Oracle 数据库归档;

    alter system set log_archive_dest_1 = 'LOCATION=/data/arch' scope = spfile;
    shutdown immediate;
    startup mount
    alter database archivelog;
    alter database open;

      还需要开启 force log 和 supplemental log

    alter database force logging;
    alter database add SUPPLEMENTAL log data;

      最后查询结果如下:

    SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
    
    NAME   OPEN_MODE        FOR SUPPLEME
    --------- -------------------- --- --------
    ORA235   READ WRITE        YES YES

    2.8 运行 GoldenGate 支持 DDL 脚本 

      如果要让 GoldenGate 支持DDL操作,还需要额外运行几个脚本,这些脚本是OGG带的而不是 Oracle 带的,在 GoldenGate 的安装目录都可以找到,源端与目标端都需要运行,如下:

    @marker_setup.sql
    @ddl_setup.sql
    @role_setup.sql
    @ddl_enable.sql

      在11.2.0.4.0版本;需要设置

    ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

    三. GoldenGate单向复制流程配置

      现在就可以正式配置OGG了,在配置OGG之前,先看下OGG的复制流程,OGG和其他传统复制软件一样,也是通过源端捕获/挖掘ORACLE的日志信息, 目标端根据源端传送过来的日志信息进行重塑,实现源端-目标端数据同步,可以参考下图。

      只有commit之后的日志信息才会被Capture进程捕获,未提交的事务OGG不会捕获。

    3.1 创建 GoldenGate 的工作目录 

      源端和目标端都需要创建,登录GoldenGate,只需要执行create subdirs命令就可以了。

    [ogg@oracle235 ogg]$ ggsci
    
    Oracle GoldenGate Command Interpreter for Oracle
    Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
    Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
    
    Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
    
    
    
    GGSCI (oracle235) 1> create subdirs
    
    Creating subdirectories under current directory /data/ogg
    
    Parameter files                /data/ogg/dirprm: already exists
    Report files                   /data/ogg/dirrpt: created
    Checkpoint files               /data/ogg/dirchk: created
    Process status files           /data/ogg/dirpcs: created
    SQL script files               /data/ogg/dirsql: created
    Database definitions files     /data/ogg/dirdef: created
    Extract data files             /data/ogg/dirdat: created
    Temporary files                /data/ogg/dirtmp: created
    Stdout files                   /data/ogg/dirout: created

    3.2 添加 CheckPoint 表

      为了保证源和目标端在传数据的时候不会重复或者少传,在目标端添加checkpoin表。

    操作如下:

    GGSCI (oracle235) 2> EDIT PARAMS ./GLOBALS
    CHECKPOINTTABLE ogg.ggschkpt
    
    GGSCI (oracle235) 3> exit
    [ogg@oracle235 ogg]$ ggsci
    
    Oracle GoldenGate Command Interpreter for Oracle
    Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
    Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
    
    Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
    
    GGSCI (oracle235) 1> DBLOGIN USERID ogg, PASSWORD ogg
    Successfully logged into database.
    
    GGSCI (oracle235) 2> ADD CHECKPOINTTABLE
    
    No checkpoint table specified, using GLOBALS specification (ogg.ggschkpt)...
    
    Successfully created checkpoint table ogg.ggschkpt.

    3.3 配置 MGR 进程组

      在源端和目标端都必须运行一个MGR进程组;负责启动GoldenGate进程,以及启动动态进程,管理trail文件,错误信息。

      运行ggsci程序;输入 “EDIT PARAMS MGR” 编辑参数文件:

    [ogg@oracle235 ogg]$ ggsci
    
    Oracle GoldenGate Command Interpreter for Oracle
    Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
    Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
    
    Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
    
    GGSCI (oracle235) 1> EDIT PARAMS MGR

      输入内容如下:

    PORT 7809 
    DYNAMICPORTLIST 7800-8000
    AUTORESTART EXTRACT *, WAITMINUTES 2, RESETMINUTES 5
    PURGEOLDEXTRACTS /data/ogg/dirdat, USECHECKPOINTS, MINKEEPDAYS 3
    • PORT:指定服务监听端口;默认端口为7809
    • DYNAMICPORTLIST:动态端口:可以制定最大256个可用端口的动态列表,当指定的端口不可用时,管理进程将会从列表中选择一个可用的端口,源端和目标段的Collector、Replicat、GGSCI进程通信也会使用这些端口
    • AUTORESTART:自动重启参数设置:本处设置表示每2分钟尝试重新启动所有EXTRACT进程;以后5分钟清零。
    • PURGEOLDEXTRACTS:定期清理trail文件设置:本处设置表示对于超过3天的trail文件进行删除

       启动MGR进程

    GGSCI (oracle235) 2> start mgr
    
    Manager started.
    
    GGSCI (oracle235) 3> info mgr
    
    Manager is running (IP port oracle235.7809).

    3.4 源端配置 Extract 进程

      负责抓取需要传输数据;下面在源端配置抽取进程

    GGSCI (oracle235) 1> EDIT PARAMS EORA_1
    
    EXTRACT EORA_1
    SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
    USERID ogg, PASSWORD ogg 
    EXTTRAIL /data/ogg/dirdat/aa 
    TABLE lottu.*;

      在源端用 add extract 命令创建 extract 组;用add exttrail 命令创建本地 trail 文件

    GGSCI (oracle235) 2> ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW
    EXTRACT added.
    
    GGSCI (oracle235) 3> ADD EXTTRAIL /data/ogg/dirdat/aa, EXTRACT EORA_1, MEGABYTES 5
    EXTTRAIL added.

      启动 extract 进程;在 ggsci 中:可以使用 add, alter, cleanup, delete, info, kill命令管理extract进程

    GGSCI (oracle235) 4> start extract eora_1
    
    Sending START request to MANAGER ...
    EXTRACT EORA_1 starting
    
    GGSCI (oracle235) 5> info eora_1
    
    EXTRACT    EORA_1    Last Started 2018-08-23 00:52   Status RUNNING
    Checkpoint Lag       00:06:20 (updated 00:00:04 ago)
    Log Read Checkpoint  Oracle Redo Logs
                         2018-08-23 00:46:36  Seqno 12, RBA 34652672
                         SCN 0.0 (0)

    3.5 配置 Pump 进程

      extract进程负责将抓取的数据写入本地trail文件;而需要Pump进程把trail文件传输到目标端。使用 EDIT PARAMS PORA_1 添加配置文件

    GGSCI (oracle235) 6> EDIT PARAMS PORA_1
    
    EXTRACT PORA_1
    SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
    PASSTHRU
    RMTHOST 192.168.1.221, MGRPORT 7809
    RMTTRAIL /data/ogg/dirdat/pa
    TABLE lottu.*;

      用 add extract 指定本地 trail 文件

    GGSCI (oracle235) 7> ADD EXTRACT PORA_1, EXTTRAILSOURCE /data/ogg/dirdat/aa
    EXTRACT added.

      用 add rmttrail 指定远程 trail 文件

    GGSCI (oracle235) 8> ADD RMTTRAIL /data/ogg/dirdat/pa, EXTRACT PORA_1, MEGABYTES 5
    RMTTRAIL added.

      启动 pump 进程

    GGSCI (oracle235) 9> START EXTRACT PORA_1
    
    Sending START request to MANAGER ...
    EXTRACT PORA_1 starting
    
    GGSCI (oracle235) 11> info all
    
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    
    MANAGER     RUNNING                                           
    EXTRACT     RUNNING     EORA_1      00:00:00      00:00:07    
    EXTRACT     RUNNING     PORA_1      00:00:00      00:00:02 

    3.6 配置目标端的 Replicat 进程

      Replicat 进程运行于目标端;负责将源端传过来的 trail 文件;在目标端数据库应用。实现源端和目标端数据同步。

    GGSCI (oracle221) 2> EDIT PARAMS RORA_1
    
    REPLICAT RORA_1 
    SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
    USERID ogg, PASSWORD ogg 
    HANDLECOLLISIONS 
    ASSUMETARGETDEFS 
    DISCARDFILE /data/ogg/dirrpt/RORA_aa.rpt, append 
    MAP lottu.*, TARGET lottu.*;

      在目标端使用 add replicat 添加 Replicat 进程

    GGSCI (oracle221) 8> add replicat RORA_1, exttrail /data/ogg/dirdat/pa 
    REPLICAT added.

       使用 start replicat 启动 Replicat 进程

    GGSCI (oracle221) 11> start REPLICAT RORA_1
    
    Sending START request to MANAGER ...
    REPLICAT RORA_1 starting
    
    GGSCI (oracle221) 12> info all
    
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    
    MANAGER     RUNNING                                           
    REPLICAT    RUNNING     RORA_1      00:00:00      00:00:00  

    四. 配置 DDL 同步

      在前面我们已经配置 GoldenGate 支持DDL脚本;其中有创建 Trigger;DDL跟DML 复制机制不同;DML复制是基于redo log。其DDL复制原理是基于Trigger;它扑捉DDL操作记录在中间表;Extract读取中间表DDL操作;Pump投递到目标端;目标端在应用DDL语句。

    4.1 运行 GoldenGate 支持 DDL 脚本

      前面已级操作 ;略。

    4.2 关闭 Oracle 的 recyclebin

      在执行上一步操作有一个温馨提示:‘NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.’ GoldenGate10G DDL不支持Oracle回收站功能;本文提供的GoldenGate版本是11G;该操作也略;

      关闭Oracle回收站功能

    alter system set recyclebin=off scope=both;

    4.3 源端配置

      指定DDL复制的用户

    GGSCI (oracle235) 19> view params ./GLOBALS
    
    GGSCHEMA OGG

      停MGR,Extract进程;
      配置Extract配置文件;在配置文件添加一下内容:

    DDL INCLUDE ALL
    DDLOPTIONS ADDTRANDATA,REPORT

    4.4 目标端配置

      停MGR,Replicat进程;
      配置Replicat配置文件;在配置文件添加一下内容:

    DDL INCLUDE MAPPED
    DDLOPTIONS REPORT

      配置完成;在重启各进程进行验证

    五. 总结

      本文只涉及到 GoldenGate 的单向复制的配置和安装;其实GoldenGate还有很多架构:例如1对多同步,级联同步;双向同步等等。根据场景不同应用不同架构;还有GoldenGate日常维护,错误分析,监控,以及性能优化调整。大家可以阅读《企业级IT运维宝典之GoldenGate实战》或者查看官方文档

     

  • 相关阅读:
    linux第三方程序移植
    jffs2文件系统制作
    NFS文件系统制作
    linux-3.0内核移植到fl2440开发板(以MINI2440为模板)
    linux根文件系统制作
    u-boot-2010.09移植(A)
    u-boot-2010.09移植(B)
    browser shell
    管理者的角色修炼-第三课-赢在执行
    管理者的角色修炼-第二课总结
  • 原文地址:https://www.cnblogs.com/lottu/p/9542681.html
Copyright © 2011-2022 走看看