Oracle Ogg 的定位及产品战略
OGG在oracle公司的产品线是Fusion middleware ,也就是中间件产品线下的产品。
在oracle 收购golden gate 公司后,与原有的Data Guard 和ODI互为补充,共同为企业提供跨平台实时数据同步的解决方案。
Oracle 对产品Streams将不再做任何重大的改进,而是把Stream优秀的特性集成到Stream上,另一项产品DATA GUARD LOGICAL STANDBY 也是同样的命运,oracle ogg成为数据同步中间件的主力产品被整合。
Golden Gate 支持的平台及数据库
Oracle 数据库支持几乎市面上所有主流的数据库,官方文档将适用分为做了一下分类
Oracle Databases
Oracle Autonomous Data Warehouse
Oracle Autonomous JSON Database
Oracle Autonomous Transaction Processing
Oracle Database Appliance
Oracle Database Cloud Service
Oracle Database Enterprise Edition
Oracle Database Standard Edition
Oracle Exadata
Oracle Exadata Cloud at Customer
Oracle Exadata Cloud Service
Streaming and Events
Amazon Kinesis Data Streams
Amazon MSK
Apache Kafka
Azure Event Hub
Confluent Kafka Connect
Confluent Platform (including managed Confluent on AWS/Azure)
Google Pub/Sub (Kafka compatibility mode)
Java Messaging Service (including IBM MQ, Rabbit MQ, others)
Oracle Cloud Infrastructure Streaming Service
Solace Event Broker
Big Data Platforms
Amazon S3 Object Storage
Apache Druid
Apache HBase
Apache HDFS
Apache Hive
Apache Ignite
Azure Data Lake (BLOB) Storage
Cloudera Data Platform
Cloudera Hadoop
Flat Files, local file systems
Gridgain In-Memory Cache
Hortonworks Data Platform
MapR Hadoop
Oracle Cloud Infrastructure Object Storage
Non-Oracle Databases
FairCom DB
Greenplum
HPE Enscribe
HPE NonStop SQL/MP
HPE Nonstop SQL/MX
IBM Db2 for i
IBM DB2 for z/OS
IBM Db2 LUW
IBM Informix
IBM Netezza Performance Server
MariaDB
Microsoft SQL Server
MySQL Enterprise Edition
PostgreSQL and derivatives
SAP HANA
Snowflake
Sybase Adaptive Server Enterprise
Teradata
Vertica
Cloud Stores
Amazon Aurora MySQL
Amazon Aurora PostgreSQL
Amazon RDS for MariaDB
Amazon RDS for MySQL
Amazon RDS for Oracle
Amazon RDS for PostgreSQL
Amazon RDS for SQL Server
Amazon Redshift
Amazon S3 Object Storage
Azure Data Lake Gen2
Azure Database for MySQL
Azure Database for PostgreSQL
Azure SQL Database
Azure Synapse Analytics
Google BigQuery
Oracle Cloud Infrastructure Object Storage
Oracle Cloud Object Storage (Gen1)
Oracle MySQL Database Service (including Heatwave)
Snowflake
Teradata on AWS
Vertica
Open Source
Apache Cassandra
Apache Druid
Apache HBase
Apache HDFS
Apache Hive
Apache Ignite
Elasticsearch
MariaDB Server
MySQL Community Edition
PostgreSQL
Oracle Golden Gate 的定位
- 零宕机时间数据库升级和迁移
- 满足用户亚秒级实时数据的需求
- 可持续的数据高可用和实时商务功能
- 异构平台及跨操作系统实时数据同步
- 对原系统和目标系统是非侵入式的
Oracle 技术架构
和传统的逻辑复制一样,ogg的实现原理是通过抽取源端的redo log
或archive log
,然后通过TCP/IP 投递到目标端。最后解析还原到目标端,使目标端实现数据同步。
OGG 的主要进程及组成如下:
Manger 进程
-
mgr 是ogg的控制进程,进程运行在
源端
和目标端
上,其主要作用如下:- 启动,监控,重启ogg的其他进程
- 报告错误事件
- 分配数据存储空间
- 发布阈值报告
-
每个源端/目标端有且只能有一个Manger进程。其运行状态有两种,
RUNNING
,STIOPPED
Extract 进程
-
extract 进程部署在源端,负责从源端数据表或日志中捕获数据。
Extract进程的作用如下:- 初始数据装载阶段:Extract 进程直接从源端的数据表中抽取数据
- 同步变化捕获阶段:Extract 进程负责捕获源端数据的变化(DML和DDL)
-
Extract 进程利用内在的checkpoint 机制,周期性的检查并记录其读写的位置,通常是写入本地的trail文件。
此机制是为了保证如果Extract进程终止或操作系统宕机,重启Extract进程后,Golden Gate能够恢复到以前的状态。
从上一个断点处继续执行,而不会有任何数据损失。 -
Extract进程的状态包括
- STOPPED
停止
- STARTING
启动中
- RUNNING
运行中
- ABENDED
异常终止
- STOPPED
Pump 进程
- Pump 进程运行在源端。
- pump 进程的作用是,如果使用了trail文件,那么pump进程就会将trail文件以数据库的形式,通过TCP/IP协议发送到目标端。
Pump进程本质是Extract进程的一种特殊形式。如果不适用trail文件,那么局是Extract进程抽取完数据后,直接投递到目标端。 - 与Pump进程对应的,是Collector进程 ,这个进程不需要配置,运行在目标端,其主要作用就是接收Pump进程投递过来的数据块,再将他们重新组合成Trail文件。人们称之为远程trail文件。
Trail 文件
-
为了更高效,更安全的将数据从源端投递到目标端,ogg引入了trail文件的概念。
-
Trail文件存在的目的是为了防止单点故障,将事务信息持久化,并且使用checkpoint 机制来记录其读写位置,如果故障发生,数据库可以根据checkpoint记录的位置来重传。
-
值得一提的是,trail文件并不是必须的,人们可以在配置Extract信息的时候,通过TCP/IP协议,直接将日志信息投递到目标端,但通常不建议这样做,因为有宕机或网络故障,数据可能丢失。
Replicate 进程
- Replicate 进程,通常也叫做应用进程,运行在
目标端
- 负责读取目标端Trail文件的内容,将其解析为DML,DDL语句,然后在目标端数据库进行执行。
- 和Extract进程相似,Replicate进程也有内部的checkpoint机制,保证进程重启后,可以从上次中断的地方开始恢复,而无数据损失的风险。
GGSCI
- ggsci 是
GoldenGate SoftWare Command Interface
的缩写,提供了丰富的ogg操作命令,如创建,修改,监控ogg进程等。 - 如果需要GUI方式的图形管理界面,需要购买GoldenGate Director.
OGG数据流示意
Data -Extract-> local Trail file -Pump-> DataBlock SRC
-TCP/IP->
TAR
DataBlock -Collector-> Trail file -Replicate->Target DataBase
Golden Gate的复制模式
UNDIRECTIONAL
Reporting Instance
一对一
- 典型应用就是数据容灾,通常远端数据库为生产端,目标端数据库为容灾端。
- 另外一种场景就是把源端的OLTP系统产生的交易日志发送到目标端,使用BI数据仓库或者OLAP。
BI-DIRECTIONAL
instant Failover 'Active-Active'
双活
PEER-TO-PEER
Load Balancing,High Availability
均衡负载,高可用
BROADCAST
Data Distribution
广播,数据分发
CONSOLIDAION
Data Warehouse.Mart/Store
数据仓库
CASCADING
Scalability,DataBase Tiering
可伸缩性,数据库分层,冷热数据分离