GoldenGate教程FG016-多租户架构与配置
本文档详细介绍Oracle GoldenGate的多租户架构与配置,风哥教程参考GoldenGate官方文档多租户相关内容,适合数据库管理员和技术人员学习和参考。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 多租户概念
多租户架构是Oracle Database 12c引入的一种数据库架构,允许多个可插拔数据库(PDB)共享一个容器数据库(CDB)的资源。在多租户架构中,CDB是一个包含多个PDB的容器,每个PDB是一个独立的数据库环境。
- 容器数据库(CDB):包含多个PDB的容器,提供共享的系统资源和元数据
- 可插拔数据库(PDB):独立的数据库环境,可以单独管理和使用
- 根容器(ROOT):CDB的根容器,包含系统元数据和共享组件
- 种子PDB(PDB$SEED):创建新PDB的模板
1.2 多租户架构
多租户架构的结构如下:
## 1. 容器数据库(CDB)
– 包含多个PDB
– 提供共享的系统资源
– 管理PDB的生命周期
– 存储系统元数据
## 2. 可插拔数据库(PDB)
– 独立的数据库环境
– 有自己的用户、表空间和数据
– 可以单独启动和关闭
– 可以在CDB之间移动
## 3. 根容器(ROOT)
– CDB的根容器
– 包含系统用户和系统表
– 存储CDB级别的元数据
– 管理PDB的创建和删除
## 4. 种子PDB(PDB$SEED)
– 创建新PDB的模板
– 只读的PDB
– 包含默认的系统表和视图
1.3 多租户优势
多租户架构的优势包括:
- 资源共享:多个PDB共享CDB的系统资源,减少资源消耗
- 简化管理:集中管理多个数据库,减少管理开销
- 快速部署:通过克隆PDB快速部署新的数据库环境
- 隔离性:每个PDB是独立的,互不影响
- 灵活性:可以根据需要调整PDB的资源分配
学习交流加群风哥微信: itpux-com
Part02-生产环境规划与建议
2.1 多租户规划
制定GoldenGate多租户规划时,需要考虑以下因素:
## 1. 架构设计
– 确定CDB和PDB的数量
– 规划PDB的命名和用途
– 设计PDB的资源分配
## 2. 存储规划
– 规划CDB和PDB的存储位置
– 配置适当的表空间
– 考虑PDB的备份策略
## 3. 网络规划
– 配置PDB的网络访问
– 规划GoldenGate的网络连接
– 考虑网络安全
## 4. 资源规划
– 计算所需的CPU和内存资源
– 规划存储容量
– 考虑峰值负载
## 5. 管理规划
– 制定PDB的管理策略
– 规划GoldenGate的监控和维护
– 考虑故障处理和恢复
2.2 多租户考虑因素
在配置GoldenGate多租户架构时,需要考虑以下因素:
- 权限管理:确保GoldenGate用户有适当的权限访问CDB和PDB
- 性能影响:考虑多租户对GoldenGate性能的影响
- 数据隔离:确保不同PDB的数据同步互不影响
- 配置复杂性:多租户配置比传统配置更复杂
- 版本兼容性:确保GoldenGate版本支持多租户架构
2.3 多租户建议
GoldenGate多租户架构的建议:
## 1. 架构建议
– 使用最新版本的GoldenGate,确保支持多租户特性
– 为每个PDB配置独立的Extract和Replicat进程
– 考虑使用集成模式(Integrated Mode)提高性能
## 2. 配置建议
– 在CDB级别创建GoldenGate用户
– 为每个PDB授予必要的权限
– 配置适当的 supplemental logging
## 3. 监控建议
– 监控每个PDB的同步状态
– 监控GoldenGate进程的性能
– 定期检查多租户环境的健康状态
## 4. 维护建议
– 定期备份CDB和PDB
– 定期更新GoldenGate版本
– 定期优化多租户配置
## 5. 故障处理建议
– 制定多租户环境的故障处理流程
– 准备PDB级别的应急方案
– 定期进行故障演练
from GoldenGate视频:www.itpux.com
Part03-生产环境项目实施方案
3.1 CDB配置
CDB配置是多租户架构的基础。以下是具体的实施方案:
## 1. 创建CDB
### 1.1 使用DBCA创建CDB
$ dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname fgedudb \
-sid fgedudb \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName fgedupdb \
-pdbAdminPassword fgedu123 \
-sysPassword fgedu123 \
-systemPassword fgedu123 \
-datafileDestination /GoldenGate/fgdata \
-storageType ASM \
-asmSysPassword fgedu123 \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-listenPort 1521 \
-emConfiguration NONE
### 1.2 手动创建CDB
SQL> CREATE DATABASE fgedudb \
USER SYS IDENTIFIED BY fgedu123 \
USER SYSTEM IDENTIFIED BY fgedu123 \
EXTENT MANAGEMENT LOCAL \
DEFAULT TABLESPACE users \
DEFAULT TEMPORARY TABLESPACE temp \
UNDO TABLESPACE undotbs1 \
ENABLE PLUGGABLE DATABASE \
SEED \
SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED \
SYSAUX DATAFILES SIZE 100M \
USER_DATA TABLESPACE users DATAFILES SIZE 100M AUTOEXTEND ON MAXSIZE UNLIMITED;
## 2. 配置CDB参数
### 2.1 启用归档模式
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
### 2.2 启用强制日志
SQL> ALTER DATABASE FORCE LOGGING;
### 2.3 配置 supplemental logging
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
## 3. 创建GoldenGate用户
### 3.1 在CDB级别创建用户
SQL> CREATE USER c##ggate IDENTIFIED BY ggate123 CONTAINER=ALL;
SQL> GRANT CREATE SESSION, ALTER SESSION TO c##ggate CONTAINER=ALL;
SQL> GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO c##ggate CONTAINER=ALL;
SQL> GRANT FLASHBACK ANY TABLE TO c##ggate CONTAINER=ALL;
SQL> GRANT EXECUTE ON DBMS_FLASHBACK TO c##ggate CONTAINER=ALL;
SQL> GRANT EXECUTE ON DBMS_LOGMNR TO c##ggate CONTAINER=ALL;
3.2 PDB配置
PDB配置是多租户架构的重要组成部分。以下是具体的实施方案:
## 1. 创建PDB
### 1.1 从种子PDB创建
SQL> CREATE PLUGGABLE DATABASE fgedupdb1 \
ADMIN USER pdbadmin IDENTIFIED BY pdbadmin123 \
FILE_NAME_CONVERT=(‘/GoldenGate/fgdata/fgedudb/pdbseed/’,’/GoldenGate/fgdata/fgedudb/fgedupdb1/’);
### 1.2 克隆现有PDB
SQL> CREATE PLUGGABLE DATABASE fgedupdb2 FROM fgedupdb1 \
FILE_NAME_CONVERT=(‘/GoldenGate/fgdata/fgedudb/fgedupdb1/’,’/GoldenGate/fgdata/fgedudb/fgedupdb2/’);
## 2. 启动和关闭PDB
### 2.1 启动PDB
SQL> ALTER PLUGGABLE DATABASE fgedupdb1 OPEN;
### 2.2 关闭PDB
SQL> ALTER PLUGGABLE DATABASE fgedupdb1 CLOSE;
## 3. 配置PDB参数
### 3.1 连接到PDB
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
### 3.2 启用 supplemental logging
SQL> ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;
### 3.3 创建表空间
SQL> CREATE TABLESPACE fgedutbs DATAFILE ‘/GoldenGate/fgdata/fgedudb/fgedupdb1/fgedutbs01.dbf’ SIZE 100M AUTOEXTEND ON;
### 3.4 创建用户
SQL> CREATE USER fgedu IDENTIFIED BY fgedu123 DEFAULT TABLESPACE fgedutbs;
SQL> GRANT CREATE SESSION, CREATE TABLE TO fgedu;
### 3.5 创建测试表
SQL> CREATE TABLE fgedu.emp (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
salary NUMBER
);
SQL> INSERT INTO fgedu.emp VALUES (1, ‘Alice’, 5000);
SQL> INSERT INTO fgedu.emp VALUES (2, ‘Bob’, 6000);
SQL> COMMIT;
3.3 GoldenGate配置
GoldenGate多租户配置是实现多租户数据同步的关键。以下是具体的实施方案:
## 1. 配置Manager进程
### 1.1 编辑Manager参数文件
GGSCI> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /GoldenGate/fgdata/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
### 1.2 启动Manager进程
GGSCI> start mgr
## 2. 配置Extract进程
### 2.1 编辑Extract参数文件(针对特定PDB)
GGSCI> edit param EXT_PDB1
EXTRACT EXT_PDB1
USERID c##ggate@fgedudb/fgedupdb1, PASSWORD ggate123
EXTTRAIL /GoldenGate/fgdata/dirdat/p1
TABLE fgedu.*;
### 2.2 添加Extract进程
GGSCI> add extract EXT_PDB1, sourceistable
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/p1, extract EXT_PDB1
### 2.3 启动Extract进程
GGSCI> start EXT_PDB1
## 3. 配置Data Pump进程
### 3.1 编辑Data Pump参数文件
GGSCI> edit param DP_PDB1
EXTRACT DP_PDB1
PASSTHRU
RMTHOST fgedu02, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/r1
TABLE fgedu.*;
### 3.2 添加Data Pump进程
GGSCI> add extract DP_PDB1, exttrailsource /GoldenGate/fgdata/dirdat/p1
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/r1, extract DP_PDB1
### 3.3 启动Data Pump进程
GGSCI> start DP_PDB1
## 4. 配置Replicat进程
### 4.1 编辑Replicat参数文件
GGSCI> edit param REP_PDB1
REPLICAT REP_PDB1
USERID c##ggate@fgedudb/fgedupdb1, PASSWORD ggate123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
### 4.2 添加Replicat进程
GGSCI> add replicat REP_PDB1, exttrail /GoldenGate/fgdata/dirdat/r1, checkpointtable fgedu.gg_checkpoint
### 4.3 启动Replicat进程
GGSCI> start REP_PDB1
Part04-生产案例与实战讲解
4.1 CDB与PDB配置案例
以下是CDB与PDB配置的实战案例:
## 环境信息
操作系统:Oracle Linux 8.5
Oracle Database:19c
GoldenGate版本:21.3.0.0.0
## 配置步骤
### 1. 创建CDB
$ dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname fgedudb \
-sid fgedudb \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName fgedupdb \
-pdbAdminPassword fgedu123 \
-sysPassword fgedu123 \
-systemPassword fgedu123 \
-datafileDestination /GoldenGate/fgdata \
-storageType FS \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-listenPort 1521 \
-emConfiguration NONE
### 2. 配置CDB
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ALTER DATABASE FORCE LOGGING;
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
### 3. 创建GoldenGate用户
SQL> CREATE USER c##ggate IDENTIFIED BY ggate123 CONTAINER=ALL;
SQL> GRANT CREATE SESSION, ALTER SESSION TO c##ggate CONTAINER=ALL;
SQL> GRANT SELECT ANY DICTIONARY, SELECT ANY TABLE TO c##ggate CONTAINER=ALL;
SQL> GRANT FLASHBACK ANY TABLE TO c##ggate CONTAINER=ALL;
SQL> GRANT EXECUTE ON DBMS_FLASHBACK TO c##ggate CONTAINER=ALL;
SQL> GRANT EXECUTE ON DBMS_LOGMNR TO c##ggate CONTAINER=ALL;
### 4. 创建PDB
SQL> CREATE PLUGGABLE DATABASE fgedupdb1 \
ADMIN USER pdbadmin IDENTIFIED BY pdbadmin123 \
FILE_NAME_CONVERT=(‘/GoldenGate/fgdata/fgedudb/pdbseed/’,’/GoldenGate/fgdata/fgedudb/fgedupdb1/’);
### 5. 配置PDB
SQL> ALTER PLUGGABLE DATABASE fgedupdb1 OPEN;
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
SQL> CREATE TABLESPACE fgedutbs DATAFILE ‘/GoldenGate/fgdata/fgedudb/fgedupdb1/fgedutbs01.dbf’ SIZE 100M AUTOEXTEND ON;
SQL> CREATE USER fgedu IDENTIFIED BY fgedu123 DEFAULT TABLESPACE fgedutbs;
SQL> GRANT CREATE SESSION, CREATE TABLE TO fgedu;
SQL> CREATE TABLE fgedu.emp (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
salary NUMBER
);
SQL> INSERT INTO fgedu.emp VALUES (1, ‘Alice’, 5000);
SQL> INSERT INTO fgedu.emp VALUES (2, ‘Bob’, 6000);
SQL> COMMIT;
### 6. 验证配置
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
——————————————————————————– ———-
PDB$SEED READ ONLY
FGEDUPDB READ WRITE
FGEDUPDB1 READ WRITE
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
SQL> SELECT * FROM fgedu.emp;
ID NAME SALARY
———- ——————————————————————————– ———-
1 Alice 5000
2 Bob 6000
### 7. 配置结果
– CDB已创建并配置
– PDB已创建并配置
– GoldenGate用户已创建
– 测试表已创建并插入数据
4.2 GoldenGate多租户配置案例
以下是GoldenGate多租户配置的实战案例:
## 环境信息
源端:fgedu01 (Oracle Linux 8.5, Oracle 19c CDB)
目标端:fgedu02 (Oracle Linux 8.5, Oracle 19c CDB)
GoldenGate版本:21.3.0.0.0
## 配置步骤
### 1. 配置源端Manager进程
GGSCI> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART EXTRACT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /GoldenGate/fgdata/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
GGSCI> start mgr
### 2. 配置源端Extract进程
GGSCI> edit param EXT_PDB1
EXTRACT EXT_PDB1
USERID c##ggate@fgedudb/fgedupdb1, PASSWORD ggate123
EXTTRAIL /GoldenGate/fgdata/dirdat/p1
TABLE fgedu.*;
GGSCI> add extract EXT_PDB1, sourceistable
GGSCI> add exttrail /GoldenGate/fgdata/dirdat/p1, extract EXT_PDB1
GGSCI> start EXT_PDB1
### 3. 配置源端Data Pump进程
GGSCI> edit param DP_PDB1
EXTRACT DP_PDB1
PASSTHRU
RMTHOST fgedu02, MGRPORT 7809
RMTTRAIL /GoldenGate/fgdata/dirdat/r1
TABLE fgedu.*;
GGSCI> add extract DP_PDB1, exttrailsource /GoldenGate/fgdata/dirdat/p1
GGSCI> add rmttrail /GoldenGate/fgdata/dirdat/r1, extract DP_PDB1
GGSCI> start DP_PDB1
### 4. 配置目标端Manager进程
GGSCI> edit param mgr
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART REPLICAT *
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /GoldenGate/fgdata/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7
GGSCI> start mgr
### 5. 配置目标端Replicat进程
GGSCI> edit param REP_PDB1
REPLICAT REP_PDB1
USERID c##ggate@fgedudb/fgedupdb1, PASSWORD ggate123
ASSUMETARGETDEFS
MAP fgedu.*, TARGET fgedu.*;
GGSCI> add replicat REP_PDB1, exttrail /GoldenGate/fgdata/dirdat/r1, checkpointtable fgedu.gg_checkpoint
GGSCI> start REP_PDB1
### 6. 验证配置
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT_PDB1 00:00:00 00:00:05
EXTRACT RUNNING DP_PDB1 00:00:00 00:00:03
REPLICAT RUNNING REP_PDB1 00:00:00 00:00:02
### 7. 配置结果
– 源端Manager进程已配置并启动
– 源端Extract进程已配置并启动
– 源端Data Pump进程已配置并启动
– 目标端Manager进程已配置并启动
– 目标端Replicat进程已配置并启动
4.3 多租户数据同步案例
以下是多租户数据同步的实战案例:
## 环境信息
源端PDB:fgedupdb1
目标端PDB:fgedupdb1
GoldenGate版本:21.3.0.0.0
## 同步步骤
### 1. 在源端插入数据
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
SQL> INSERT INTO fgedu.emp VALUES (3, ‘Charlie’, 7000);
SQL> INSERT INTO fgedu.emp VALUES (4, ‘David’, 8000);
SQL> COMMIT;
### 2. 检查源端Extract进程
GGSCI> info EXT_PDB1
EXTRACT RUNNING EXT_PDB1 00:00:00 00:00:05
GGSCI> stats EXT_PDB1
Start of Statistics at 2026-04-10 10:00:00.
Output to /GoldenGate/fgdata/dirdat/p1:
Extracting from FGEDU.EMP:
*** Current statistics since 2026-04-10 09:00:00 ***
Total inserts 4.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 4.00
### 3. 检查源端Data Pump进程
GGSCI> info DP_PDB1
EXTRACT RUNNING DP_PDB1 00:00:00 00:00:03
GGSCI> stats DP_PDB1
Start of Statistics at 2026-04-10 10:00:00.
Output to /GoldenGate/fgdata/dirdat/r1:
Extracting from FGEDU.EMP:
*** Current statistics since 2026-04-10 09:00:00 ***
Total inserts 4.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 4.00
### 4. 检查目标端Replicat进程
GGSCI> info REP_PDB1
REPLICAT RUNNING REP_PDB1 00:00:00 00:00:02
GGSCI> stats REP_PDB1
Start of Statistics at 2026-04-10 10:00:00.
Replicating from FGEDU.EMP to FGEDU.EMP:
*** Current statistics since 2026-04-10 09:00:00 ***
Total inserts 4.00
Total updates 0.00
Total deletes 0.00
Total discards 0.00
Total operations 4.00
### 5. 验证目标端数据
SQL> ALTER SESSION SET CONTAINER=fgedupdb1;
SQL> SELECT * FROM fgedu.emp;
ID NAME SALARY
———- ——————————————————————————– ———-
1 Alice 5000
2 Bob 6000
3 Charlie 7000
4 David 8000
### 6. 同步结果
– 源端插入的4条记录已成功同步到目标端
– 所有GoldenGate进程运行正常
– 数据同步延迟为0
Part05-风哥经验总结与分享
5.1 最佳实践
根据实际经验,总结以下最佳实践:
- 使用最新版本:使用支持多租户特性的最新GoldenGate版本
- 合理规划:根据业务需求合理规划CDB和PDB的数量和配置
- 独立进程:为每个PDB配置独立的Extract和Replicat进程
- 权限管理:在CDB级别创建GoldenGate用户,并为每个PDB授予必要的权限
- 监控到位:监控每个PDB的同步状态,确保数据同步正常
5.2 常见问题与解决
多租户架构与配置中的常见问题及解决方案:
- 权限不足:确保GoldenGate用户在CDB和PDB级别都有适当的权限
- 连接失败:检查连接字符串格式,确保正确指定PDB
- 同步延迟:优化GoldenGate配置,提高同步性能
- 数据不一致:检查 supplemental logging配置,确保数据捕获完整
- 进程启动失败:检查进程参数文件,确保配置正确
5.3 风哥经验分享
在多次GoldenGate多租户架构配置的经验中,我总结了以下几点心得:
1. 架构规划:在实施多租户架构前,需要充分规划CDB和PDB的数量、用途和资源分配,确保架构设计合理。
2. 权限管理:多租户环境的权限管理比传统环境更复杂,需要在CDB级别和PDB级别分别配置权限,确保GoldenGate用户有适当的访问权限。
3. 性能优化:多租户环境可能会对GoldenGate性能产生影响,需要优化配置,如使用集成模式、调整并行度等,提高同步性能。
4. 监控维护:多租户环境需要更细致的监控,确保每个PDB的同步状态正常,及时发现和解决问题。
5. 故障处理:多租户环境的故障处理需要考虑PDB级别的问题,制定相应的应急方案,确保系统的可靠性。
更多学习教程公众号风哥教程itpux_com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
