文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

GoldenGate从oracle迁移数据到mysql

2024-04-02 19:55

关注

 

1       软件简介

安装时应该选择最为稳定的安装版本,现在官方发布的版本主要为:

Oracle GoldenGate 11.2.1.0.1

对应不同的数据库和版本,有不同的安装介质。下面是根据现网情况使用的两个安装介质:

ogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip

ggs_Linux_x64_MySQL_64bit.tar

Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。Oracle Golden Gate可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,从而在可以在应急系统、在线报表、实时数据仓库供应、交易跟踪、数据同步、集中/分发、容灾、数据库升级和移植、双业务中心等多个场景下应用。同时,Oracle Golden Gate可以实现一对一、广播(一对多)、聚合(多对一)、双向、点对点、级联等多种灵活的拓扑结构。

 

2       整体架构

 

和传统的逻辑复制一样,Oracle GoldenGate实现原理是通过抽取源端的redo log或者archive log,然后通过TCP/IP投递到目标端,最后解析还原应用到目标端,使目标端实现同源端数据同步。以下是OracleGoldenGate的技术架构

 


 

Manager进程

Manager进程是GoldenGate的控制进程,运行在源端和目标端上。它主要作用有以下几个方面:启动、监控、重启Goldengate的其他进程,报告错误及事件,分配数据存储空间,发布阀值报告等。

 

Extract进程

 

Extract运行在数据库源端,负责从源端数据表或者日志中捕获数据。

 

Pump进程

 

pump进程运行在数据库源端。其作用是如果源端使用了本地的trail文件,那么pump进程就会把trail以数据块的形式通过TCP/IP协议发送到目标端,这通常也是推荐的方式。pump进程本质是extract进程的一种特殊形式,如果不使用trails文件,那么就是extract进程在抽取完数据以后,直接投递到目标端。

 

Trail文件

 

       为了更有效、更安全的把数据库事务信息从源端投递到目标端。GoldenGate引进trail文件的概念。前面提到extract抽取完数据以后Goldengate会将抽取的事务信息转化为一种GoldenGate专有格式的文件。然后pump负责把源端的trail文件投递到目标端,所以源、目标两端都会存在这种文件。trail文件存在的目的旨在防止单点故障,将事务信息持久化,并且使用checkpoint机制来记录其读写位置,如果故障发生,则数据可以根据checkpoint记录的位置来重传。

 

Replicat进程

 

       Replicat进程,通常我们也把它叫做应用进程。运行在目标端,是数据传递的最后一站,负责读取目标端trail文件中的内容,并将其解析为DML或DDL语句,然后应用到目标数据库中。

 

GGSCI

 

       GGSCI是GoldenGate Software Command Interface 的缩写,它提供了十分丰富的命令来对Goldengate进行各种操作,如创建、修改、监控GoldenGate进程等等

 

灵活的拓扑结构:

GoldenGate从oracle迁移数据到mysql

 

 

2.1   GoldenGate支持列表

Databases

OS and Platforms

Capture:

Windows 2000,2003,xp

Oracle

Linux

DB2 UDB

Sun Slolaris

Microsoft SQL Server

HP NonStop

Sybase ASE

HP Ux

Teradata

HP TRU64

Ingres

IBM AIX

Enscribe

IBM z/OS

SQL/MP

 

SQL/MX

 

Delivery:

 

All listed above

 

Mysql,hp neoview,Netezza

 

And ODBC compatible databases

 

 

 

3       GoldenGate软件安装

3.1 组和用户创建

源端是oracle生产数据库,已经存在oracle和dba,复用该用户和组。

目标端是mysql,已经存在mysql和dba,复用该用户和组。

3.2 GoldenGate安装目录检查

 

 

安装Oracle GoldenGate软件前,需要事先确认安装目录属主权限正确,且所在文件系统有足够的空间存放Oracle GoldenGate软件并能支撑日常运维使用。对于存放dirdat数据目录,至少需要100GB以上的空间。对于源库是oracle rac模式,必须设置ogghome的目录的存储能让rac两台主机识别,只是mount在一个任务较轻的节点上,若是该节点出现故障,能及时挂载到另外一个节点上,增加高可用性。

 

检查安装目录所在文件系统空间信息,通过下述命令实现:

df -g /home/ogghome

 

确认安装目录属主权限信息,通过下述命令实现:

ls –ld /home/ogghome

 

3.3 解压安装文件

Oracle GoldenGate软件通过解压缩方式实现安装,

解压缩GoldenGate安装文件,通过下述命令实现:

unzip ggs_*.zip

tar -xvf  ggs_*.tar

 

3.4 GoldenGate软件启动测试

Oracle GoldenGate软件通过ggsci命令启动交互界面,当ggsci启动成功则表名安装过程无误。启动ggsci前务必进入Oracle GoldenGate软件的安装目录。

启动Oracle GoldenGate的ggsci,通过下述命令实现:

cd /home/oracle/ggs/goldengate

./ggsci

Oracle数据库的账号必须设置LD_LIBRARY_PATH环境变量,否则会报错,

LD_LIBRARY_PATH=/oracle/product/10.2/db/lib

3.5 、创建GoldenGate软件子目录

进入安装路径,创建相关目录(源端和目标端都执行),源端使用oracle用户,目标端使用mysql用户:

cd /home/ogghome

./ggsci

GGSCI> create subdirs

下面是日志:

Creating subdirectories under current directory /home/ogghome

Parameter files                /home/ogghome/dirprm: already exists

Report files                   /home/ogghome/dirrpt: created

Checkpoint files               /home/ogghome/dirchk: created

Process status files           /home/ogghome/dirpcs: created

SQL script files               /home/ogghome/dirsql: created

Database definitions files     /home/ogghome/dirdef: created

Extract data files             /home/ogghome/dirdat: created

Temporary files                /home/ogghome/dirtmp: created

Stdout files                   /home/ogghome/dirout: created

 

 

4       GoldenGate部署

4.1 初始化源端数据库

4.1.1             开启归档模式

GoldenGate是基于oracle日志变化的捕获,所以为了完整的捕获到oracle数据库的变化,有必要将归档模式开启。

SQL>      alter system set log_archive_dest_1='location=/arch' scope=both;

  SQL>  shutdown immediate

  SQL>  startup mount

  SQL>  alter database archivelog

  SQL>  alter database open

  SQL>  archive log list

注意,由于上面命令涉及停止数据库应用,应结合业务实际情况进行操作。

4.1.2             开启附加日志

在oracle中我们可以通过rowid来定位某条记录,但是目标端的数据库和源端数据库的数据库可能完全不一样,所以无法通过rowid来确定源端数据库的逻辑变化,这时附件日志supplemental log便登上了表演的舞台。数据库在开启附加日志功能后,对于源端的修改操作,oracle会同时追加能够唯一标示记录的列到redo log。这样目标端数据库就可以知道源端发生了哪些具体的变化。

 

   SQL>       alter database add supplemental log data;

   SQL>       alter system switch logfile;

   SQL>       select supplemental_log_data_min from v$database;

4.1.3             开启强制日志模式

SQL>alter database force logging;

 SQL>SELECT FORCE_LOGGING FROM V$DATABASE;

4.1.4             goldengate创建用户并授权

源端oracle数据库创建账号:

create tablespace data_goldengate datafile '+DG_DATA1' size 10240m autoextend on;

create user goldengate identified by password default tablespace data_goldengate temporary tablespace temp;

 

赋予goldengate相关权限(想简单的话,可以赋予DBA权限,若是涉及安全问题,dba权限不能随便赋予)

grant CONNECT,RESOURCE to goldengate;

grant CREATE SESSION,ALTER SESSION to goldengate;

grant SELECT ANY DICTIONARY,SELECT ANY TABLE to goldengate;

grant CREATE TABLE,ALTER ANY TABLE to goldengate;

grant unlimited tablespace to goldengate;

 

目标端mysql创建账号,赋予dba权限:

grant ALL PRIVILEGES on *.* to goldengate@'%';

grant ALL PRIVILEGES on *.* to goldengate@'localhost';

 

update mysql.user set password=password('password') where user='goldengate';

4.1.5             对需要同步的表确认是否开启表级附加日志

./ggsci

GGSCI (localhost.localdomain) 1> dblogin userid goldengate password password

Successfully logged into database.

 

GGSCI (localhost.localdomain) 2> info trandata xianyezhao.CALENDAR_DETAIL

Logging of supplemental redo log data is disabled for table XIANYEZHAO.CALENDAR_DETAIL.

 

GGSCI (localhost.localdomain) 3> add trandata xianyezhao.CALENDAR_DETAIL

Logging of supplemental redo data enabled for table XIANYEZHAO.CALENDAR_DETAIL.

 

 

GGSCI (localhost.localdomain) 4> info trandata  XIANYEZHAO.CALENDAR_DETAIL

Logging of supplemental redo log data is enabled for table XIANYEZHAO.CALENDAR_DETAIL.

Columns supplementally logged for table XIANYEZHAO.CALENDAR_DETAIL: SEQNO.

 

4.2 配置ASM访问方式

由于oracle redo 日志文件在ASM存储上,goldengate软件需要访问ASM

配置asm实例的tns连接字符串,由于监听状态是BLOCKED,必须添加(UR=A)才能通过ogg远程登录asm实例。下面是官方详细说明:

ASM instances appear with a blocked status from the 'lsnrctl services'command (see below). To remotely access a 'blocked service' you need toadd (UR=A) to the tns connect string (plus you will need a password filefor the asm instance).

Tnsnames.ora entry:----

下面是监听状态,使用lsnrctl status查看:

Service "+ASM" has 1 instance(s).

  Instance "+ASM2", status BLOCKED, has 1 handler(s) for this service...

下面是具体的tns连接字符串:

ASM = 

 (DESCRIPTION = 

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.219.6)(PORT = 1521)) 

    (CONNECT_DATA = 

      (SERVER = DEDICATED) 

      (SERVICE_NAME = +ASM)

      (INSTANCE_NAME = +ASM2) 

      (UR=A)

    ) 

  )

 

4.3 配置NFS文件系统

由于归档是使用文件系统,需要使用nfs文件模式,把另外一个节点的归档挂载到本地。

a.开启nfs服务:

service nfs start

查看nfs状态:

service nfs status

b.开启nfs权限:

编辑权限列表:

vi /etc/exports

/archivelog1    *(rw)

更新权限:

exportfs –a

c.创建/archivelog1,更改权限为oracle和dba,

chown oracle:dba /archivelog1

使用root用户mount上:

mount 192.168.219.3:/archivelog1 /archivelog1

4.4 在源端和目标端配置MGR

ggsci>     EDIT  PARAMS  MGR

PORT   7809

PURGEOLDEXTRACTS  ./dirdat,USECHECKPOINTS

 

ggsci>     START   MGR

ggsci>    INFO      MGR

4.5 创建Extract: ext_cal

4.5.1             增加extract

add extract ext_cal, tranlog, begin now, THREADS 2

EXTRACT added.

4.5.2             设定exttrail

add exttrail ./dirdat/ca, extract ext_cal, megabytes 100

EXTTRAIL added.

4.5.3             配置extract

下面******替换成密码:

edit params ext_cal

EXTRACT ext_cal                                                          

SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")                                                    

SETENV (ORACLE_SID="g139bak2")                                                 

userid goldengate, password password

TRANLOGOPTIONS ASMUSER sys@asm,ASMPASSWORD ******

EXTTRAIL ./dirdat/ca    

TRANLOGOPTIONS LOGRETENTION DISABLED

TRANLOGOPTIONS BUFSIZE 2048000

tranlogoptions altarchivedlogformat threadid 1 g139bak_%S_%T_%R.log

tranlogoptions altarchivedlogformat threadid 2 g139bak_%S_%T_%R.log

tranlogoptions altarchivelogdest instance g139bak1 /archivelog1/g139bak_archivelog, altarchivelogdest instance g139bak2 /archivelog2/g139bak_archivelog

 

--DDL INCLUDE mapped

--DDLOPTIONS ADDTRANDATA

 

DISCARDFILE ./dirrpt/ext_cal.dsc,APPEND,MEGABYTES 1000

DISCARDROLLOVER AT 6:00

 

REPORTROLLOVER AT 6:00

REPORTCOUNT EVERY 1 HOURS,RATE

 

TRANLOGOPTIONS ALTARCHIVELOGDEST /archivelog2

 

FETCHOPTIONS MISSINGROW ABEND

STATOPTIONS REPORTFETCH

 

WARNLONGTRANS 1H,CHECKINTERVAL 10m

 

DYNAMICRESOLUTION        

TABLE XIANYEZHAO.CALENDAR_DETAIL;

TABLE XIANYEZHAO.CALENDAR_INFO;

 

 

下面是查看内容:

GGSCI (gb139bak02) 5> view report ext_cal

 

 

4.6 创建投送进程: dp_cal

4.6.1             增加extract

add extract dp_cal, exttrailsource ./dirdat/ca

4.6.2             设定extract投递rmttrail

add rmttrail ./dirdat/ca, extract dp_cal

4.6.3             配置extract

edit params dp_cal

 

EXTRACT dp_cal

passthru

DYNAMICRESOLUTION

RMTHOST 192.168.219.35, MGRPORT 7809, COMPRESS

RMTTRAIL ./dirdat/ca

TABLE XIANYEZHAO.CALENDAR_DETAIL;

TABLE XIANYEZHAO.CALENDAR_INFO;

 

由于没有配置目标端的mgr进程,7809没有打开,网络报错,导致进程挂掉。

GGSCI (localhost.localdomain) 48> view report dp_cal

GGSCI (gb139bak02) 65> view report dp_cal

 

 

4.7 创建定义文件

在源端编辑defgen文件

su - oracle

cd ./dirprm

$ vi cal.prm

DEFSFILE /home/ogghome/dirdef/cal.def

USERID goldengate PASSWORD password

TABLE XIANYEZHAO.CALENDAR_DETAIL;

TABLE XIANYEZHAO.CALENDAR_INFO;

 

 

 

通过执行defgen命令生成定义文件

/home/ogghome/defgen PARAMFILE /home/ogghome/dirprm/cal.prm

 

***********************************************************************

        Oracle GoldenGate Table Definition Generator for Oracle

      Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230

   Linux, x64, 64bit (optimized), Oracle 10g on Apr 23 2012 05:09:39

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

                    Starting at 2014-06-09 15:24:08

***********************************************************************

Operating System Version:

Linux

Version #1 SMP Thu Sep 5 21:21:44 EDT 2013, Release 2.6.18-371.el5

Node: gb139bak02

Machine: x86_64

                         soft limit   hard limit

Address Space Size   :    unlimited    unlimited

Heap Size            :    unlimited    unlimited

File Size            :    unlimited    unlimited

CPU Time             :    unlimited    unlimited

Process id: 2014

***********************************************************************

**            Running with the following parameters                  **

***********************************************************************

DEFSFILE /home/ogghome/dirdef/cal.def

USERID goldengate PASSWORD ********

TABLE XIANYEZHAO.CALENDAR_DETAIL;

Retrieving definition for XIANYEZHAO.CALENDAR_DETAIL

TABLE XIANYEZHAO.CALENDAR_INFO;

Retrieving definition for XIANYEZHAO.CALENDAR_INFO

Definitions generated for 2 tables in /home/ogghome/dirdef/cal.def

 

 

把生成的def文件传输到mysql端

[oracle@localhost dirdef]$ sftp mysql@192.168.61.131

Connecting to 192.168.61.131...

mysql@192.168.61.131's password:

sftp> cd /home/ogghome/dirdef

sftp> !ls

sftp> put cal.def

Uploading cal.def to /home/ogghome/dirdef/cal.def

cal.def                                                                                         100% 1001     1.0KB/s   00:00

修改mysql端定义文件的权限

chown mysql:dba /home/ogghome/dirdef/cal.def

chmod 755 /home/ogghome/dirdef/cal.def

4.8 初始化数据

 

4.8.1             Oracle到oracle导出方式

1、查看系统改变号:

col current_scn for 999999999999999999999999999999

select current_scn from v$database;

--1138506

 

2、导出导入数据:

set linesize 133

col directory_path format a50

select * from dba_directories;

SYS                            DATA_PUMP_DIR                  /opt/oracle/app/admin/test/dpdump/

 

expdp \'/ as sysdba \' DIRECTORY=DATA_PUMP_DIR DUMPFILE=t3.dmp LOGFILE=t3.log TABLES=test.t3 FLASHBACK_SCN=1138506

 

impdp \'/ as sysdba \' DIRECTORY=DATA_PUMP_DIR DUMPFILE=t3.dmp LOGFILE=t3_imp.log TABLES=test.t3 REMAP_TABLESPACE=DATA_TEST:DATA_TEST

--REMAP_SCHEMA=TEST:TEST

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯