ODC:无锁结构变更与冷热数据分离解决方案 胡智娟 OceanBase高级产品经理 目录 Contents 01ODC是什么 ODC能给开发者带来哪些帮助? 02无锁结构变更 为结构变更提供安全稳定的解决方案 03数据归档 为在线库提供冷热数据分离解决方案,实现数据库瘦身 04CY24规划 ODC今年计划提供哪些能力 01ODC是什么 一个跨平台的数据库开发工具 SQL开发 对象管理SQL执行PL调试导入导出 一套针对数据库变更管理的团队协作平台 变更风险管控 SQL规范检查 变更审批 数据脱敏 操作审计 一款全面覆盖数据生命周期管理的产品 数据生命周期管理 数据归档 数据清理 自动分区 一个跨平台的数据库开发工具 SQL执行 •SQL编辑与执行 •命令行窗口 •脚本管理 •代码片段 SQL开发 数据源 •OceanBaseEE/CE •ODPSharding •MySQL •Oracle、Doris 数据查看与编辑 •数据查看 •数据编辑 •列模式 •结果集类EXCEL交互 数据生成 •测试数据构建 •场景化数据生成 数据迁移 •数据导入 •数据导出 •结果集导出 对象管理 •表和视图 •PL对象 •EVENT/JOB •DBLINK SQL诊断 •执行计划EXPLAIN •执行剖析PROFILE 数据库运维 •会话管理 •全局变量管理 •回收站管理 •全链路追踪TRACE 超过25项重要开发功能,覆盖对象管理、SQL执⾏、数据查看与编辑等常⻅开发⼯具能⼒,同时提供了PL调试、数据库运维、数据⽣成等企业级特性。 PL生命周期 •匿名块窗口 •PL执行 •PL编译 •PL调试 通过现代WEB架构提供方便的使用方式,桌面版可部署在Windows、Mac、Linux系统,WEB版用户通过浏览器即可访问服务。 一套针对数据库变更管理的团队协作平台 通过访问权限、变更审核、稳定变更三个层次递进风险控制,保障生产数据库变更过程稳定、高效、可追溯。其中变更审核环节,通过SQL检查 规则、SQL窗口规范、风险识别定制符合实际业务情况的管控规则。 稳定变更 变更审核 访问权限 •无锁结构变更 •无锁数据变更 •普通变更 •SQL规范 •风险识别 •工单审批 •账号体系 •项目角色权限 •库访问权限 •结构比对 •结构同步 •变更回滚 项目管理员DBA 安全管理员 开发 测试 生产 任务执行 自动分区 性能检测 数据清理 数据归档 限流保护 一款全面覆盖数据生命周期管理的产品 ODC提供直观的界⾯,使开发⼈员能够轻松地制定冷热数据分离策略。5分钟即可构建冷热数据分离系统。 针对有⾃动新增、删除分区诉求的分区表,ODC⽀持为这些表设置分区创建和清理策略,ODC根据⽤户配置的策略⾃动管理分区,能有效地减轻DBA的工作负 担。 02无锁结构变更 OfflineDDL和OnlineDDL OfflineDDL的影响 服务中断,影响业务连续性 独占锁导致所有对该表的读取和写入操作都将被阻塞,直到DDL完成。这会导致用户请求长时间等待,甚至服务暂时中断。 资源消耗,影响其它关键进程性能下降 大表的OfflineDDL可能会触发大规模的数据读写操作,产生海量I/O,造成磁盘压力骤增进而影响整个系统的性能。 数据一致性风险,导致未提交的更改丢失 OfflineDDL期间,正在进行中的事务会被阻塞,直至超时或被迫回滚。这会导致用户丢失未提交的数据。 OnlineDDL的要点 最小化业务影响 监控与控制 如何实时监控迁移进度、系统资源消耗以及可能的风险点,以便及时调整策略或中止操作 故障恢复与回滚 在迁移过程中出现意外情况时,如何快速恢复原状,保证业务不受长期影响 平滑流量切换 如何在数据迁移后,快速、安全地将应用程序的读写流量从旧表切换到新表 数据一致性保障 如何确保新表和旧表之间的数据一致性,保障数据不丢失 ODConlineDDL流程 自动检查 发起结构变更Offline变更 TableA rename 数据同步 流量监控 TableA_临时表1 rename 数据校验+增量同步 发起结构变更 TableA_临时表2 TableA 支持offlineDDL自动识别,onlineDDL走普通变更,offlineDDL走无锁结构变更。 使用OB成熟的迁移技术完成全量、增量数据同步,数据同步过程中根据数据库负载限流。 业务切流过程中会根据锁表超时时间、重试次数等设置来执行,以保障切流过程的平滑。在rename过程中只需短暂地(1-3s)影响业务。 变更任务默认保存原表结构及数据以保障紧急情况下变更回滚。 字段类型调整 •面对产品需求频繁变更,数据库结构需要随之调整以适应新的业务逻辑或数据存储需求。 •随着数据量增长和查询负载增加,数据库管理员可能会发现某些字段类型并不适合现有数据分布或查询模式。 •法规遵从性要求或企业内部数据安全策略的变化迫使调整数据库字段的数据类型。 修改主键 •原有表缺少主键,需要增加主键。 •原有的主键设计不符合实际诉求,需要修改主键。 ODConlineDDL的应用 分类 操作 列操作 1、支持增加列到指定位置2、支持列类型修改3、支持重排列(before/after/first)4、支持转换字符集 主键操作 1、在表有非空唯一键的前提下支持增加主键2、在表有非空唯一键的前提下支持修改主键3、在表有非空唯一键的前提下支持删除主键 分区操作 1、支持删除分区2、支持truncate分区3、支持重分区4、支持降普通表转化为分区表 03数据归档 数据增长带来的挑战 存储成本上升数据库性能下降数据运维难度增加 •选择高压缩比的数据库 •冷热数据分离 •为冷数据选择CPU配置较低且存储更便宜的服务器 MySQL OracleOB 数据归档 OB •实现在线库瘦身 •存储成本下降 •数据库性能提升 •数据运维难度降低 数据归档的流程 数据清理 源端、目标端资源监控 Table_A 热数据 数据同步 稳定 •支持实时监控,自动限流 灵活 •支持灵活的归档/清理条件配置(支持自定义变量) Table_A 冷数据 •支持多种调度策略 安全 •支持数据一致性校验 在线库 MySQL/Oracle/OB 自动限流 历史库 OB 可靠 •支持归档任务异常回滚 数据归档任务界面 新建归档任务查看归档执行记录 查看归档任务信息 数据归档关键技术解读 四大关键技术 分片并行实现高性能归档 •基于主键的分片策略 •将归档任务拆分成多个较小的子任务 •多个线程并发处理 分片分批 多线程 先校验再删除确保历史数据库可信 数据清理 全记录检查 •支持源端、目标端数据一致性校验 在线库 历史库 清理线程 多维度限流保障在线库稳定运行 •主动限流:流量限制、行数限制 •被动限流:根据CPU、内存使用情况限流 断点恢复更适应大数据规模 •每个子任务会保留一个滑动窗口用于记录事务的成功状态 •失败的事务即为断点,会定期同步到数据库中 •重跑时获取每个子任务的断点信息,从断点位置继续运行 功能价值 •降本增效:大量历史数据访问少、数据量大,清理过期数据降低存储成本 •数据库瘦身:业务快速增长,数据规模日趋庞大,缩小在线库数据规模提升性能和稳定性 数据归档 create_time@Table_A <30Days 归档进程 归档进程 归档进程 在线库 删除 历史库 Table_A SSD盘 数据同步create_time<30Days 异常回滚 Table_A SAS盘 数据归档 业务挑战 •在线日志型数据庞大,缺少有效清理手段 •业务数据快速增长,需要控制数据规模 •业务场景复杂多样,多表联合过滤等 多场景 •历史数据归档:在线库(SSD磁盘)->历史库(SAS磁盘),将数据归档到廉价存储的历史库,节省约三分之二存储成本,提高在线库性能和运维效率 •过期数据清理:直接原地清理过期数据,100%节省存储成本 •异常数据回滚:数据归档后,发现异常后可以从历史库进行数据恢复,将数据回滚到在线库 用户案例:理想汽车之数据库瘦身、降本增效 04ODC今年规划 产品迭代路线图 支持AP业务场景开发,结合AI提效,持续打磨数据归档及变更风险管控能力 Q1 •支持Oracle数据源 •支持库级别访问控制 •支持通知告警 •支持结构比对 •支持Doris数据源 •数据归档支持OBOracle模式 Q2 Q3 •支持dbt开发 •支持基于状态的结构变更 •支持列级别访问权限控制 •支持自然语言转化为SQL、图表 •支持项目内脚步与代码片段共享 •支持从OB归档到文件、云存储 •支持从PG归档到OB •支持关联(外键)场景进行归档 Q4 •支持AI任务编排 •支持DAG任务编排 •支持轻量报表管理 •支持异构数据库结构比对/同步 •支持归档过程中的全量、增量结构处理 •数据归档/清理支持逻辑库 •支持逻辑库DDL变更 •支持多库(pipeline)变更 •支持无锁数据变更 •支持实时查询剖析 •支持表级别访问权限控制 •支持从Oracle归档到OB www.oceanbase.com/product/odc 官网介绍 钉钉扫码加入用户交流群 https://github.com/oceanbase/odc 代码仓库 联系我们 谢谢 谢谢 谢谢