FYF
» HerBert
Toggle navigation
FYF
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
8、DG
9、集群相关
HCCDP
实验题
About Me
归档
标签
03 GaussDB数据库迁移
无
2025-10-04 22:43:03
6
0
0
admin
# GaussDB 数据库迁移笔记 ## 一、课程目标 * 了解数据库迁移整体方案 * 掌握 UGO 数据库与应用迁移服务原理及特性 * 掌握 DRS (Data Replication Service) 数据复制服务 * 了解迁移到 GaussDB 的限制与双向同步方法 --- ## 二、数据库迁移挑战 1. **数据完整性与一致性** 2. **语法兼容性**(如 ROWNUM、CONNECT BY 等) 3. **数据迁移性能与时延** 4. **数据库对象迁移复杂性** 5. **应用改造需求** 6. **联调与性能测试** --- ## 三、数据库迁移解决方案概述 * **迁移前省心**:自动评估、语法转换、风险识别 * **迁移时放心**:自动化流程、最小化业务停机 * **迁移后安心**:一致性验证、性能稳定 支持: * 主流商用数据库(Oracle、DB2、SQL Server) * 开源数据库(MySQL、PostgreSQL) * 目标端: GaussDB 、 GaussDB (for MySQL) --- # 第一部分:UGO 工具 ## 一、UGO 概述 UGO (Database and Application Migration) 用于: * 异构数据库对象迁移 * 应用迁移与 SQL 转换 * 评估 → 结构迁移 → 应用迁移 → SQL 审核 四大核心功能 --- ## 二、UGO 核心能力 ### 1. 源库画像 * 自动采集数据库对象(TABLE、INDEX、TRIGGER、VIEW 等) * 统计对象分布、字符集、版本信息 * 可视化展示对象结构 --- ### 2. 语法兼容性评估 * 精确到目标库版本的兼容分析 * 识别 PL/SQL 语法差异和不兼容特性 * 输出工作量评估报告(人天) --- ### 3. SQL 语法转换 **示例:Oracle → GaussDB** ```sql -- Oracle CREATE TABLE tt ( id INT NOT NULL PRIMARY KEY, name CHAR(10 CHAR), content VARCHAR2(30), birth_date DATE ) PARTITION BY RANGE (birth_date) INTERVAL (NUMTOYMINTERVAL(1, 'month')) ( PARTITION part1 VALUES LESS THAN (TO_DATE('2005-01-04', 'yyyy-mm-dd')) ); -- GaussDB CREATE TABLE tt ( id NUMBER(38) NOT NULL PRIMARY KEY, name NVARCHAR2(10), content VARCHAR2(30), birth_date DATE ) PARTITION BY RANGE (birth_date) INTERVAL ('1 month') ( PARTITION part1 VALUES LESS THAN (TO_DATE('2005-01-04', 'yyyy-mm-dd')) ); ``` **转换规则:** 1. INT → NUMBER(38) 2. CHAR(n CHAR) → NVARCHAR(n) 3. INTERVAL 语法调整 --- ### 4. 对象迁移 * 自动迁移 + 手工校正结合 * 细粒度控制对象范围 * 一键迁移、生成报告 --- ### 5. 对象比对 * 比较迁移前后对象数量与属性 * 忽略语法差异点,生成对比报告 * 支持表、索引、触发器、包、函数等 --- ### 6. 应用迁移 * 支持 Java / MyBatis / C# / JSON 源码 SQL 提取 * 评估 SQL 兼容性并自动转换 * 精确定位源文件(文件名:行号) --- ### 7. SQL 审核 #### 审核规则分类: | 类型 | 主要规则示例 | | --- | ------------------------------- | | 规范类 | 关键字大写、对象命名统一、UTF8字符集 | | 设计类 | 不创建触发器、字段数限制、序列不使用 CACHE | | 性能类 | LIKE前端匹配、WHERE 单边规则、循环中不 commit | **支持:** * SQL 脚本 / 应用 SQL / 数据库对象 SQL * 规则数量: GaussDB 105 条、MySQL 78 条、PostgreSQL 90 条 --- ## 三、UGO 技术原理 ### 1. 对象采集 * 使用 DBMS_METADATA 或 系统视图拼接 SQL * 自动分析对象依赖关系与优先级排序 * 多线程并发采集 ### 2. 语法解析 * 基于数据库官方文档生成语法描述文件 * 解析 SQL 生成语法树 → Java 描述类 * 应用于 SQL 评估、转换与审核 ### 3. 对象比较规格 涵盖 TABLE、INDEX、SYNONYM、TYPE、VIEW、TRIGGER、PROCEDURE、FUNCTION 等 20 余种对象类型的 Schema 级属性比对。 --- ## 四、UGO 关键特性 | 特性 | 功能说明 | | ----- | ----------------------------------- | | 转换配置 | 可创建模板,快速复用转换规则 | | 表空间映射 | 映射 Oracle → GaussDB /PostgreSQL 表空间 | | 分布映射 | 定义 GaussDB 分布式表分布策略 | | 批量修改 | 批量修复迁移失败的 SQL 语句,可还原 | --- ## 五、UGO 迁移流程 1. **环境准备**(UGO / DRS / 数据库连通性) 2. **克隆生产库** 用于评估(避免影响生产) 3. **语法兼容评估** 生成报告 4. **梳理迁移对象清单** 5. **SQL 转换并迁移对象** 6. **使用 DRS 执行全量数据迁移** 7. **对象与数据一致性校验** 8. **应用 SQL 改造与验证** 9. **业务测试与性能调优** --- ## 六、UGO 常见问题 | 问题 | 原因 | 解决方案 | | -------------- | ---------- | --------------------------------------------- | | license 不匹配 | 多网卡 IP 不一致 | 修改 install-default.conf 中的 service.ip_address | | 用户被锁 | 密码不同多次失败 | 使用 `ALTER USER xx ACCOUNT UNLOCK;` | | 报 read-only 错误 | 主备切换 | 填写所有 IP 或让 DBA 切回主库 | | 分布列不符合预期 | 未手工指定 | 在转换配置中定义分布列 | | 表空间不存在 | 未配置映射 | 配置表空间映射或注释表空间选项 | | 字符集不匹配 | 未自动扩展 | 修改字符集配置(源/目标) | --- # 第二部分:DRS 工具 ## 一、DRS 概述 **Data Replication Service (数据复制服务)** * 实现在线迁移、实时同步、异地容灾 * 降低跨库数据流通复杂度 **支持数据库:** Oracle、MySQL、PostgreSQL、SQL Server、DB2、MongoDB、GaussDB 等 --- ## 二、DRS 三种模式对比 | 功能类型 | 实时迁移 | 实时同步 | 实时灾备 | | ---- | --------- | ------------ | ------ | | 主要用途 | 跨云迁移 | 多业务数据流动 | 异地主备 | | 迁移粒度 | 表/库/全库 | 表/库 | 实例级 | | 特点 | 支持对象、参数迁移 | 支持对象名映射与数据加工 | 支持主备倒换 | | 优点 | 不中断业务 | 多源多目标 | 高可用保障 | --- ## 三、DRS 同步方案 * 支持 公网 / VPN / 专线 / VPC 等网络方式 * 多云、多数据库、异构同步 * 数据实时同步、断点续传、业务无感知 --- ## 四、DRS 技术原理 ### 1. 三阶段迁移流程 1. 结构迁移(表结构/索引/视图等) 2. 全量迁移(一次性拷贝数据) 3. 增量迁移(日志捕获+回放) ### 2. 数据抓取与回放 * 抓取 Redo/Archive 日志(Oracle LogMiner) * 转换为 DRS 内部 THL 格式 * 多线程并行 SQL 回放 ### 3. 并行分析与冲突队列 * 根据主键/唯一键检测冲突 * 无冲突事务并行回放 * 冲突事务排队等待上一批完成 ### 4. 数据比对算法 基于 **Merkle Tree** 快速对比差异行: 1. 比对根节点哈希 2. 若不一致则递归定位叶子节点 3. 精确到不一致行 --- ## 五、Oracle → GaussDB 实践步骤 1. 创建实时同步任务 2. 测试源库 / 目标库连接 3. 选择迁移对象(表、视图等) 4. 启用流速模式(防止 Oracle 压力过大) 5. 设置高级选项与数据加工规则 6. 执行预检查、监控同步进度、查看日志 7. 创建对比任务并导出结果报告 --- ## 六、考试重点速记 | 模块 | 高频考点 | 答案要点 | | --- | ---- | -------------------------------------- | | UGO | 功能组成 | 源库画像、语法评估、对象迁移、应用迁移、SQL审核 | | UGO | 支持源端 | Oracle、DB2、SQL Server、MySQL、PostgreSQL | | DRS | 功能类型 | 实时迁移 / 实时同步 / 实时灾备 | | DRS | 技术原理 | 日志抓取 + THL 落盘 + 并行回放 | | DRS | 增量抽取 | Oracle LogMiner 机制 | | DRS | 比对算法 | Merkle Tree 差异检测 | --- ## 七、思考题示例 **1. 单选题** 可以进行数据库和应用迁移的服务是( C ) A. DRS B. DAS C. UGO D. RDS **2. 多选题** 关于 DRS 实时迁移功能的描述正确的是( B C D ) A. 只支持表数据迁移 B. 迁移过程中业务可继续使用 C. 最小化业务中断 D. 平滑上云迁移
上一篇:
下一篇:
1、GaussDB 常用管理操作整理
0
赞
6 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网