一、OGG使用背景介绍
在金融、电商等关键业务领域,数据的准确性与实时性是保障业务稳定运行和决策精准的核心要素。
哪怕是瞬间的数据延迟或错误,都可能在这些领域引发严重的连锁反应,造成巨大的经济损失和信誉损害。
因此,确保数据库之间的高效同步成为了技术架构中的关键环节。
Oracle GoldenGate(OGG)工具,作为数据同步与集成领域的佼佼者,能够为企业提供强大的数据容灾和迁移解决方案。
借助OGG,不仅可以实现数据的实时复制,保障业务连续性,还能在系统升级、架构调整时,平稳地完成数据迁移工作,
最大程度降低对业务的影响。二、OGG原理它是基于日志捕获技术实现数据实时同步,属于逻辑同步。OGG同步过程大致为源端OGG负责抽取源端数据库变化数据,并将变化数据投递至目标端OGG,目标端OGG负责解析并持久化到目标数据库,OGG进程不多,只有5个进程。如下:
1、各进程详细说明:1)Manager进程不管是源端还是目标端必须并且只能有一个Manager进程,可以启动、关闭、监控其他进程的健康状态,报告错误事件、分配数据存储空间,发布阀值报告等。2)Extract 进程运行在数据库源端,负责从源端数据表或日志中捕获数据,然后捕获到的将写到本地trail文件。 想要复制的对象数据发生改变时,Extract进程 就会进行捕捉,当事务提交时,所有和该事务相关的日志记录被以事务为单元顺序的记录到trai文件中。Extract进程利用其内在的checkpoint机制,周期性的记录其读写的位置,实现断点同步。3)Pump进程(可选)运行在数据库源端 ,其作用是将源端产生的本地trail文件,把trai以数据块的形式通过TCP/IP 协议发送到目标。但是如果如果不使用trail文件,那么extract进程在抽取完数据以后,直接投递到目标端,生成远程trail文件,那么这时候,Pump进程就可以不用配置。4)Replicat进程运行在数据库目标端,负责读取源端传送到目标端的trail文件中的内容,并将其解析为DML或 DDL语句,然后应用到目标数据库中。5)Server Collector进程运行于目标端,作用就是把Extract/Pump进程投递过来的数据块重新组装成Trail文件。运行期间无需任何配置。是一个完全自动的进程。
三、环境准备
(一)准备环境
| 节点 | 操作系统版本 | 数据库版本 | OGG版本 | IP地址 |
|---|---|---|---|---|
| 源端数据库 | Rocky-9 | mysql 8.0 | 12.2.0.2.0 | 192.168.83.100 |
| 目的端数据库 | Rocky-9 | mysql 8.0 | 12.2.0.2.0 | 192.168.83.101 |
(二)下载ogg安装包
官网地址: https://edelivery.oracle.com/
(三)部署OGG
1、源端
[root@mysql100 ~]# mkdir -p /oggmysql 解压ogg的包 [root@mysql100 ~]# tar -xvf ggs_Linux_x64_MySQL_64bit.tar
初始化ogg
[root@mysql100 ~]# ./ggsci GGSCI (mysql100) 1> edit params ./GLOBALS MGRSERVNAME GGMGR GGSCI (mysql100) 2> create subdirs
源端MySQL配置 创建数据库用户ogg,该用户用来同步数据:
mysql> create user ogg@'%' identified by '123456'; mysql> grant all privileges on *.* to ogg@'%'; mysql>ALTER USER 'ogg'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; mysql>FLUSH PRIVILEGES;
创建测试数据
-- 创建 test 数据库
CREATE DATABASE IF NOT EXISTS test;
USE test;
-- 创建表1:示例表,包含整数、字符串、日期等字段
CREATE TABLE test1 (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
age INT,
create_date DATE
);
-- 插入数据到test1张表
INSERT INTO test1(name, age, create_date)
VALUES ('name1', 24, CURDATE());
INSERT INTO test1(name, age, create_date)
VALUES ('name2', 25, CURDATE());
INSERT INTO test1(name, age, create_date)
VALUES ('name3', 26, CURDATE());
源端配置管理进程mgr
GGSCI (mysql100) 4> edit param mgr #新增以下内容: #指定端口号 port 7809 #绑定可用端口列表 dynamicportlist 7840-7939 #定时清理trail文件 purgeoldextracts /oggmysql/dirdat/*,usecheckpoints, minkeepdays 1
启动管理进程mgr
GGSCI (mysql100) 5> start mgr GGSCI (mysql100) 6> info all
配置抽取进程Extract
GGSCI (mysql100) 6> edit param exta #定义抽取进程名称 extract exta #指定OGG连接数据库的地址、账户与密码 sourcedb test@192.168.83.100:3306 userid ogg password 123456 #指定写入到本地的哪个队列 exttrail /oggmysql/dirdat/ea #定义discardfile文件位置,如果处理中有记录出错会写入到此文件中 discardfile /oggmysql/dirrpt/exta.dsc,append #指定在解析数据库日志时所需要的特殊参数 TranLogOptions AltLogDest /data/mysql/mysql-bin.index #定义需复制的表,后面需以;结尾 table test.*; GGSCI (mysql100) 8> add extract exta,tranlog,begin now GGSCI (mysql100) 9> add exttrail /oggmysql/dirdat/ea,extract exta
配置投递进程pmysql
GGSCI (mysql100) 10> edit param pmysql #定义投递进程名 extract pmysql passthru #源端数据库地址、用户名 sourcedb test@192.168.83.100:3306 userid ogg password 123456 #目标端地址 rmthost 192.168.83.101,mgrport 7809,compress # 指定写入文件 rmttrail /oggmysql/dirdat/rl dynamicresolution numfiles 3000 #投递的表 table test.*; GGSCI (mysql100) 11> add extract pmysql,exttrailsource /oggmysql/dirdat/rl GGSCI (mysql100) 12> add rmttrail /oggmysql/dirdat/rl,extract pmysql
创建表定义文件,传送到目标端
GGSCI (mysql100) 13> edit param defgen defsfile ./dirdef/test.def sourcedb test@192.168.83.100:3306 userid ogg, password 123456 table test.*;
配置数据结构表定义文件
[root@mysql100 mysqlogg]# ./defgen paramfile ./dirprm/defgen.prm
生成表定义文件,生成成功后复制一份到目标端OGG的dirdef目录下.
[root@mysql100 mysqlogg]# scp /mysqlogg/dirdef/test.def 192.168.83.101:/mysqlogg/dirdef/
2、目标端配置
mysql的配置
mysql> create user ogg@'%' identified by '123456'; mysql> grant all privileges on *.* to ogg@'%'; mysql> flush privileges; mysql> ALTER USER 'ogg'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; Query OK, 0 rows affected (0.20 sec) mysql> FLUSH PRIVILEGES;
目标端安装ogg软件
[root@mysql101 ~]# mkdir -p /mysqlogg [root@mysql101 ~]# cd /mysqlogg/ [root@mysql101 mysqlogg]# tar -xvf ggs_Linux_x64_MySQL_64bit.tar [root@mysql101 mysqlogg]# ls
配置初始化ogg
[root@mysql101 mysqlogg]# ggsci GGSCI (mysql01) 1> create subdirs GGSCI (mysql01) 2> edit param mgr port 7809 dynamicportlist 7840-7939 port 7809 dynamicportlist 7840-7939 purgeoldextracts /mysqlogg/dirdat/*,usecheckpoints, minkeepdays 1 ~ GGSCI (mysql01) 3> start mgr GGSCI (mysql01) 4> info all
在目标端新建库。
mysql> create database test; mysql> show databases; mysql> CREATE TABLE `test1` ( -> `id` int NOT NULL AUTO_INCREMENT, -> `name` varchar(255) DEFAULT NULL, -> `age` int DEFAULT NULL, -> `create_date` date DEFAULT NULL, -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB AUTO_INCREMENT=262145 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
配置检查表。
GGSCI (mysql101) 5> dblogin sourcedb test@192.168.83.101:3306 userid ogg password 123456 GGSCI (mysql101 DBLOGIN as ogg) 6> add checkpointtable test.checkpoint
配置应用进程Replicat
GGSCI (mysql101 DBLOGIN as ogg) 7> edit params repa #定义应用进程名称 replicat repa #配置目标端数据库地址、用户名和密码 targetdb test@192.168.83.101:3306 userid ogg password 123456 handlecollisions #假定两端数据结构不一致,使用此参数指定源端的数据结构定义文件,该文件需要由GlodenGate工具产生 sourcedefs /mysqlogg/dirdef/test.def #定义discardfile文件位置,如果处理中有记录出错会写入到此文件中,建议参数值1024m discardfile /mysqlogg/dirrpt/repa.dsc,purge #用于指定源端与目标端表的映射关系 map test.*, target test.*; GGSCI (mysql101 DBLOGIN as ogg) 8> add replicat repa,exttrail /mysqlogg/dirdat/rl,checkpointtable test.checkpoint
四、开启数据同步
GGSCI (mysql100) 18> start exta GGSCI (mysql100) 19> start pmysql
目标端
GGSCI (mysql101 DBLOGIN as ogg) 9> start repa GGSCI (mysql101 DBLOGIN as ogg) 10> info all GGSCI (mysql101 DBLOGIN as ogg) 10> info *
查看日志:
[root@mysql101 mysqlogg]# tailf /mysqlogg/ggserr.log
测试数据是否同步 : 新增数据: 在源端新增数据:
INSERT INTO test1(name, age, create_date)
VALUES ('name4', 27, CURDATE());
我们观察目的端的表数据是否同步,到这里基本就完成数据同步了。
编辑推荐:
- 第48期 OGG 实现 MySQL 数据库数据实时迁移03-03
- Weblogic性能调优最佳实践文档03-03
- 医疗HIS数据库双节点故障排查实战案例03-03
- 内测分发是什么?03-03
- PyTorch实战:手把手搭建CV模型全流程03-03
- Oracle从HPUX迁移至Linux的经验教训03-03
- 第50期 OGG在现有进程中新增一个同步表的流程03-03
- 在发布应用程序内测时如何选择合适的分发上架方式?03-03
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce


