数据迁移在核心系统下移属于非常重要的环节,并且要在很短的窗口期内完成,面临着以下痛点:
1. 源数据库对象关系、表间逻辑依赖关系复杂
2. 目标数据库架构部署,规格需求规划;
3. 迁移过程业务中断时间要求短;
4. 需要同步进行数据对比验证;
5. 需要做数据逆向回流,确保安全性和应用回切的兜底方案;
沃信在集中式数据库到分布式数据库提供了全链路迁移解决方案:全量迁移、增量迁移、数据比对校验、数据补录/修正,为异构数据库间数据迁移大大降低门槛、提高效率。
全量数据迁移、全量数据比对流程是:
多并发(多进程)从旧核心AS400源表读取数据文件,转码后生成标准的数据块文件,下载传输到X86服务器,再按原表结构数据批量导入到分布式数据库中。
每当一张表迁移完之后,就给比对系统发信号,系统驱动比对组件,快速比对两套数据库中数据表字段内容,完成数据比对。
这过程中消耗点:
- 1.   网卡带宽性能受限,AS400下数网卡是千兆卡
- 2.  AS400磁盘IO存在瓶颈
- 3.  拆解过程中,部分表还需要补分片键和大字段转换
为满足数据迁移和一次性切换、数据实时比对要求,需进行增量数据迁移与比对:
- 1.  准实时将AS/400的增量数据同步到分布式数据库。
- 2.  速度:12小时内完成AS/400核心系统500G数据库增量日志的同步。
- 3.  一致性:要求数据同步前后的数据完全一致。
- 4.  易用性:支持手动暂停和启动、同步过程中遇到错误支持记录日志、支持断点续传。
增量数据迁移流程是:
400同城镜像机:在AS/400核心系统同城机房部署同城镜像机,将同城备机上的数据变化通过MIMIX同步过来。在镜像机上部署JRN日志采集程序,准实时采集增量JRN日志推送到数据同步机。
数据同步机:接收到AS/400的增量JRN日志后进行格式解析和转码处理,然后进行存储和排序处理后,按数据表并发识别事务窗口后,生成SQL,并按照分布式数据库要求填补分片键,发往分布式数据库。
分布式数据库:数据库代理收到同步机发送的单条SQL语句后,完成数据库写和更新处理。
(增量迁移流程图)
增量数据比对流程是:
分析JRN日志中变化表的变化记录集合的历史信息,取最后一次变化表主键信息,通过向目标分布式数据库进行数据抽取,同目标库的相关记录进行实时、滚动比对。
(增量比对流程)
整体一次性切换流程图:
(X86核心数据迁移过程规划图)
核心切换产品工具链:
1.异构复杂表的全量移植
将AS/400核心系统将复杂表进行抽取,码制转换,大字段类型解析,数据内容转换,补数据分片键,最终生成Insert语句和连接下高并发、大批量将数据迁移到分布式数据库内。
2.异构数据库全量数据比对
在AS/400核心系统和X86分布式数据库静止状态下,针对指定的数据表范围和字段范围,快速比对两套数据库中全量数据表字段内容。
3.数据日志同步
将AS/400核心系统中数据库变化情况,增量同步到分布式数据库中,保证两套数据库的数据变化情况完全一致,数据同步过程支持暂停和重启,遇到故障可支持断点续传,全过程需保证两套数据库的事务一致性。
4.异构数据库抽样数据比对
在系统切换之前,AS/400核心系统与X86分布式数据库持续同步数据,通过不停机滚动比较,验证数据同步的一致性,降低系统切换期间的全量数据检核压力,减少切换时间窗口。
工作原理:
通过网络旁路镜像技术,从交换机捕获数据,由透视诊断系统的分析服务器负责分析数据并将分析完的数据入库。web页面展示由web服务器返回的准实时数据和报警信息
数据库健康状态检测:
数据库服务器与应用服务器分别被看作是一个一个的节点,它们之间通过tcp进行数据传输交互。通过分析从交换机数据,观察出应用与数据库的实时运行状态。
应用端和数据库之间的交互是通过请求和应答建立的,通过沃信cnstat模块获取应用和数据库之间的数据,分析得到应用和数据库的HANG,DOWN,颠,亚,慢五种状态。
(1)HANG:
应用HANG:一段时间内应用有连接但无请求无响应。
数据库HANG:一段时间内数据库有连接和响应率但无响应。
(2)Down:
应用Down:一段时间内应用无连接无请求无响应。
数据库Down:一段时间内数据库无连接无请求无响应。
(3)颠:
以一段时间的平均响应时间为数据进行线性拟合计算,得出平均响应时间的方差。方差越大,应用/数据库 平均响应时间波动越大。方差超过阈值判定为颠。
(4)亚:
数据库亚:一段时间内,平均响应时间呈上升趋势且趋势大于阈值。
应用段亚:一段时间内,连接数呈下降趋势且趋势大于阈值。
(5)慢:应用/数据库响应时间回归平均数大于阈值。
提前预测问题
统计每类SQL的执行参数,分析获得高并发热点、单点数据,提前预测,是否存在隐患,以此为基础提出优化解决方案。
对查询类SQL按规则进行聚类,统计聚类后不同SQL语句和该语句下不同查询字段的次数和平均响应时间, 并对响应时间偏长的进行提前预警。
快速定位问题
4.1 故障根因分析-异常SQLCODE分类诊断: 通过对SQLCODE进行分类, 直接给出出错连接下相关语句,问题根因,异常数及异常SQLCODE种类数。如: 键值重复, 空间满等错误可以直接说明。
4.2 TPS偏低诊断
通过对TPS和产出率两个维度,判断当TPS偏低时责任是否在数据库:
当TPS和产出率同时低于各自的阈值时,可以判定责任是数据库;
当TPS低于阈值,但是产出率正常时,可以判定责任不是数据库。
4.3 通道未提交诊断
发现连接时间超过阈值,仍没有commit/rollback的应用连接及该事务。通过事务聚类找出与其相似的事务有哪些,预测下一条sql的可能性。
4.4 大事务分析诊断
发现及预测可能成为大事务(影响行数大于阈值)的事务。
分析影响行数大于阈值的sql语句,获取对应的SQL类型,判断影响行数大于阈值的sql语句的次数占该类sql类型总执行次数的比例是否达到报警值,如果达到报警值则在通过事务类型和该SQL类型的关系,找到可能成为大事务的事务。
4.5 慢SQL语句类型诊断
找出平均响应时间大于数据库平均响应时间的SQL类型。
通过SQL类型语句的执行次数和该类SQL类型的总响应时间占数据库总响应时间的比例,找到最影响数据库性能的SQL类型。
全方位准实时监控数据库运行状态
(1)性能监控
[1] 产出率:数据库正常应答的占比,以此来评估数据库的服务能力。
[2] 响应率:数据库应答数占请求数的比例,是评估数据库的服务能力的重要参数。
[3] 异常SQLCODE占比:检索所有的交易,分类出异常SQLCODE,实时展示异常SQLCODE占比。
[4] 回滚率:回滚的事务占总事务的占比,及时发现高回滚的事务。
[5] TPS:每秒的事务量,是衡量数据库服务能力的重要指标。
[6] RSPT:数据库的每秒平均响应时间,是衡量数据库服务能力的重要指标。
[7] 未提交事务量:当前连接长时间未提交的事务量,快速定位是哪类事务挂起从而影响了数据库的整体性能。
[8] TOP慢SQL:监控TOP级别的语句执行响应时间,发现慢语句并预测响应时间趋势。
(2)资源监控
[1] SQLCODE类型:根据不同SQLCODE返回码类型,快速判定数据库、表空间等异常行为。
[2] 影响行数:每条SQL语句的影响的行数,是评估SQL语句对数据库的影响能力的重要指标。
[3] 通道监控:监控所有连接是否正常进行。
[4] DDL语句监控:监控所有的DDL语句。