
▏摘要
为进一步支撑能开中心的日志存储与业务分片需求,满足业务系统高可用、高扩展、高并发、高性价比及稳定安全等发展要求,河北移动基于磐维数据库成功完成能开日志系统应用架构升级,通过引入shardingsphere中间件的能力,实现了磐维数据库分库分表的架构设计,提升了数据库的处理能力,验证了磐维数据库的分布式能力。
▏问题
为落实集团自主可控战略要求,河北移动积极推进国产数据库替换工作,针对中国移动集团自研磐维数据库,结合该数据库和业务特点,选择合适的业务系统积极进行推进。
▏行动
• 针对试点选取的四套数据库(客户交互中心、收入准则库、收入保障库、能力开放库),河北移动从业务量、SQL运行、CPU性能、IO性能、对关键业务影响等方面分别进行分析,本着从易到难的思路,首选客户交互中心试点验证,后续持续推广;
• 针对数据库迁移过程中的应用适配和数据迁移难点,河北移动定制化研发自动化迁移工具及兼容性评估工具,自动化且高效的助力Oracle、MySQL等异构数据库替换为磐维数据库;
• 在数据库架构方面河北移动进行了三点改造,一是通过分布式组件进行分库分表配置,根据配置将数据下发到不同的磐维集群,二是能开日志载入由sqlldr导入改造为groovy脚本实现,三是应用SQL兼容性,维护人员通过数据库客户端进行各个业务接口数据的查询、统计及问题定位,监控大屏连接能开数据库根据能开日志数据进行相关需求的统计展示。
▏结果
• 磐维数据库的应用,为河北移动节约了许可投资,降低了运维成本,减少了对国外数据库的依赖,为数据库国产化建设提供强有力的支撑。
作者:沙丘社区分析师团队
01
案例企业
中国移动河北公司(以下简称“河北移动”)于1999年8月16日正式挂牌成立,主要经营移动通信、IP电话、互联网接入以及各类电信增值业务,下设12个地市分公司,员工总数1.8万人,客户规模约5000万户,是河北省内规模最大的电信运营商。
02
项目背景
中国移动集团一直致力于IT关键技术的自主创新,推动核心能力内化,其中数据库的自主可控是关键一环。中国移动持续贡献openGauss社区,openGauss是一款开源关系型数据库,采用木兰宽松许可,融合华为多年在数据库的实践经验,具有一定竞争力。
2022年中国移动基于openGauss推出磐维数据库,进一步提升系统稳定性,目前已经完全支持PGSQL生态,具备MySQL常规兼容能力,同时具备一定Oracle的兼容性,可以简化应用迁移,具备一定的高性能和高安全性。
当前河北移动各业务系统数据库类型包括国外商业数据库、开源、国产数据库,共计400余套,为落实集团自主可控战略要求,信息技术中心积极推进国产数据库替换工作,针对移动自研磐维数据库,结合该数据库和业务特点,选择合适的业务系统积极进行推进。
河北移动针对试点选取的四套数据库(客户交互中心、收入准则库、收入保障库、能力开放库),从业务量、SQL运行、CPU性能、IO性能、对关键业务影响等方面分别进行分析。客户交互中心的数据量、业务负载和对业务的影响最小,本着从易到难的思路,河北移动首选客户交互中心试点验证,后续持续推广。
客户交互中心主要是记录业务系统与客户全渠道交互信息的统一管理,在去O改造过程中,难点是客户体验不降级。国外商用数据库软件已经进入了产品稳定期,架构稳定、生态健全,包括各类服务、文档等,而磐维数据库历史相对较短,迁移时需要进行专项优化,避免出现性能问题。不仅要做好数据库的替换,更要做好应用支撑体系的更新。
解决方案
磐维数据库系统架构分为单机、主备式、高可用、分布式四种。单机存在单点故障,适用于测试场景;常规主备式架构保障数据的高可靠性,但系统不具备高可用性,不支持故障侦测及主备自动切换;高可用架构支持故障侦测及主备自动切换,系统具备高可用性;分布式架构适配应用层已分布式改造的场景。根据架构及业务系统特点,河北移动客户交互中心、收入准则、收入保障使用高可用架构,能力开放平台使用分布式架构。
从MySQL、Oracle等数据库迁移到国产数据库有两个难点,一是应用适配、二是数据迁移。针对这两个难点,河北移动定制化研发自动化迁移工具及兼容性评估工具,自动化且高效的助力Oracle、MySQL等异构数据库替换为磐维数据库。
数据迁移工具从现网可以读取对象的定义和数据,自动化将对象和数据迁移到目标的磐维数据库,可以实现数据与对象的自动迁移、字符集转换、自定义迁移并发度,包括存储过程、函数、触发器、包迁移自动根据磐维的语法规则,在目标端磐维中创建,生成迁移报告;兼容性评估工具可以从现网采取SQL,将SQL回放到目标磐维数据库,实现数据库画像、SQL 兼容和性能评估,符合规则的PLSQL代码可实现自动改写,大大降低适配改造的工作量。
进行改造的数据库是能开数据库,现在的类型是Oracle数据库,数据量在8T以上,主要分为两类表,一类是较小的参数表、另一类是较大的日志表。能开数据库在Oracle上面临两个问题,一是日志保存周期不满足需求,二是查询效率较低。河北移动进行了三点改造,改造点1是从主备式变成分布式架构,采用shardingsphere进行组网架构和高可靠验证,基于Sharding新架构下的分库、分表方案;改造点2是日志数据载入,能开系统通过msgaccepter读取kafka消息,产生能开日志文件,msgaccepter通过sqlldr将能开日志文件载入到Oracle数据库中;改造点3是应用SQL兼容性,维护人员通过数据库客户端进行各个业务接口数据的查询、统计及问题定位,监控大屏连接能开数据库根据能开日志数据进行相关需求的统计展示。
改造点1:通过分布式组件进行分库分表配置,根据配置将数据下发到不同的磐维集群。分库分表键值的选择是分布式架构运行效率的关键,河北移动制定如下设计原则:
第一,数据分布。数据均匀地分布到各个数据片,避免数据倾斜或热点问题;
第二,查询需求。满足常用查询条件,以便能够将查询路由到正确的数据片上;
第三,业务关联。分片键需满足多个表联合查询的需求,确保选择的分片键将相关数据存储在同一数据片中,减少跨数据片的查询和联合操作。
基于此,能开库选择使用频率最高的字段作为分库键,同时根据多表关联的场景,将关联字段作为表的分库键,同时将辨识度较高的字段作为分库或分表键,将数据充分打散。
改造点2:能开日志载入由sqlldr导入改造为groovy脚本实现。Groovy是一种编程语言,其结合Java的强大功能和脚本语言的简洁性,Groovy SQL 是 Groovy 编程语言的一部分,用于简化与数据库的交互。groovy引用readFile类方法读取每行数据后,按照指定字符分隔生成数组,将数组元素insert到sharding逻辑表;从字段值的预处理、指定读取字段个数、入库结果准确性三个方面进行测试,实现完整的功能性替换,数据一致,效率提升。
改造点3:从传统客户端改为dbeaver直接登录shardingsphere,进行数据查询、更新等相关数据库操作;监控大屏利用python程序成功链接shardingsphere,进行数据库连接方式、驱动类型的配置。
河北移动持续做好自主可控数据库替换前、中、后的工作,制定四个清单(上线清单、告警清单、故障参考清单、深度巡检清单)、一个规范的保障思路,保障系统运行稳定性。整理汇总故障清单,提前规避或设计应急方案,做好自主可控数据库上线保障工作,不断将运维工作提前,主动运营,优化后期的运维质量。
河北移动制定了覆盖整个上线流程的20大类、63小类、177子类的的上线评估清单,清单要求上线前一级清单必须全部完成。
国产数据库在数据对象及SQL语法上和Oracle相比存在比较大的差异,国产库割接上线后对版本开发、应用运维、数据库维护、安全及周边系统(4A及BOMC等)制定了运维标准。
在分布式场景下,河北移动验证不同分库、分表数量下业务SQL语句执行效率,得到最优的分布式解决方案(分库数据10个、分表数量2个),关联查询比Oracle效率提升2-3倍。
在系统上线实施过程中,河北移动从系统组网、系统迁移、性能分析三个方面入手,验证了磐维替换Mysql、Oracle的可行性,并沉淀了大量实施经验,可为后续数据库国产化实施提供参考及指导。
磐维数据库试点2022年已完成客户交互中心库、收入准则库上线运行,上线后运行平稳、高效,达到了预期目标。2023年实施能力开放、收入保障割接,进一步扩大磐维分库分表特性试点,在实施过程中形成了1个全景+5个视角的实施体系。1个全景视图是将实施分为业务域和运维管理域,保证业务、系统同步进行,其中业务域更关注分片方案、业务测试、性能测试、压力测试等程序适配,运维管理域更加关注于数据库维护;5个能力视角包括资源评估模型精准度、工具生态完善度、高可用成熟度、性能满足度、割接方案稳健度。
04
价值与效果
河北移动上线磐维数据库后取得了较好的经济价值和社会价值:
在经济价值方面,磐维数据库的应用,节约了许可投资,降低了运维成本。传统商业数据库需要支付高昂软件费用及后续原厂服务费用,开源及国产数据库不断提升产品稳定性,成本更低,更可控。
在社会价值方面,减少对国外数据库的依赖,为数据库国产化建设提供支撑。随着河北移动公司在磐维数据库易用性上的探索,异构迁移已不再是阻碍数据库国产化的难点。通过本期磐维数据库适配改造项目,河北公司真正掌握了磐维数据库落地解决方案,从而减少了对国外数据库的依赖,为数据库国产化建设提供强有力的支撑。