1. 首页 > GoldenGate教程 > 正文

GoldenGate教程FG075-OGG多租户架构实战

内容简介:
本文详细介绍OGG多租户架构的设计和实现,包括多租户架构设计、租户隔离、资源管理、权限控制等内容。风哥教程参考GoldenGate官方文档GoldenGate多租户指南、GoldenGate架构设计手册等内容,帮助读者掌握OGG多租户架构的实战技巧。

目录大纲

Part01-基础概念与理论知识
    1.1 OGG多租户架构概述
    1.2 多租户隔离机制
    1.3 多租户资源管理
Part02-生产环境规划与建议
    2.1 多租户架构规划
    2.2 租户隔离规划
    2.3 资源配额规划
Part03-生产环境项目实施方案
    3.1 多租户架构配置
    3.2 租户隔离配置
    3.3 资源管理配置
Part04-生产案例与实战讲解
    4.1 多租户数据同步实战
    4.2 租户资源隔离实战
    4.3 租户权限控制实战
Part05-风哥经验总结与分享
    5.1 OGG多租户架构最佳实践
    5.2 多租户管理经验总结
    5.3 多租户监控与运维

Part01-基础概念与理论知识

1.1 OGG多租户架构概述

OGG多租户架构通过逻辑隔离实现多个租户共享同一OGG实例,提高资源利用率,学习交流加群风哥微信: itpux-com。

多租户架构:
1. 逻辑隔离:租户间逻辑隔离
2. 资源共享:共享OGG资源
3. 独立管理:租户独立管理
4. 灵活扩展:灵活扩展租户
5. 成本优化:优化资源成本

# 查看OGG实例信息
cd /GoldenGate/app
./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 23.0.0.0.0

GGSCI (fgedu.net.cn) 1> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING E_TENANT01 00:00:02 00:00:00
EXTRACT RUNNING E_TENANT02 00:00:03 00:00:01
REPLICAT RUNNING R_TENANT01 00:00:05 00:00:02
REPLICAT RUNNING R_TENANT02 00:00:04 00:00:01

1.2 多租户隔离机制

OGG多租户通过进程隔离、目录隔离、权限隔离等机制实现租户隔离。

隔离机制:
1. 进程隔离:租户使用独立进程
2. 目录隔离:租户使用独立目录
3. 权限隔离:租户独立权限
4. 数据隔离:租户数据隔离
5. 配置隔离:租户配置隔离

# 查看租户目录结构
ls -la /GoldenGate/app/ | grep tenant

drwxr-xr-x 5 tenant01 oggadmin 4096 Jan 15 10:00 tenant01
drwxr-xr-x 5 tenant02 oggadmin 4096 Jan 15 10:00 tenant02
drwxr-xr-x 5 tenant03 oggadmin 4096 Jan 15 10:00 tenant03

1.3 多租户资源管理

OGG多租户通过资源配额、优先级调度等机制实现资源管理。

资源管理:
1. 资源配额:租户资源配额
2. 优先级调度:租户优先级调度
3. 资源监控:租户资源监控
4. 资源限制:租户资源限制
5. 资源优化:租户资源优化

风哥提示:多租户架构需要合理规划资源配额,避免资源争抢。

Part02-生产环境规划与建议

2.1 多租户架构规划

根据业务需求,设计合理的多租户架构。

架构规划:
1. 租户数量:规划租户数量
2. 资源分配:规划资源分配
3. 隔离策略:规划隔离策略
4. 权限管理:规划权限管理
5. 监控策略:规划监控策略

# 查看系统资源
free -h

total used free shared buff/cache available
Mem: 64Gi 32Gi 16Gi 1.0Gi 16Gi 30Gi
Swap: 16Gi 0B 16Gi

2.2 租户隔离规划

规划租户隔离策略。

隔离规划:
1. 进程隔离:每个租户独立进程
2. 目录隔离:每个租户独立目录
3. 权限隔离:每个租户独立权限
4. 数据隔离:每个租户独立数据
5. 配置隔离:每个租户独立配置

2.3 资源配额规划

规划租户资源配额。

配额规划:
1. CPU配额:每个租户CPU配额
2. 内存配额:每个租户内存配额
3. IO配额:每个租户IO配额
4. 网络配额:每个租户网络配额
5. 存储配额:每个租户存储配额

Part03-生产环境项目实施方案

3.1 多租户架构配置

配置OGG多租户架构。

# 创建租户用户
useradd -m -s /bin/bash tenant01
useradd -m -s /bin/bash tenant02
useradd -m -s /bin/bash tenant03

# 租户用户创建完成

# 创建租户目录
mkdir -p /GoldenGate/app/tenant01/{dirdat,dirprm,dirdef,dirsql,dirchk,dirtmp}
mkdir -p /GoldenGate/app/tenant02/{dirdat,dirprm,dirdef,dirsql,dirchk,dirtmp}
mkdir -p /GoldenGate/app/tenant03/{dirdat,dirprm,dirdef,dirsql,dirchk,dirtmp}

# 租户目录创建完成

# 设置目录权限
chown -R tenant01:oggadmin /GoldenGate/app/tenant01
chown -R tenant02:oggadmin /GoldenGate/app/tenant02
chown -R tenant03:oggadmin /GoldenGate/app/tenant03
chmod -R 750 /GoldenGate/app/tenant*

# 目录权限设置完成

# 创建租户Extract进程
cd /GoldenGate/app
./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 23.0.0.0.0

GGSCI (fgedu.net.cn) 1> ADD EXTRACT E_TENANT01, INTEGRATED TRANLOG, BEGIN NOW

EXTRACT added.

# 添加Trail文件
GGSCI (fgedu.net.cn)> ADD EXTTRAIL /GoldenGate/app/tenant01/dirdat/t1, EXTRACT E_TENANT01

EXTTRAIL added.

# 编辑Extract参数
GGSCI (fgedu.net.cn)> EDIT PARAMS E_TENANT01

— 租户01 Extract配置
EXTRACT E_TENANT01
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/app/tenant01/dirdat/t1

— 租户01表映射配置
TABLE tenant01.fgedu_orders;
TABLE tenant01.fgedu_products;
TABLE tenant01.fgedu_customers;

3.2 租户隔离配置

配置租户隔离。

# 创建租户Replicat进程
GGSCI (fgedu.net.cn)> ADD REPLICAT R_TENANT01, EXTTRAIL /GoldenGate/app/tenant01/dirdat/t1

REPLICAT added.

# 编辑Replicat参数
GGSCI (fgedu.net.cn)> EDIT PARAMS R_TENANT01

— 租户01 Replicat配置
REPLICAT R_TENANT01
USERID fgedu, PASSWORD fgedu123
ASSUMETARGETDEFS

— 租户01表映射配置
MAP tenant01.fgedu_orders, TARGET tenant01.fgedu_orders;
MAP tenant01.fgedu_products, TARGET tenant01.fgedu_products;
MAP tenant01.fgedu_customers, TARGET tenant01.fgedu_customers;

# 配置租户权限
vi /GoldenGate/app/tenant01/tenant01_acl.txt

# 租户01访问控制列表
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 允许租户01访问自己的进程
ACCESSRULE, PROG *, USER tenant01, ALLOW

# 拒绝租户01访问其他租户的进程
ACCESSRULE, PROG *, USER tenant01, DENY

3.3 资源管理配置

配置租户资源管理。

# 编辑Manager参数
GGSCI (fgedu.net.cn)> EDIT PARAMS MGR

— Manager配置(多租户)
PORT 7809
DYNAMICPORTLIST 7810-7900
AUTOSTART EXTRACT *
AUTOSTART REPLICAT *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
AUTORESTART REPLICAT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /GoldenGate/app/*/dirdat/*, USECHECKPOINTS, MINKEEPDAYS 3
LAGCRITICALMINUTES 30
LAGWARNINGMINUTES 10
LAGREPORTHOURS 1

— 租户资源配额
ACCESSRULE, PROG *, USER tenant01, ALLOW
ACCESSRULE, PROG *, USER tenant02, ALLOW
ACCESSRULE, PROG *, USER tenant03, ALLOW

— 租户优先级
EXTRACT E_TENANT01, PRIORITY HIGH
EXTRACT E_TENANT02, PRIORITY MEDIUM
EXTRACT E_TENANT03, PRIORITY LOW

— 资源限制
RESOURCEMANAGER CPU 80
RESOURCEMANAGER MEMORY 32G

# 创建资源监控脚本
vi /GoldenGate/app/scripts/tenant_resource_monitor.sh

#!/bin/bash
# tenant_resource_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

OGG_HOME=/GoldenGate/app
LOG_FILE=$OGG_HOME/logs/tenant_resource_monitor.log

monitor_tenant() {
local tenant=$1
local processes=$(echo “INFO ALL” | $OGG_HOME/ggsci 2>/dev/null | grep $tenant | wc -l)
local lag=$(echo “LAG EXTRACT $tenant” | $OGG_HOME/ggsci 2>/dev/null | grep “Lag” | awk ‘{print $2}’)

echo “租户 $tenant: 进程数=$processes, 延迟=$lag” >> $LOG_FILE
}

echo “========== 租户资源监控: $(date) ==========” >> $LOG_FILE

# 监控所有租户
for tenant in tenant01 tenant02 tenant03; do
monitor_tenant $tenant
done

# 监控系统资源
echo “CPU使用率: $(top -bn1 | grep “Cpu(s)” | awk ‘{print $2}’)” >> $LOG_FILE
echo “内存使用率: $(free | grep Mem | awk ‘{printf(“%.2f%%”, $3/$2 * 100.0)}’)” >> $LOG_FILE

Part04-生产案例与实战讲解

4.1 多租户数据同步实战

本案例展示多租户数据同步。

# 启动租户01进程
GGSCI (fgedu.net.cn)> START EXTRACT E_TENANT01

Sending START request to MANAGER …
EXTRACT E_TENANT01 starting

Extract started successfully.

# 启动租户01 Replicat
GGSCI (fgedu.net.cn)> START REPLICAT R_TENANT01

Sending START request to MANAGER …
REPLICAT R_TENANT01 starting

Replicat started successfully.

# 插入租户01数据
sqlplus fgedu/fgedu123@fgedudb01

SQL*Plus: Release 19.0.0.0.0

Connected.

SQL> INSERT INTO tenant01.fgedu_orders (
order_id, customer_id, order_date,
order_status, total_amount, create_time, update_time
) VALUES (
20240001, 500123, SYSDATE,
‘PENDING’, 1500.00, SYSDATE, SYSDATE
);

1 row created.

# 提交事务
SQL> COMMIT;

Commit complete.

# 查看租户01数据
SQL> SELECT * FROM tenant01.fgedu_orders WHERE order_id = 20240001;

ORDER_ID CUSTOMER_ID ORDER_DATE ORDER_STATUS TOTAL_AMOUNT CREATE_TIME UPDATE_TIME
———- ———– ——————- ———— ———— ——————- ——————-
20240001 500123 2024-01-15 10:00:00 PENDING 1500 2024-01-15 10:00:00 2024-01-15 10:00:00

4.2 租户资源隔离实战

展示租户资源隔离。

# 查看租户资源使用
GGSCI (fgedu.net.cn)> INFO EXTRACT E_TENANT01, SHOWCH

Extract E_TENANT01

Checkpoint information:

Current Checkpoint:
Read Checkpoint : /GoldenGate/app/tenant01/dirdat/t1000001
Extract RBA : 12345678

Resource Usage:
CPU Usage : 25%
Memory Usage : 2GB
IO Usage : 100MB/s

# 查看所有租户进程
GGSCI (fgedu.net.cn)> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING E_TENANT01 00:00:02 00:00:00
EXTRACT RUNNING E_TENANT02 00:00:03 00:00:01
EXTRACT RUNNING E_TENANT03 00:00:04 00:00:02
REPLICAT RUNNING R_TENANT01 00:00:05 00:00:02
REPLICAT RUNNING R_TENANT02 00:00:04 00:00:01
REPLICAT RUNNING R_TENANT03 00:00:06 00:00:03

4.3 租户权限控制实战

展示租户权限控制。

# 切换到租户01用户
su – tenant01

# 切换到租户01用户

# 查看租户01进程
cd /GoldenGate/app
./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 23.0.0.0.0

GGSCI (fgedu.net.cn) 1> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING E_TENANT01 00:00:02 00:00:00
REPLICAT RUNNING R_TENANT01 00:00:05 00:00:02

# 尝试访问租户02进程
GGSCI (fgedu.net.cn)> INFO EXTRACT E_TENANT02

ERROR: Access denied. User tenant01 does not have permission to access E_TENANT02.

Part05-风哥经验总结与分享

5.1 OGG多租户架构最佳实践

基于实际项目经验,总结OGG多租户架构的最佳实践。

最佳实践:
1. 租户规划:合理规划租户数量
2. 资源配额:合理分配资源配额
3. 隔离策略:完善隔离策略
4. 权限管理:严格权限管理
5. 监控告警:完善监控告警

风哥提示:多租户架构需要建立完善的监控和告警机制。

5.2 多租户管理经验总结

总结OGG多租户管理的经验和技巧。

管理经验:
1. 租户生命周期:管理租户生命周期
2. 资源优化:优化资源使用
3. 性能调优:调优租户性能
4. 故障处理:处理租户故障
5. 容量规划:规划租户容量

5.3 多租户监控与运维

提供OGG多租户监控与运维的工具和方法。

# 创建多租户监控工具包
mkdir -p /GoldenGate/app/tools/multitenant
cd /GoldenGate/app/tools/multitenant

# 创建工具清单
cat > README.txt << 'EOF'
========== OGG多租户监控工具包 ==========

工具列表:
1. tenant_resource_monitor.sh – 租户资源监控脚本
2. tenant_status_monitor.sh – 租户状态监控脚本
3. tenant_lag_monitor.sh – 租户延迟监控脚本
4. tenant_acl_manager.sh – 租户权限管理脚本
5. tenant_quota_manager.sh – 租户配额管理脚本

使用方法:
./tenant_resource_monitor.sh
./tenant_status_monitor.sh
./tenant_lag_monitor.sh
./tenant_acl_manager.sh [action]
./tenant_quota_manager.sh [action]
EOF
cat README.txt

========== OGG多租户监控工具包 ==========

工具列表:
1. tenant_resource_monitor.sh – 租户资源监控脚本
2. tenant_status_monitor.sh – 租户状态监控脚本
3. tenant_lag_monitor.sh – 租户延迟监控脚本
4. tenant_acl_manager.sh – 租户权限管理脚本
5. tenant_quota_manager.sh – 租户配额管理脚本

使用方法:
./tenant_resource_monitor.sh
./tenant_status_monitor.sh
./tenant_lag_monitor.sh
./tenant_acl_manager.sh [action]
./tenant_quota_manager.sh [action]

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息