深度剖析数据库国产化迁移之路

作者 | 吴夏,腾讯云 TDSQL 高级工程师

责编 | 唐小引

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

随着国家有关部门近年来陆续出台相关政策指导文件,推动探索安全可控的金融科技产品,加强银行业信息安全建设,国内众多金融政企机构开始探索借助数字化技术,来实现原有 IT 系统的转型升级,从而实现降本增效,已经成为行业发展的共识。

近日,腾讯对外透露其自研的金融级分布式数据库 TDSQL 的金融政企用户数突破 600 家。作为一款自主研发的金融级数据库,TDSQL 正在成为众多金融机构数字化升级过程中的一大担当。本文将以国内某大型金融机构的数据库真实迁移的实践出发,分享国产数据库的技术架构、迁移历程以及优化措施

国产数据库解决的问题

传统集中型数据库,成本高、扩容难、性能受限,传统模式下靠采购高端设备以及增加硬件来保证数据库可用性和扩展性的方案正面临越来越大的压力。而自主可控分布式数据库具备高可扩展性、高性能、高可用等特性,可以很好地满足产业互联时代线上化、高频、多维度、高并发的场景需求,能够帮助金融机构在解决技术瓶颈问题的同时,助力实现降本增效,而节省下来的成本效率,银行可用于业务快速创新和迭代,发展互联网线上化业务,在时间和空间上扩大银行业务服务版图。

成本方面,国产分布式数据库同样表现优势明显。举个例子,基于 TDSQL 的新系统在硬件层面全面采用 x86 服务器,取代传统商用数据库所需的大型机、小型机,成本优势明显。最新客户案例数据显示,张家港农商行采用 TDSQL 分布式数据库架构后的硬件成本,只有传统架构成本的 1/5 甚至更低。而微众银行公布的数据看,单客户 IT 成本能节省为传统商业数据库架构的 1/10。

作为技术与知识产权自主可控的金融级分布式数据库,可满足国家对金融安全自主可控的要求。通过核心技术升级,以新一代分布式数据库解决过去难以解决的业务问题,同时实现自主可控,是企业数字化转型的趋势选择。

如何迁移?

在金融业务场景中,数据库迁移升级、数据分发与数据备份是数据库系统必不可少的基本功能。其中前者是实现数据解耦及汇总的重要基础,例如保险行业常见的总分系统架构,多个子库需要实时的将业务数据同步至总库汇总查询;银行核心交易系统中,需要将交易数据实时同步至分析子系统进行报表,跑批等业务员操作。而数据备份则是数据安全的基石,更是金融业务数据的生命线。作为一个金融级数据库产品来说,TDSQL 在技术层面沉淀了针对数据库数据迁移、分发、同步和备份的 TDSQL-MULTISRCSYNC(TDSQL-多源同步)解决方案,为数据库系统国产化转型的高可用、高可靠提供了有益参考。

▐  TDSQL 多源同步核心架构:数据迁移与同步的关键逻辑

分布式数据库 TDSQL 是腾讯打造的一款分布式数据库产品,具备强一致、高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施。

TDSQL-MULTISRCSYNC(多源同步),是高性能、高一致,支持多种异构数据平台的数据分发服务。该服务支持以 TDSQL 作为源端的数据实时同步分发至 MySQL、Oracle、PostgreSQL、消息队列等平台,同时也支持以 TDSQL 作为目标端,将 MySQL 或者 Oracle 的数据实时同步至 TDSQL 中,并且部署灵活,支持一对多,多对一等多种复制拓扑结构。

多源同步模块典型的基于日志的 DCD 复制技术,其系统架构如下:

从上图我们可以看到,整个系统可以大致地分成三个部分:producer,store,consumer。

  • producer:增量日志获取模块,主要负责解析获取源端的增量数据改动日志,并将获取到的日志解析封装为 JSON 协议的消息体,投送至消息队列。当源端是 MySQL 或者 TDSQL 时,获取的增量日志为 binlog 事件,这里要求 binlog 必须是 row 格式且为 full-image。当源端是 Oracle,producer 从 Oracle 的物化视图日志中获取增量数据并进行封装和投送。这里 producer 在向消息队列生产消息时,采用 at-least-once 模式,即保证特定消息队列中至少有一份,不排除在队列中有消息重复的情况。

  • store:消息队列中,因为数据库系统日志有顺序性要求,因此这里所有的 topic 的 partition 个数均为 1,保证能够按序消费。

  • consumer:日志消费和重放模块,负责从消息队列中将 CDC 消息消费出来并根据配置重放到目标实例上。这里因为 producer 端采用 at-least-once 模式生产,因此消费者这里实现了幂等逻辑保证数据重放的正确。

▐  核心特性:高性能、高一致、高可用

一、高性能保障:基于行的哈希并发策略

金融业务场景中,往往对数据的实时性要较高,因此对数据同步的性能提出了比较高的要求。为了解决这样的问题,consumer 采用了基于行的哈希并发策略实现并行重放。下面以 binlog 消息为例来说明该策略的实现。

数据库系统在记录 binlog 时,按照事务的提交顺序将行的改动写入 binlog 文件,因此按照 binlog 文件记录事件的顺序进行串行重放,源端和目标端数据库实例状态一定会达到一致。但是串行重放因为速度慢,在遇到如批量更新等大事务时,容易产生较大的同步时延,适应不了对数据实时性较高的同步场景。为了提高并发度,这里 consumer 按照每个行记录的表名和主键值进行 hash,根据 hash 值将消息投送到对应的同步线程中。这样乱序的重放会导致数据不一致吗?答案是不会的,因为虽然是将顺序的消息序列打乱了,但是同一行的所有操作都是在同一个线程中是有序的,因此只要每个行的改动执行序列正确,最终数据是会一致。这个过程如下图所示:

二、一致性保障:row 格式 binlog 事件的幂等容错

实现幂等逻辑的动机有两个:

  • 因为生产者实现的是 at-lease-once 模式进行消息生产,因此 consumer 这里必须要能否处理消息重复的问题。

  • 支持幂等逻辑后,便于数据的修复,且在数据同步的过程中不需要记录镜像点,便于运维。

这里幂等逻辑的设计原则就是,保证按照 binlog 事件的意图去对目标实例进行修改。如 insert 事件,其意图就是要在数据库中有一条 new 值标识的记录;update 事件的意图就是,数据库中没有 old 值标识的记录,只有 new 值标识的记录;delete 操作也是同样,其结果就是要求目标数据库中,不包含 old 值标识的记录。因此针对 insert,update,delete 操作,其幂等逻辑如下:

  • INSERT

根据上图可以看到,当出现主键冲突时,insert 操作会转变成 delete+insert 操作来保证 insert 动作执行成功。另外图中的影响行数小于 0 或者等于 0 标识执行 SQL 出错和主键冲突。

  • update

从上图我们可以看到,update 操作的幂等处理,其实就是保证了在数据库中,只能有 new 值产生的记录。

  • delete

这个过程中,delete 结束后大于 0 就成功;小于 0 就是失败;等于 0 的时候我们认为它可能没有匹配到行,这个时候我就按照主键操作——因为删除的操作最终的结果就是目标一定没有了当前删除的消息主键所标识的这一行——这条操作完成后,DB 里一定没有这行数据,因此仅仅是按照主键进行删除就可以了。这个时候如果影响行数大于 0,则删除成功。如果等于 0,就认为按照主键去匹配,本身删除不到,匹配不到——意思是本身目标就没有这条要删的主键所标识的数据——所以实际上它的结果跟要做完删除的结果,影响是一样,也就结束这一条删除的幂等。

三、高可用保障:多机容灾保护

这一套同步服务,一定是高可用的,体现在两个方面:1、灾难的情况下,本身消费者的服务能够在假如机器出现一些不可恢复的故障时能够及时地感知并且自动迁移和切换;2、要应对本身常规的扩容——垂直扩容或者水平扩容的伸缩性需求,这也是我们比较强调,这一套同步服务要能够兼容各种灾难情况和常规的运维场景下各种各样的要求来做到服务的高可用。

重点针对数据库迁移同步的场景而言,TDSQL 多源同步提供多机容灾保护机制:

消费者高可用保障层面,一方面消费者服务本身无状态,所有的任务下发通过 MetaCluster 实现,可以通过多台机器去部署同步服务,这套容灾机制通过 manager 进程来实现,也就是说当整个机器掉电,运营这个机器的 consumer 已经不存活,这个时候这些 consumer 在 MetaCluster 上的存活节点的失效就会被其他机器的 manager 节点感知——认为另外一些机器的 consumer 已经不存活,这个时候就会把任务接管过来,并且在自己机器上重新拉起这些服务。

二是我们要做到同一个数据同步的链路不能在两台机器上同时拉起,这是一个互斥的要求。高可用机制会通过一些像唯一标识或者当前的分派节点做到,同一个数据同步的任务在被拉起的时候一定是发生在不同的机器上来实现漂移与互斥的操作,这个多机容灾保护总体上就是通过 MetaCluster 和监控的进程,比如说 manager 这样的服务进行协调完成,保证在机器级别灾难或者其他灾难情况下这些任务能够在十秒以内成功迁移到其他的存活节点上。

TDSQL 多源同步金融级应用场景和最佳实践

TDSQL 多源同步解决方案,过去几年中,已经在众多金融政企用户中得到成功实践,帮助用户高效平稳的实现国产数据库迁移替换。

而作为 TDSQL 模块中核心的产品服务之一,除了可以实现数据库全量平稳迁移,TDSQL 多源同步方案还具备支持数据分发、备份等场景应用能力,用户基于这些能力,探索出各类安全高效实现对业务的数据智能化驱动的姿势。

  • 保单信息实时数据库汇总

用户可以通过多源同步对业务进行分布式的改造,直接通过实时同步将单实例往分布式的架构上迁移。比如说保险客户通过多个分库、多个分片区或者多个单的业务、逻辑上的划分,把这些数据通过 TDSQL 这套服务同步到全量库里面。

以某大型互联网保险公司为例,基于 TDSQL 多源同步迁移方案,实现了多对一的一拓扑结构,可以非常高效、稳健地将公司多套大区的业务数据汇总到一个全量库里面,继而实现了对整体数据进行报表分析和抽取。

  • 实现数据库实例间同步,搭建数据仓库

某大型消费金融公司,在将核心数据库替换成 TDSQL 后,利用 TDSQL 多源同步服务进行不同数据库实例之间的同步。这样的操作带来业务上的两大层面驱动:第一个是风控,通过将增量的数据投送到下游消息队列里面,可提升智能风控的准确率与效率;第二,实现了数据仓库,用户利用多源同步这套系统,将业务实时生产库里面的数据源源不断地、实时地投入到数据仓库中,继而实现 OLAP 类的业务,为业务提供智能化决策分析支持。

  • 核心交易系统异构数据库实时备份

2019 年,张家港行基于 TDSQL 打造的新一代核心业务系统,成功上线后便成为业界关注的焦点。将银行传统核心系统数据库迁移到腾讯云 TDSQL 数据库后实现了代差级的降本增效。

在这样的金融级高度敏感业务系统迁移实践中,TDSQL 的性能和安全的迁移服务策略得到良好的验证。

在张家港行数据库迁移实践中,核心交易集群是 TDSQL,TDSQL 多源同步方案通过内部的局域网,将存量和增量数据,写入到备份机房,同时也通过全量的数据校验服务保证数据源、目标是完全一致来进行风险控制。当核心交易系统如果出现一些小概率不可恢复的灾难时候,系统可以在短时间内将交易的服务全部切换到备份机房的 Oracle 上,作为银行传统核心系统数据库迁移的安全兜底方案,最后确保数据库顺利迁移。

  • 数据库迁移业务割接

数据库迁移涉及大量核心数据信息,“快”和“稳”缺一不可。多源同步服务作为 TDSQL 内置功能特性,以某省广电局迁移案例为例,TDSQL 多源同步迁移服务通过重新部署业务系统的迁移方式,从迁移准备、迁移评估、方案设计、资源准备及数据库改造、迁移实施、结果验证一共只使用 30 天。其中最为关键的资源准备及数据库改造环节用时 7 天!将客户的业务系统数据库从 Oracle 迁移到 TDSQL,TDSQL 的性能满足了客户面临的现有的业务压力。而业务系统迁移过程中对数据完整性保障,为后续新业务系统运维提供了良好的数据基础。

  • 跨城跨数据中心灾备

以某互联网人寿保险公司为例,该用户在公有云 TDSQL 上的实例是其核心的生产环境,云下同时也部署了一套 TDSQL 系统,通过多源同步这套系统,用户实现了云上的生产环境和云下的生产环境灾备同步,这相当于是,实现了跨城同时也是跨数据中心的数据灾备功能。

结语

基于高一致、高性能、高可用这“三高”的特性,TDSQL 多源同步帮助用户业务实现金融级别或者金融场景的数据对外解耦、数据分发、迁移、同步等能力,并通过这些能力,融合到用户业务的数字化升级当中。

TDSQL 多源同步作为 TDSQL 产品服务体系的核心模块,既是如关键桥梁般的功能,也是帮助衍生业务价值的服务,在数据库国产化中从分布式改造、迁移、备份到后续同步、分发等,服务用户迁移到投产、生产运营的全流程。这也是 TDSQL 在多年的实践打磨下,呈现的产品化优势。

作者简介:吴夏,腾讯云 TDSQL 高级工程师,多年分布式数据库系统研发经验,目前主要负责 TDSQL 异构数据同步与迁移能力的建设,曾支持大量金融行业数据库迁移同步。

欢迎更多技术人微信搜索「donyintxy」(备注:姓名+公司+职位)向 CSDN 投稿。

 

推荐阅读

  • 对不起,我把APP也给爬了

  • 震惊!阿里的程序员竟被一个简单的 SQL 查询难住了!

  • 巧用 Trie 树,实现搜索引擎关键词提示功能

  • 第一个"国产"Apache 顶级项目 Kylin,了解一下!| 原力计划

  • 华为 5G、阿里检测病毒算法、腾讯 AI 一分钟诊断,国内抗疫科技大阅兵!

  • 超级账本Hyperledger Fabric中的Protobuf到底是什么?

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用排序算法总结

概述 在计算器科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将总结几类常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序&…

4. java——多态(java巅峰设计,超越了C++的理解,取其精华,去其糟粕)

多态指的是同—个行为具有多个不同表现形式 。是指—个类实例(对象)的相同方法在不同情形下具有 不同表现形式。封装和继承是多态的基础,也就是说,多态只是—种表现形式而已。一个对象,同一个方法不同形态,方法必须重…

ETL异构数据源Datax_日期增量同步_13

文章目录一、全量同步1. 增量同步SQL2. 构建reader3. 构建writer4. 字段对应关系映射5. 构建json6. 选择同步模板7. 查询最早时间8. 修改任务信息9. 添加增量参数10. 数据清理11. 执行任务12. 查看执行日期13. 数据验证15. 查看同步脚本二、基于日期增量同步2.1. 新增新数据2.2…

如何使用 SQL Server FILESTREAM 存储非结构化数据?这篇文章告诉你!

作者 | ALEN İBRI译者 | 火火酱,责编 | Carol封图 | CSDN 付费下载于视觉中国 在本文中,我将解释如何使用SQL Server FILESTREAM来存储非结构化数据。同时,还会介绍FILESTREAM的优缺点。 在SQL Server的早期版本中,非结构化数据的…

Apache Flink 进阶入门(二):Time 深度解析

前言 Flink 的 API 大体上可以划分为三个层次:处于最底层的 ProcessFunction、中间一层的 DataStream API 和最上层的 SQL/Table API,这三层中的每一层都非常依赖于时间属性。时间属性是流处理中最重要的一个方面,是流处理系统的基石之一&am…

月活用户达7.55亿,阿里淘系如何在后流量时代引爆用户增长?

2019 年 8 月,阿里巴巴集团公布截至 2019 年 6 月 30 日止季度业绩。 财报显示,本季度阿里巴巴集团收入为 1149.24 亿元人民币,同比增长 42%。其中,淘宝、天猫在内的中国零售平台移动月活跃用户达 7.55 亿,较上一季度…

数组,三种初始化和内存分析

数组,三种初始化和内存分析 Java内存分析: 堆:存放new的对象和数组 ​ 可以被所有的线程共享,不会存放别的对象引用 栈:存放基本变量类型(会包含这个基本类型的具体数值) ​ 引用对象的变量&a…

Arthas 3.1.2 版本发布 | 增加 logger/heapdump/vmoption 命令

最近偶尔有用户反馈某些 HTTP 接口出现超时问题,而 web 服务端的 Trace 监控没有出现 http 返回值为 503 等异常情况。出现这种情况一般是web容器出现问题,客户端连 Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。 Github:h…

Linux 便笺技巧专栏

文章目录一、 vi 专栏二、固定ip设置2.1. 自动获取改为静态2.2. IDADDR获取2.3. GATEWAY获取2.4. 重新网卡2.5. 重新连接三、主机名调整3.1. 临时有效主机名3.2. 永久有效主机名四、防火墙调整4.1. 临时关闭防火墙4.2. 开机不启动防火墙五、shell脚本5.1. shell格式5.2. shell执…

刚刚,Python内幕被爆出!网友:请收下我的膝盖!

2020 年 5 月全国招收程序员 312761 人。2020 年 5 月全国程序员平均工资 14542 元,工资中位数 12500 元,其中 95% 的人的工资介于 5250 元到 35000 元。请问你拖后腿了吗?作为一名老码农,这次请收下我的膝盖!事情起因…

阿里99大促 | 模型识别背后的样本生成

背景 在上一篇文章详解阿里99大促活动页内容识别技术实现,我们介绍了在淘宝99大促中,我们使用了怎样的算法模型去识别并完成自动化测试的。 迫切解决的样本问题 淘宝大促有近百个模块、上千个页面,模块间具有相似性,并且模块内…

这6种编码方法,你掌握了几个?

阿里妹导读:Don Roberts 提出的一条重构准则:第一次做某件事时只管去做;第二次做类似的事时会产生反感,但无论如何还是可以去做;第三次再做类似的事时,你就应该重构。 编码也是如此,当多次编写…

扎根中国20年,F5“代码到用户”线上峰会盛大启幕

2020年5月20日,全球领先的多云应用服务厂商F5公司以线上峰会的形式开启了F5 2020 “代码到用户” 暨F5中国20周年纪念庆典,深入解读了F5“代码到用户” 的战略。F5全球首席执行官范仲林先生、F5全球首席科学家及首席技术官林耕先生、NGINX创始人Igor Sys…

Hadoop集群安装部署_伪分布式集群安装_01

文章目录一、配置基础环境1. 设置静态ip2. hostname3. firewalld4. ssh免密码登录5. JDK一、配置基础环境 1. 设置静态ip [rootbigdata01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO"static" IPADDR192.168.92.100 GATEWAY192.168.92.2 DNS1192.…

Hadoop集群安装部署_伪分布式集群安装_02

文章目录一、解压安装1. 安装包上传2. 解压hadoop安装包二、修改Hadoop相关配置文件2.1. hadoop-env.sh2.2. core-site.xml2.3. hdfs-site.xml2.4. mapred-site.xml2.5. yarn-site.xml2.6. workers三、格式化与启动集群3.1. 格式化HDFS3.2. 启动伪分布集群3.3. 异常解决方案3.4…

在 520 这天,竟然有人把 Docker讲清楚了? | 原力计划

作者 | 夏目 "责编 | 王晓曼头图 | CSDN下载自东方IC出品 | CSDN博客简介1、了解Docker的前生LXCLXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C中的NameSp…

为什么它有典型FaaS能力,却是非典型FaaS架构?

阿里妹导读:FaaS—Function as a service,函数即服务。它是2014年由于亚马逊的AWS Lambda的兴起,而被大家广泛认知。FaaS能力是NBF中的一项非常重要的能力,NBF是一个非典型的FaaS架构,但是具备了典型的FaaS能力。文章将…

如何解决90%的问题?10位阿里大牛公布方法

世界在变,技术在变,需求在变。 唯一不变的是变化。 面对变化,技术人如何在不确定性的世界中寻找最优解? 查理芒格说:“掌握一定数量的思维模型,能解决这世上90%的问题。”与其在重复的“增、删、改、查”…

Hadoop集群安装部署_分布式集群安装_01

文章目录1. 分布式集群规划2. 数据清理3. 基础环境准备4. 配置ip映射5. 时间同步6. SSH免密码登录完善7. 免密登录验证1. 分布式集群规划 伪分布集群搞定了以后我们来看一下真正的分布式集群是什么样的 看一下这张图,图里面表示是三个节点,左边这一个是…