10.Oracle Golden Date(ogg)的搭建和管理

来源:https://www.cnblogs.com/lottu/archive/2018/08/27/9542681.html
-Advertisement-
Play Games

一. GoldenGate 概述 GoldenGate現在是業內成熟的數據容災與複製產品;GoldenGate是一種基於日誌的結構化數據複製方式,它通過解析源資料庫線上日誌或歸檔日誌獲得數據的增刪改變化(數據量只有日誌的四分之一左右),再將這些變化應用到目標資料庫,實現源資料庫與目標資料庫同步、雙活 ...


一. 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實戰》或者查看官方文檔

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • InnoDB:支持事務處理等不加鎖讀取支持外鍵支持行鎖不支持FULLTEXT類型的索引不保存表的具體行數,掃描表來計算有多少行DELETE 表時,是一行一行的刪除InnoDB 把數據和索引存放在表空間裡面跨平臺可直接拷貝使用InnoDB中必須包含AUTO_INCREMENT類型欄位的索引表格很難被壓 ...
  • 一. 指定路徑 在上一篇里,二進位包解壓後,全部放入在/usr/local/mysql目錄下,在安裝時指定了基礎目錄和數據目錄, --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 。 Linux是建議第三方軟體放在/opt下。官網文 ...
  • Preface Oracle claimed that 11g RAC is supported on Redhat Linux 7 and above version,but there're still some incompatible issues in inplementing 11g G ...
  • Oracle 11g行欄位拼接WMSYS.WM_CONCAT問題Not A LOB 一、問題出現 項目中的某個查詢需要將表中某個欄位不重覆地拼接起來,百度得到該函數 ,以及 函數,前者只能使用逗號' '連接,後者可以定製連接符。 但由於listagg不能直接在參數中使用 去重,因此採用 函數。 SQ ...
  • 開發中肯定會用到Oracle的觸發器,本文進行詳細講解。 這裡實例中用到的主要是Oracle中scott用戶下的emp以及dept表,數據如下 一、觸發器概念 1、概念: 觸發器的本質是一個存儲過程,顧名思義發生特定事件時Oracle會執行觸發器中的代碼。 細分它的組成可以分為3個部分:第一部分在什 ...
  • 面向程式員的資料庫訪問性能優化法則 特別說明: 1、 本文只是面對資料庫應用開發的程式員,不適合專業DBA,DBA在資料庫性能優化方面需要瞭解更多的知識; 2、 本文許多示例及概念是基於Oracle資料庫描述,對於其它關係型資料庫也可以參考,但許多觀點不適合於KV資料庫或記憶體資料庫或者是基於SSD技 ...
  • RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS390 org.hibernate.dialect.DB2390Dialect PostgreSQL ...
  • 最近在學習怎麼安裝Centos,在Centos6.9版本安裝Oracle資料庫。參考了網路上很多文章,終於可以不報錯的完成安裝了,在這裡記錄一下 一、需要用到的安裝文件 Centos6.9 ps:光碟1用來安裝,光碟2用來安裝一些依賴包。 鏈接:https://pan.baidu.com/s/1hg ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...