OceanBase在科大讯飞的落地实践 戴明明 科大讯飞技术专家 科大讯飞 成立于1999年,从事智能语音、计算机视觉、自然语言处理、认知智能等人工智能技术研究。 讯飞使命 让机器能听会说,能理解会思考,用人工智能建设美好世界。 AI+教育 AI+城市 AI+医疗 AI+工业 AI+汽车 AI+金融 AI+办公 AI+运营商 人工智能[AI] 目录 Contents 01为什么选择OceanBase 02OceanBase落地实践 03运维经验分享 01 为什么选择OceanBase OceanBase需要解决问题 扩展性 高度可扩展的数据存储和处理能力,适应大规模数据增长和高并发访问的需求。 可维护性 简化数据库管理和维护任务,降低维护成本和复杂性 HTAP能力 提供混合TP/AP能力,同时满足在线事务处理和复杂分析查询等多种业务需求 OceanBase的可维护性(OCP) IaaS资源管理 •地域管理 租户管理 •租户创建/删除 •租户扩容/缩容/Zone优先级 •数据库管理/会话管理/参数管理 •机房管理 •主机管理 软件包管理 •上传 •下载 •存储 OceanBaseProxy管理 •集群新建/接管/删除 •集群升级/扩容/缩容 •参数管理 备份恢复 •集群新建/删除/升级/扩缩容 集群管理 •集群新建/删除/升级/扩缩容 •集群监控/告警 •合并管理/参数管理/unit管理 •集群监控/告警 •合并管理/参数管理/unit管理 OceanBaseOLTP性能测试 TpmC 450000 400000 350000 300000 250000 200000 150000 100000 50000 0 64 128 256 512 MySQL分库分表 600 700 OceanBase MySQL 结论 •MySQL方案在并发数逐渐增加时Tpmc增长至25w左右,不再增长 •OceanBase方案在并发数逐渐增加时Tpmc增长至40w且有持续增长趋势 •在并发数小于128时,OceanBase方案性能不如MySQL方案 OceanBaseOLAP性能测试 SQL MySQL耗时(s) OceanBase耗时(s) 性能提升(倍) 统计SQL1 9.67 0.92 9.51 统计SQL2 5.92 0.41 13.44 统计SQL3 36.21 1.23 28.44 统计SQL4 6.86 0.49 13.00 统计SQL5 3.74 0.17 21.00 统计SQL6 49.2 1.82 26.03 统计SQL7 61 1.48 40.22 统计SQL8 35.98 4.47 7.05 结论:根据业务SQL的复杂程度,OceanBase提升性能7-40倍 两个核心问题 协议兼容性 1.当前系统基于MySQL5.7进行开发 2.OceanBase兼容MySQL协议,支持业务平滑迁移且无须修改应用代码 数据迁移 1.业务系统7*24运行,几乎没有停机窗口 2.OMS数据实时同步,在配合HAProxy,秒级完成MySQL到OceanBase切换 MySQL切换OceanBase的重要保障 可维护性 •黑屏运维变成白屏运维 •DDL增强,MySQL大表分钟级的DDL,在OceanBase中秒级完成 HTAP能力 •解决当前OLTP和OLAP不能完全拆分的问题 其他能力 •兼容MySQL协议,业务无需修改代码 •OMS异构同步,解决数据迁移问题 •数据压缩能力,数据压缩50%(三副本总和) OceanBase 扩展性 •可以根据业务增量,进行动态的垂直和水平扩容 OceanBase可以解决的痛点 02 OceanBase落地实践 MySQL迁移OceanBase方案 数据迁移 1.制定MySQL迁移OceanBase的操作方案 2.在测试环境验证迁移方案 3.交付OceanBase生产环境并配置数据同步 运维准备 1.OceanBase管理:集群/租户/副本管理 2.高可用方案验证 3.应急预案整理 服务保障 1.性能优化 2.监控管理 3.备份恢复 010203040506 准备阶段 1.搭建OceanBase测试环境 2.业务代码适配OceanBase 3.OceanBase性能压测 4.预估数据增量和规模 回滚方案 1.制定OceanBase切回MySQL操作方案 2.与业务侧对齐并验证方案 迁移上线 1.确定具体切换时间 2.按预定方案进行切换 切换过程架构图 APP 切换前 切换后 VIP VIP VIP切换 ProxySQL HAProxy+KeepAlive 只读 MySQL Master MySQL Slave OMS实时同步 OBServer1 HAProxy+KeepAlive OBProxy1 OBProxy2 OBProxy3 OBServer2 OBServer3 切换后整体架构图 APP VIP切换 VIP 主集群 VIP 容灾集群 VIP 容灾集群 HAProxy+KeepAlive HAProxy+KeepAlive HAProxy+KeepAlive HAProxy+KeepAlive ProxySQL OBProxy1OBProxy2OBProxy3 OBProxy1OBProxy2OBProxy3只读 OBServer1 OBServer2OBServer3 OBServer1 OBServer2OBServer3 MySQL Master MySQL Slave OMS实时同步 03 OceanBase运维经验分享 OceanBase版本的选择 版本发布计划 版本号说明 V4.2.1_CEV4.2.1_CE_BP1V4.2.1_CE_BP1_HF1 VA.B.C_CE[_BETA][_BPX][_HFY] 规则说明: A.B.C:保留三位版本,和OceanBase内核版本的前三位保持一致 •A表示主要的大版本,一般会有架构升级或较大的新功能发布。 •B表示计划迭代版本,含有重要功能或特性更新和提升。 •C表示发布更新版本,对已知问题进行修复,一般无功能或特性变更。 BP:表示是第X个Bugfix版本 HF:表示是第X个Bugfix版本的第Y个Hotfix OB4.2.1是长期支持版本: •BP:正常每个月发布一次, 主要用于修复一些重大的bug。 •HF:因为BP是每个月发布一次,如果在此期间发现了重大的bug,就通过HF来修复。 V4.3.0_CE_BETA V4.3.0_CE_BETAV4.2.2_CE_HF1V4.2.2_CE_BP1V4.2.2_CE_BP4V4.2.2_CE_BP3_HF2 选择次新版本的最新BP/HF OBServer3 OceanBase集群整体架构图 OceanBase集群1 VIP OceanBase集群2 VIP OBServer1 OBServer2 OBServer1 OBServer2 OBServer3 OCP集群【VIP】 Web1 Web1 MySQL集群 VIP OBServer OBServer OBServer OMS主备集群 OBServer1 OBServer2 OMS1 OMS2 切换或者升级之前要充分测试 4.1.0 执行时间:0.3s …… andfirsttime>=(selectdate_add(max(stat_day),interval1day)fromtab1)anduseday>=(selectdate_add(max(stat_day),interval1day)fromtab2) …… 不同版本的优化器性能有出入 写法1:50s andfirsttime_use>=(selectdate_add(max(stat_day),interval1day)fromtab1)anduseday>=(selectdate_add(max(stat_day),interval1day)fromtab2) 写法2:0.3s 4.2.1 andfirsttime_use>='2024-04-09'anduseday>='2024-04-09' 解决方案:使用hint /*+NO_AGGR_FIRST_UNNEST(@"SEL$6"),NO_AGGR_FIRST_UNNEST(@"SEL$7")/ 充分测试,提前规避问题 OnlineDDL和OfflineDDL 分类 操作 列操作 中间加列(before/after/first)重排列(before/after/first)添加自增列修改为自增列修改列类型加/删/改主键列添加/删除stored生成列删列混合列操作在同一条DDL语句中 表操作 truncate表转换字符集删表 分区操作 修改分区规则删除分区truncate分区 OfflineDDL清单 ODC无锁结构变更清单 无锁结构变更注意事项 操作 是否支持 列类型修改 支持 重排列(before/after/first) 支持 转换字符集 支持 列重命名 不支持 增加列 不支持 删除列 不支持 增加主键列 不支持 增加主键 支持 修改主键 支持 删除主键 支持 删除分区 支持 truncate分区 支持 重分区 支持 非分区表改为分区表 支持 •依赖:OMS、OCP •表必须有主键或非空唯一键且表中不存在外键。 •需要操作对象的至少2倍的磁盘空间 •无锁结构变更期间,发起其它关于该表的DDL变更将导致任务失败。 •大表变更较慢:5亿/200G单表修改列类型耗时5小时 提前和业务侧对齐,避免临时执行OfflineDDL变更 愿意听用户声音并改进的OceanBase OCP 当前版本OCP添加集群页面必须从上往下填写内容,否则会清 空之前填写的内容,社区接受建议。 OCP 当前版本OCP在多节点部署的情况,只有一个管理节点,存在 管理节点的单点故障,社区接受建议并提供解决方案。 OBKV 建议OBKV支持布隆过滤器,接受建议并纳入需求清单 OMS 当前版本OMS订正数据后自动执行全量校验,生产实际需要N 个小时,建议不校验或者选择性校验,社区接受建议并迭代 案例1 案例2 案例3 案例4 OceanBase社区是一个开放的社区 谢谢 谢谢 谢谢