基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL

news2025/5/20 15:49:44

基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL

场景说明:
先有项目需要读取生产库数据,但是不能直接读取生产库数据,需要把生产数据同步到一个中间库,下游系统从中间库读取数据。

生产库mysql - OGG - 中间库 mysql

备注:中间库也可以是其Oracle或者其他数据库类型,为了方便处理,采用同类型数据库

ogg版本:ogg21.5

前提条件

Ogg18.1 remote capture要求mysql为5.7版本,只能从linux远程捕获mysql on windows or linux,且不支持DDL捕获。支持远程mysql为community/commerical版本。

OGG抽取配置
远程捕获不支持DDL同步。

远程捕获参考网址:
https://docs.oracle.com/en/middleware/goldengate/core/19.1/oggmp/oracle-goldengate-classic-mysql.html#GUID-A70C0798-CE2A-4938-A54E-16BD9BA415AE
https://docs.oracle.com/en/middleware/goldengate/core/21.3/gghdb/preparing-and-configuring-system-oracle-goldengate.html#GUID-DCEF7BEE-CCF0-4531-8266-36F15105EDFA


通常,从站应用的事务会记录到中继日志中,而不是从站的二进制日志中。
要使从属服务器在其二进制日志中写入从属服务器从属服务器接收的事务,
必须将 my.cnf 中的 log-slave-updates 选项作为 1 与 Oracle GoldenGate 
的其他二进制日志记录参数一起启动复制从属服务器。在主节点的事务进入从节点的二进制日志后,
您可以在节点上设置常规的 Oracle GoldenGate 捕获,以捕获和处理节点的二进制日志。

准备工作 源端创建OGG应用用户


--源端创建OGG同步用户(测试环境)
CREATE USER 'ogguser_s'@'10.10.xx.xx' IDENTIFIED BY 'Sjztdb#2023';
GRANT ALL PRIVILEGES ON *.* TO 'ogguser_s'@'10.10.xx.xx' WITH GRANT OPTION;
FLUSH PRIVILEGES;


--源端创建OGG同步用户(生产环境)
CREATE USER 'ogguser_s'@'10.128.xx.xx' IDENTIFIED BY 'Sjztdb#2023';
GRANT ALL PRIVILEGES ON *.* TO 'ogguser_s'@'10.128.xx.xx' WITH GRANT OPTION;
FLUSH PRIVILEGES;

创建测试表:
create table mtab (mid int primary key,mname varchar(100),vdate date);
insert into mtab values(1001,'oggtomysql','2024-01-01');

准备工作 目标端创建ogg同步用户

-- 语法
dbhostname是OGG服务器地址
mysql > CREATE USER 'targetuser'@'dbhostname' IDENTIFIED BY 'password'; 
mysql > GRANT ALL PRIVILEGES ON *.* TO 'targetuser'@'dbhostname'; 
mysql > FLUSH PRIVILEGES;

--创建用户并授权(测试环境)
CREATE USER 'ogguser_t'@'10.10.xx.xx' IDENTIFIED BY 'Sjztdb#2023'; 
GRANT ALL PRIVILEGES ON *.* TO 'ogguser_t'@'10.10.xx.xx'; 
FLUSH PRIVILEGES;

ALTER USER 'ogguser_t'@'10.10.194.7' IDENTIFIED WITH mysql_native_password BY 'Sjztdb#2023';
flush privileges;

--目标端数据库创建用户并授权(生产环境)
CREATE USER 'ogguser_t'@'10.128.xx.xx' IDENTIFIED BY 'Sjztdb#2023'; 
GRANT ALL PRIVILEGES ON *.* TO 'ogguser_t'@'10.128.xx.xx'; 
FLUSH PRIVILEGES;
ALTER USER 'ogguser_t'@'10.128.xx.xx' IDENTIFIED WITH mysql_native_password BY 'Sjztdb#2023';
flush privileges;

--测试验证登录目标端数据库
dblogin sourcedb apvll@10.128.xx.xx:3306, userid ogguser_t, password Sjztdb#2023

安装OGG

--创建OGG目录
mkdir /data/ogg181_mysql
--解压OGG
unzip -d /data/ogg181_mysql/ ogg181mysql.zip 
--配置别名
alias mggsci='/data/ogg181_mysql/ggsci'
--创建OGG目录
create subdirs

MGR 进程配置

GGSCI (oggser) 2> view param mgr

port 7920
dynamicportlist 7920-7925
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS,MINKEEPDAYS 3
ACCESSRULE, PROG *, IPADDR 10.10.*.*, ALLOW
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

--确认OGG能远程连接到mysql
--测试验证登录源端数据库
dblogin sourcedb ap@10.128.3x.xx:3306, userid ogguser_s, password Sjztdb#2023

GGSCI (oggsend-194-7) 2> dblogin sourcedb ap@10.128.3x.xx:3306, userid ogguser_s, password Sjztdb#2023
Successfully logged into database.

创建OGG登录别名
配置用户凭证
add credentialstore
alter credentialstore add user ogguser_s@10.128.3x.xx:3306/apvll, password Sjztdb#2023 alias s_mysql1  ##源端 
alter credentialstore add user ogguser_t@10.128.3x.xx:3306/apvll, password Sjztdb#2023 alias t_mysql2  ##目标端 
 
测试别名登录
DBLOGIN SOURCEDB apvll@10.128.3x.xx:3306 USERIDALIAS s_mysql1
DBLOGIN SOURCEDB apvll@10.128.3x.xx:3306 USERIDALIAS t_mysql2

配置抽取进程

--添加进程
ADD EXTRACT eap, TRANLOG, BEGIN NOW
ADD EXTTRAIL ./dirdat/eb, EXTRACT eap

--编辑参数 (生产配置)
EDIT PARAMS eap

EXTRACT eap
sourcedb ap@10.128.3x.xx:3306, userid ogguser_s, password Sjztdb#2023
DISCARDFILE ./dirrpt/eap.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 05:30 ON MONDAY
TRANLOGOPTIONS ALTLOGDEST REMOTE
EXTTRAIL ./dirdat/eb
TABLE ap.arrival_;

--删除抽取进程,如果需要
delete EXTRACT eap

配置应用进程

--添加应用进程
--1.目标端添加检查表(生产环境)
dblogin sourcedb ap@10.128.xx.xx:3306, userid ogguser_t, password Sjztdb#2023
ADD CHECKPOINTTABLE ap.ggcheck2


--2.编辑参数(生产环境)
EDIT PARAMS rap

REPLICAT rap
TARGETDB apvll@10.128.xx.xx:3306, userid ogguser_t, password Sjztdb#2023
DISCARDFILE ./dirrpt/rap.dsc, APPEND, MEGABYTES 1024
DISCARDROLLOVER AT 05:30 ON MONDAY
MAP ap.arrival_, TARGET ap.arrival_;


--3.添加应用进程
ADD REPLICAT rap, EXTTRAIL ./dirdat/eb, CHECKPOINTTABLE ap.ggcheck2

--4.删除应用进程
DELETE REPLICAT rap

数据初始化

-- 批量导出dbname数据库中多张表结构
mysqldump -uroot -pAa123456 -d --databases ap --tables arrival_ > db0408.sql

//方式1:通过mysqldump导出导入的方式进行初始化

--从源端导出数据
--导出某个表 (需要加入--master-data 记录导出时候的binlog日志文件和pos位置)
mysqldump -uroot -pAa123456 --master-data --databases apvll --tables apv_common_relation >/tmp/apv_common_relation.sql

mysqldump -uroot -pAa123456 --master-data --databases apvll --tables arrival_area_enter_out apv_result_common arrival_area_hour_info arrival_area_total_info > /tmp/newdata0409.sql

--目标端导入数据

//方式2:
--通过OGG初始化进程进行初始化
--编辑初始化抽取进程参数 
edit param einit1

extract einit1
sourcedb apvll@10.128.35.14:3306, userid ogguser_s, password Sjztdb#2023
TRANLOGOPTIONS ALTLOGDEST REMOTE
rmthost 10.128.255.146, mgrport 7920
rmttask replicat, group rinit1
TABLE apvll.arrival_area_enter_out;


--添加初始化抽取进程 
add extract einit1, sourceistable

--OGG服务器添加初始化应用进程
--编辑初始化应用进程参数 
edit param rinit1

replicat rinit1
TARGETDB apvll@10.128.103.38:3306, userid ogguser_t, password Sjztdb#2023
discardfile ./dirrpt/rinit1.dsc, purge
MAP apvll.arrival_area_enter_out, TARGET apvll.arrival_area_enter_out;

--添加初始化应用进程
add replicat rinit1,specialrun

--删除初始化进程
delete replicat rinit1

启动同步进程


--查看mysqldump导出文件的binlog位置和pos位置

--CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.002414', MASTER_LOG_POS=767854389;

-- 修改抽取进程开始抽取的日志文件和pos位置
ALTER EXTRACT eap,lognum 2414,logpos 767854389
--启动抽取进程
start eap
--启动应用进程 
start rap

相关问题

问题1:启动抽取进程报错


2024-03-21 15:35:06  INFO    OGG-01052  No recovery is required for target file ./dirdat/et000000000, at RBA 0 (file
 not opened).

2024-03-21 15:35:06  INFO    OGG-01478  Output file ./dirdat/et is using format RELEASE 12.3/18.1.

2024-03-21 15:35:06  INFO    OGG-00182  VAM API running in single-threaded mode.

2024-03-21 15:35:06  INFO    OGG-01515  Positioning to begin time 2024 M03 21 15:34:26.
terminate called after throwing an instance of 'std::invalid_argument'
  what():  stol


更换OGG版本为19.1,重新启动抽取进程出现如下提示

2024-03-21 15:45:57  ERROR   OGG-00146  Call to VAMInitialize returned with error status 600: VAM Client Report <CAU
SE OF FAILURE : Invalid argument: stol for log file: mysql-bin.000001�. Y logFileNameLen: 20, CheckSumLength: 0. Log
 file name contains non numeric characters
WHEN FAILED : While reading log event from binary log
WHERE FAILED : MySQLBinLog Reader Module
CONTEXT OF FAILURE : No Information Available!>.

更换版本为21.3版本之后正常启动。

问题2:启动应用进程报错

--问题
Process Abending : 2024-04-09 14:42:02.536013

Oracle GoldenGate Delivery for MySQL process started, group rap discard file opened: 2024-04-09 14:51:53.977658
Current time: 2024-04-09 14:51:54
Discarded record from action ABEND on error 1403

No data found
Aborting transaction on /OSdata/ogg213_mysql/dirdat/ed beginning at seqno 0 rba 2,171.
                         error at seqno 0 rba 2171
Problem replicating apvll.arrival_area_enter_out to ap.arrival_
Record not found
Mapping problem with delete record (target format) SCN:000000000000000002414:000000616156738...
*
id = 0368072643414db9929565eff2aa2364
000000: 30 33 36 38 30 37 32 36 34 33 34 31 34 64 62 39 |0368072643414db9|
000010: 39 32 39 35 36 35 65 66 66 32 61 61 32 33 36 34 |929565eff2aa2364|

*

Process Abending : 2024-04-09 14:51:54.563740



--检查处理  ,源端和目标端都未查询到该记录
mysql> select id from ap.arrival_ where id = '0368072643414db9929565eff2aa2364';
Empty set (0.01 sec)

mysql> select id from ap.arrival_ where id = '0368072643414db9929565eff2aa2364';
Empty set (0.00 sec)


--继续分析队列文件

GGSCI (oggser- DBLOGIN as ogguser_t) 37> info rap

Replicat   rapLast Started 2024-04-09 14:51   Status ABENDED
Checkpoint Lag       00:00:00 (updated 00:26:29 ago)
Log Read Checkpoint  File ./dirdat/ed000000000
                     First Record  RBA 1341
					 
					 
./logdump 

open ./dirdat/ed000000000 

Logdump 3 >pos 1341
----pos + RBA号,直接跳到这个记录上,这里为什么跳到1259呢?因为 info rap命令查询出来的结果告诉我们,1341 是他当前正在处理的事务。


Logdump 4 >sfh  

2024/04/09 14:42:00.877.974 Metadata             Len 84 RBA 1341 
Database Name:  
 3000 5000 0100 0200 0100 0200 4600 0100 0400 0000 | 0.P.........F.......  
 0000 0200 0400 0200 0000 0300 0700 0500 656e 5f55 | ................en_U  
 5304 000f 000d 0041 7369 612f 5368 616e 6768 6169 | S......Asia/Shanghai  
 0500 1400 1000 0000 1112 1122 2211 1112 1111 1111 | ..........."".......  
 1111 1111                                         | ....  
Logdump 5 >N

2024/04/09 14:42:00.877.975 Metadata             Len 616 RBA 1476 
Table Name: ap.arrival_
 3040 6202 0000 0100 0200 0b00 0200 0a00 0100 0600 | 0@b.................  
 0100 0200 0100 0340 4802 0000 0a00 3200 3000 0200 | .......@H.....2.0...  
 6964 4000 6000 0000 6000 0000 6000 0000 0000 0000 | id@.`...`...`.......  
 0000 0000 0000 0000 0000 0000 fd00 0000 0000 0000 | ....................  
 0000 0000 2300 3700 3500 0700 7061 726b 5f69 6440 | ....#.7.5...park_id@  
 0060 0000 0060 0000 0060 0000 0000 0000 0000 0000 | .`...`...`..........  
 0065 0000 0000 0000 00fd 0000 0000 0000 0000 0000 | .e..................  
Logdump 6 >


--分析可能的原因:
是因为没有指定抽取进程开始抽取的pos号,所以抽取进程把之前的操作记录也都抽取了,所以之前的记录都已经没有了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2380081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子电路原理第十六章(负反馈)

1927年8月,年轻的工程师哈罗德布莱克(Harold Black)从纽约斯塔顿岛坐渡轮去上班。为了打发时间,他粗略写下了关于一个新想法的几个方程式。后来又经过反复修改, 布莱克提交了这个创意的专利申请。起初这个全新的创意被认为像“永动机”一样愚蠢可笑,专利申请也遭到拒绝。但…

命令拼接符

Linux多命令顺序执行符号需要记住5个 【&#xff5c;】【||】【 ;】 【&】 【&&】 &#xff0c;在命令执行里面&#xff0c;如果服务器疏忽大意没做限制&#xff0c;黑客通过高命令拼接符&#xff0c;可以输入很多非法的操作。 ailx10 网络安全优秀回答者 互联网…

【通用智能体】Lynx :一款基于终端的纯文本网页浏览器

Lynx &#xff1a;一款基于终端的纯文本网页浏览器 一、Lynx简介二、应用场景及案例场景 1&#xff1a;服务器端网页内容快速查看场景 2&#xff1a;网页内容快速提取场景 3&#xff1a;表单提交与自动化交互场景 4&#xff1a;网络诊断与调试场景 5&#xff1a;辅助工具适配 三…

51单片机的lcd12864驱动程序

#include <reg51.h> #include <intrins.h>#define uchar

GStreamer (三)常⽤插件

常⽤插件 1、Source1.1、filesrc1.2. videotestsrc1.3. v4l2src1.4. rtspsrc和rtspclientsink 2、 Sink2.1. filesink2.2. fakesink2.3. xvimagesink2.4. kmssink2.5. waylandsink2.6. rkximagesink2.7. fpsdisplaysink 3 、视频推流/拉流3.1. 本地推流/拉流3.1.1 USB摄像头3.1…

软件架构风格系列(2):面向对象架构

文章目录 引言一、什么是面向对象架构风格1. 定义与核心概念2. 优点与局限性二、业务建模&#xff1a;用对象映射现实世界&#xff08;一&#xff09;核心实体抽象1. 员工体系2. 菜品体系 &#xff08;二&#xff09;封装&#xff1a;隐藏实现细节 三、继承实战&#xff1a;构建…

go-zero(十八)结合Elasticsearch实现高效数据检索

go-zero结合Elasticsearch实现高效数据检索 1. Elasticsearch简单介绍 Elasticsearch&#xff08;简称 ES&#xff09; 是一个基于 Lucene 库 构建的 分布式、开源、实时搜索与分析引擎&#xff0c;采用 Apache 2.0 协议。它支持水平扩展&#xff0c;能高效处理大规模数据的存…

AM32电调学习解读九:ESC上电启动关闭全流程波形分析

这是第九篇&#xff0c;前面的文章把各个模块的实现都介绍了一轮&#xff0c;本章是从运行的角度结合波形图&#xff0c;把整个流程走一遍。 先看下一运行的配置&#xff0c;我把一些配置关闭了&#xff0c;这样跑起来会好分析一些&#xff0c;不同配置跑起来效果会有差异。使用…

【notes】VScode 使用总结

文章目录 扩展 c/cwindows7 系统下 c/c 自动升级导致的插件无法正常使用 设置 文件格式设置打开文件的默认格式 扩展 c/c windows7 系统下 c/c 自动升级导致的插件无法正常使用 问题 1. c/c扩展的1.25.x版本不再支持windows7 系统&#xff0c;当设置VScode自动升级拓展插件时…

【论文阅读】KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS

KIMI K1.5: SCALING REINFORCEMENT LEARNING WITH LLMS Scaling的解释&#xff1a; 通过系统性的方法扩展强化学习算法的能力&#xff0c;使其能够处理更复杂的问题、更大的状态/动作空间、更长的训练周期或更高效的资源利用 原文摘要&#xff1a; 研究背景与问题定位 传统预训…

Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析

Changelog [25/04/28] 新增Qwen3-0.6B在Ag_news数据集Zero-Shot的效果。新增Qwen3-0.6B线性层分类方法的效果。调整Bert训练参数&#xff08;epoch、eval_steps&#xff09;&#xff0c;以实现更细致的观察&#xff0c;避免严重过拟合的情况。 TODO&#xff1a; 利用Qwen3-0.6…

UWB定位方案在水力发电站人员安全的应用推荐

一、行业应用背景‌ 水力发电站具有‌环境复杂‌&#xff08;金属设备密集、高温高压区域多&#xff09;、‌安全风险高‌&#xff08;人员误入高危区域易引发事故&#xff09;等特点&#xff0c;传统定位技术难以满足精度与可靠性要求。品铂科技基于UWB的高精度定位系统已在多…

无刷直流水泵构成及工作原理详解--【其利天下技术】

无刷直流水泵是相对于有刷直流泵而言的。 一&#xff1a;无刷直流水泵简介 无刷直流水泵即BLDC PUMP&#xff0c;其中“BL”意为“无刷”&#xff0c;DC即直流电机。 无刷直流水泵(BLDC PUMP)以电子换向器取代了机械换向器&#xff0c;所以无刷直流水泵既具有直流电机良好的调…

大数据:新能源汽车宇宙的未来曲率引擎

** 发布日期&#xff1a;2025-05-14** 关键词&#xff1a;大数据、新能源、机器学习、碳中和、CSDN爆款 1. 大数据科普&#xff1a;定义、特征与技术核心 1.1 什么是大数据&#xff1f; 大数据&#xff08;Big Data&#xff09;指规模巨大、类型多样、生成速度快且价值密度低…

【Java ee】关于抓包软件Fiddler Classic的安装与使用

Web Debugging Proxy Tool | Fiddler Classic 安装网站↑ 下载好安装包之后&#xff0c;双击一路next就可以了 一、抓包软件 电脑上安装了抓包软件之后&#xff0c;抓包软件就可以监听你的网卡上通过的数据。 本来是你的客户端通过网卡&#xff0c;把数据发给目标服务器&a…

C++--内存管理

内存管理 1. C/C内存分布 在C语言阶段&#xff0c;常说局部变量存储在栈区&#xff0c;动态内存中的数据存储在堆区&#xff0c;静态变量存储在静态区&#xff08;数据段&#xff09;&#xff0c;常量存储在常量区&#xff08;代码段&#xff09;&#xff0c;其实这里所说的栈…

TC3xx学习笔记-UCB BMHD使用详解(二)

文章目录 前言Confirmation的定义Dual UCB: Confirmation StatesDual UCB: Errored State or ECC Error in the UCB Confirmation CodesECC Error in the UCB ContentDual Password UCB ORIG and COPY Re-programming UCB_BMHDx_ORIG and UCB_BMHDx_COPY (x 0-3)BMHD Protecti…

用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践

本文将介绍如何使用Python构建一个自动化工具&#xff0c;实现从MySQL数据库提取员工数据&#xff0c;并为每位员工生成包含定制化表格的PDF报告。通过该方案&#xff0c;可显著提升数据导出效率&#xff0c;避免手动操作误差&#xff0c;同时支持灵活的格式定制。 需求&#…

实战设计模式之状态模式

概述 作为一种行为设计模式&#xff0c;状态模式允许对象在其内部状态改变时&#xff0c;改变其行为。这种模式通过将状态逻辑从对象中分离出来&#xff0c;并封装到独立的状态类中来实现。每个状态类代表一种特定的状态&#xff0c;拥有自己的一套行为方法。当对象的状态发生变…

什么是着色器 Shader

本人就是图形学结课了&#xff0c;对 OpenGL着色器还有很多疑问嘿嘿 文章目录 为什么要有着色器vshaderfshader 本文围绕 vshader 和 fshader 代码示例讲解。 &#xff08;着色器代码取自本人简单OpenGL项目 https://github.com/DBWGLX/-OpenGL-3D-Lighting-and-Shadow-Modeli…