---
title: 杭州银行：分布式场景下快速构建数据模拟环境的探索与实践
date: '2024-11-28T20:00:46+08:00'
status: publish
permalink: /blog/practice-of-data-simulation-in-distributed-scenario
author: '周, 盛虎'
excerpt: 本文结合杭州银行在核心系统上线过程中的项目实践，重点阐述了生产环境分布式数据库快速向隔离测试域传递数据并构建模拟环境的操作过程，希望能为正处于改造过程中的金融同业提供有价值的参考和借鉴。
type: post
id: 8301
category:
    - 案例实践
tag:
    - 分布式数据库
    - 金融
    - 银行核心系统
post_format: []
profile:
    - 张显华
    - 邵健
---
> 本文转载自「中国金融电脑+」订阅号，刊于《中国金融电脑》，作者邵健 张显华

导读
--

针对分布式数据库升级改造场景，为解决传统生产数据导入过程难以满足测试数据时效性需求的难题，本文结合杭州银行在核心系统上线过程中的项目实践，重点阐述了生产环境分布式数据库快速向隔离测试域传递数据并构建模拟环境的操作过程，希望能为正处于改造过程中的金融同业提供有价值的参考和借鉴。

- - - - - -

一直以来，生产交易数据作为价值密度最高的数据资产之一，在系统测试和操作验证等环节均发挥了重要作用。为进一步提升业务可靠性，杭州银行数据库团队在分布式场景下探索构建可提供生产交易实时数据的模拟环境，以使开发团队可及时核对差异数据、验证数据修订结果，并支持测试团队进行批量任务的常态化模拟。在构建模拟环境的过程中，杭州银行遵循不影响生产环境运行和保障网络域隔离等原则，以实现多次快速模拟和稳定操作为目标，有效保障了模拟环境数据的**实时性、一致性和完整性**。

传统的数据准备挑战及对策
------------

### 常用方案挑战

在以往测试分布式数据库的数据准备场景中，常用技术方案可分为以下两种：一种是基于数据还原和日志前滚，即在测试环境提前还原生产环境最近的备份数据，并在收到数据需求后，将备份后形成的变化日志传送到测试环境进行应用，之后再进行脱敏等环境准备操作。然而，该方案需进行跨网络域的数据摆渡操作和日志手工还原，不仅操作步骤多、过程不可靠，且重新准备数据所需的恢复时间较长，难以多次、快速模拟目标。另一种是基于准实时逻辑复制，即搭建一个逻辑复制库保持准实时同步，并在收到数据需求后，优雅停止同步链路，再进行脱敏和启用读写模式等环境准备操作。但是，该方案不符合网络域隔离原则，重新准备数据需要初始化逻辑复制库，操作过程较长，且同样不能多次、快速模拟目标。

### 应对策略

针对上述难点，杭州银行探索使用了存储快照方案来提升数据模拟环境的构建效率，即在集中式数据库运维实践中，创建生产存储数据卷的快照并在其他节点上挂载，再在打开数据文件后提供快照数据环境，实现了操作便捷、构建快速等目标。

现有模式下，分布式数据库属于 Share Nothing 架构，生产集群(生产域的分布式数据库环境，通常是使用本地盘的多副本集群)使用服务器内置 NVME 盘，不具备快照和映射外部主机的能力。为此，杭州银行在生产环境部署了一套使用集中式存储的分布式数据库复制集群(生产域内生产集群通过逻辑复制方式写入的单副本集群，该集群挂载集中式存储)，并将二进制程序和数据都放置在存储卷上；同时，将数据副本数量配置为单副本，支持其从生产集群配置逻辑复制任务到复制集群，并可在收到数据需求后，创建存储卷的可写快照映射给镜像快照集群(模拟测试域内通过集中式存储快照启动的模拟测试用集群)节点，同时启动镜像快照集群。

在分布式架构下，快照操作涉及多个节点上的多个存储卷，需要在存储层和分布式数据库层进行组合设计。具体而言，一是在进行快照时，鉴于难以保证多个存储卷均处于同一时间点，需将其配置于存储的单个“一致性组”(在存储上包含多个存储卷的逻辑集合，在进行复制或者创建快照时可被视为单个实体，以保障组内存储卷的写入顺序一致)。二是为提高从生产集群到复制集群的数据逻辑复制效率，默认会拆分上游事务在多会话中进行投递，导致下游的数据变更次序与上游不一致。对此，通过采用复制检查点，可在数据逻辑复制过程中以 1 分钟为粒度周期性地对齐上下游的数据，并将对齐时的事务号保存在下游的元数据表中。三是在快照集群启动时，全局数据往往并不一致，而使用 Flashback Cluster 功能，可将集群数据闪回到过去 24 小时内任何 1 分钟的具备全局数据一致性的事务号，从而保证数据的一致性和完整性。存储快照方案拓扑结构如图 1 所示。

![存储快照方案拓扑结构](https://img1.pingcap.com/files/2024/12/20241202060828354.webp)<center>图 1 存储快照方案拓扑结构</center>总体而言，上述方案具备以下技术优势：一是使用复制集群**隔离了快照任务对生产环境的影响，且单副本配置减少了数据容量需求**。二是基于存储 SAN 网络实现**生产环境数据的单向摆渡，实现了对网络域的隔离**。三是存储快照的数据**实时性较高，操作过程便捷，可以多次重复执行**。四是基于数据库逻辑复制的过程一致和集群数据闪回特性，确保了数据的一致性和完整性。

数据模拟环境落地方案
----------

### 准备复制集群阶段

该阶段主要是在生产环境中使用集中式存储将 LUN **分配给复制集群**，并确保所有 LUN 都配置在一个“一致性组”内，同时在节点上创建 LVM VG 及条带 LV，将用户的 Home 目录、二进制安装目录和数据目录都放在 LV 上。其间，在部署复制集群的过程中，部署服务器使用主机名或域名将可避免跨环境后修改 IP 的步骤，且鉴于模拟测试所需的数据属于一次性使用场景，配置复制集群使用单副本，有利于节省存储空间和提升性能。此外，搭建生产集群到复制集群的复制链路，保持实时同步并开启 Syncpoint 检查点功能。如果有更长时间的历史回溯要求，则需确认数据版本保存期限和逻辑复制一致性的事务号记录期限符合业务需要。

### 创建镜像快照集群阶段

在数据持续复制的过程中，生产环境存储创建“一致性组”可写快照映射给具有相同主机名的**镜像快照集群节点**，且第一次需要在节点恢复数据库集群二进制程序的 Systemd 服务等信息。其间，如果有关键时间点的历史回溯要求，还需确认创建后的存储只读快照的保存期限符合业务需要。此外，当快照挂接完成后，该阶段还将启动镜像快照集群，读取最新的逻辑复制一致性的事务号，并进行 Flashback Cluster 集群闪回操作。

### 环境准备操作阶段

在恢复到数据一致性事务号后，该阶段将进行**数据库用户密码重置**，完成数据脱敏作业，以及配置业务字典数据，同时进一步按需扩展计算节点。

### 模拟环境重置阶段

在夜间批量等模拟环境任务完成后，该阶段的镜像快照集群节点将停止服务并卸载磁盘，同时根据测试验证需求，决定是否重复第二阶段。

综上所述，通过采用集中式存储的单副本分布式逻辑复制集群构建数据模拟环境，杭州银行不仅实现了**快速构建数据模拟环境**的目标，也高效满足了数据一致性和时效性要求，同时结合隔离测试域和数据脱敏等手段，保障了数据安全。在生产实践中，第二、三、四阶段的操作脚本已经嵌入作业运行平台交付给运行值班团队进行操作，并支持测试团队在日间进行夜间批量任务和生产报文回放的常态化模拟，且在生产系统上线后的重保期内，还能提前预知生产环境夜间批量任务会发生的数据正确性和业务逻辑问题。展望未来，杭州银行将尝试引入 CDM 技术联合创新解决方案，实现数据库技术和备份技术的深度结合，覆盖流程自动化和主机环境准备等领域，推动数据副本技术在更多业务系统的应用，更好地赋能业务价值提升。