金融企业从自建MySQL数据库迁移RDS方案

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 原作者:阿里云解决方案架构师,云帅。金融企业客户对于数据库提出了更高的要求,而RDS可以很好的满足这些需求。对于自建数据库的企业,怎样迁移到云数据库RDS,本文详细展示了一个迁移案例的整体步骤。

为什么要从自建数据库迁移RDS

由于金融行业的特点,对于数据库的安全性、高可用、一致性提出了更高的要求,而RDS金融版就是专门为金融客户量身定做的,它具有以下优点:

高安全

具备提供IP白名单,防SQL注入,SSL加密传输,TDE数据加密等功能的能力

安全事前防护可设置允许连接实例的IP白名单,严格控制访问源;同时支持通过VPC来获取更高程度的网络访问控制

安全事中防护公网地址自动开启DDoS防护,保持业务永续;访问链路支持SSL加密,杜绝中间人攻击行为;支持开启透明数据加密(TDE),数据落盘自动加密,固守最后防线;通过高安全模式拦截SQL注入,远离拖库风险。

安全事后审计支持SQL审计功能,记录所有访问源和访问行为信息。对所有安全及故障事件做到有据可查。

高可用

提供双机热备、多可用区、异地容灾等多种类型的实例,满足不同级别的可用性要求

主备架构RDS实例采用主备架构,两个实例位于不同服务器,自动同步数据。主实例不可用时,系统会自动将数据库连接切换至备实例。

同城容灾在不同可用区部署主备实例,独立的电力、网络环境可提升数据可靠性。

异地容灾RDS for MySQL支持创建异地灾备实例,通过数据传输实现异地数据实时同步,在突发状况下,用户可将异地灾备实例切换为主实例,保障业务可用性。

一致性

搭建事前、事中、事后三层数据安全防护网,提供双机热备、同城、异地三中心部署架构,充分满足金融级合规一致性、可靠性要求

运维成本低

阿里云数据库专家多年数据库运维经验产品化,免去90%运维烦恼

备份恢复支持自定义备份策略,通过克隆实例恢复到任意时间点,找回误删数据

版本升级MySQL小版本自动在线热升级,及时修复已知Bug

监控报警资源和引擎双重监控,链接云监控自定义报警策略

故障切换秒级探测,分钟级切换,90% 连接保持无影响

性能诊断提供专家级自助式服务,解决60%的性能问题

易扩展

多种系列选配提供单机基础版和双机高可用版,贴近业务所需

自由弹性可按需随时升级内存、磁盘空间,紧随业务发展

独享高配独享套餐、独占物理机提供更稳定的性能,更优惠的价格;单实例最高支持60核CPU、470G内存, 50000 IOPS,3 TB 存储空间

只读实例横向扩展数据库读能力;每个只读实例拥有独立的链接地址,可由应用端控制压力分配

迁移方案

客户目标

搭建和构建在一个有数据强一致性保障的关系型数据库上,同时满足金融级别的可靠性要求,数据安全防护,提供双机热备、同城灾备的部署架构,充分满足金融级合规的要求。

迁移方法

迁移前做好充分的技术预演,制定详细的迁移方案,并且有充足的数据回滚方案。

做好完备的迁移前测试,使用尽可能模拟线上环境的测试环境,模拟整套迁移和回滚流程,保障数据的一致性。

使用阿里云的数据迁移工具DTS,最好迁移前的预检查、迁移中的增量迁移和迁移后的数据校验工作,保障迁移过程顺利且数据一致性。

迁移后最好数据的回流增量,以备故障后的回滚操作。

稳定运行一段时间后,源数据库备份销毁,正式迁移成功。

整体迁移步骤

云上资源评估-->资源准备-->测试环境测试-->系统停机-->全量迁移-->系统迁移-->系统测试割接-->数据增量回流

31b949b80c5822c618afbccdaa5270e3a7ebe61c

遇到的问题和解决方案

1 客户自建的Mysql是最新的5.7版本,但云上的RDS高可用的版本只支持5.6,所以涉及到一个降版本的迁移,风险需要评估。

解决方案:首先评估客户的5.7版本是哪个小版本,评估后发现版本不是很高,所以有些特性并没有使用;第二 评估5.6和5.7版本的区别,主要是在字段的blob类型上的区别,评估后发现客户并没有使用此类型字段;第三 在测试环境做好测试,根据备份文件尝试恢复迁移,确保数据库正式迁移没问题。第四 做好灾备方案,发现问题,及时回退。

2 在测试环境测试过程中发现数据全量到RDS以后,再增量回流,数据预检查失败。

原因:原因是客户的表名存在大小写的情况,而DTS迁移会忽略大小写,将表名变成全部小写,导致回流源数据增量的时候预检查失败,因为表名不一致。解决方案:两种解决方案 1. 使DTS的后台将预检查结果手工置为成功,跳过预检查进行增量 ,存在风险。2.将原表名里存在大写的表名手工改为小写,改成一致,然后再做增量迁移,客户最终评估后选择解决方案1。

3 客户在做从自建Mysql到RDS增量的时候失败。

原因:由于客户自建的mysql没有开启binlog日志,导致增量时无法读取日志,所以增量失败,需要开启该选项。解决方案:由于客户不知道如何配置该选项,同时担心重启源数据库的风险,故客户放弃配置,同时也放弃增量,愿意寻找业务低峰期进行停机全量迁移,同时数据量也不大,停机时间短,所以选择该方案执行。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
9天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
45 2
|
6天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
14 0
|
21天前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
50 0
|
3天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
13 0
|
11天前
|
SQL 关系型数据库 MySQL
MySQL环境搭建——“MySQL数据库”
MySQL环境搭建——“MySQL数据库”
|
11天前
|
SQL NoSQL 关系型数据库
初识MySQL数据库——“MySQL数据库”
初识MySQL数据库——“MySQL数据库”
|
13天前
|
关系型数据库 MySQL 数据库
数据库基础(mysql)
数据库基础(mysql)
|
13天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
39 3
|
14天前
|
存储 关系型数据库 MySQL
【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-02
【4月更文挑战第11天】数据库索引使用规则:`AND`用`OR`不用,正用反不用,范围中断。索引带来空间和内存代价,包括额外磁盘空间、内存占用和数据修改时的维护成本。面试中可能涉及B+树、聚簇索引、覆盖索引等知识点。MySQL采用B+树,因其利于范围查询和内存效率。数据库不使用索引可能因`!=`、`LIKE`、字段区分度低、特殊表达式或全表扫描更快。索引与NULL值处理在不同数据库中有差异,MySQL允许NULL在索引中的使用。
18 3
|
15天前
|
关系型数据库 MySQL 数据库连接
Django(四):Django项目部署数据库及服务器配置详解(MySQL)
Django(四):Django项目部署数据库及服务器配置详解(MySQL)
51 11