如果你还在停服迁移数据,那你就out啦!!

本文涉及的产品
数据传输服务 DTS,同步至DuckDB 3个月
简介: 很多数据库提供的原生迁移工具只能进行全量数据拷贝,为了保证迁移数据一致性,要求业务在数据迁移之前需停止服务。所以这种传统的迁移方案对业务影响极大。为降低数据迁移门槛,阿里云数据传输DTS推出不停服迁移功能。使用不停服迁移功能,可实现整个数据迁移过程中,业务停服时间降低到分钟级别

简介

数据库迁移是系统发展各个阶段,都会遇到的问题。例如数据库压力达到瓶颈需要拆分,业务系统需要迁移上云,测试数据构造等。很多数据库都提供了原生的迁移工具,例如MySQL的mysqldump,SQLServer的SSMA,Oracle的imp/exp。然而这些工具都只能进行全量数据拷贝,为了保证迁移数据一致性,要求业务在数据迁移之前需要停止服务。所以,这种传统的迁移方案对业务影响极大。为降低数据迁移门槛,阿里云数据传输DTS推出不停服迁移功能。使用不停服迁移功能,可实现整个数据迁移过程,业务停服时间降低到分钟级别

传统数据库迁移流程

本小节简单介绍传统全量迁移方案的整个数据迁移流程。
_

如上图所示,传统数据库迁移流程包括以下几个步骤:
(1) 应用停止服务
(2) 使用工具开始进行数据迁移
(3)启动应用,重新提供服务

所以,整个数据迁移过程当中,应用需要全程停服。如果数据量比较大的情况下,整个应用停服时间可能高达几个小时甚至数天,这对应用影响极大。

不停服数据库迁移流程

本小节简单介绍数据传输DTS提供的增量迁移方案的整个数据迁移流程。
_

如上图所示,数据传输DTS提供的不停服迁移流程包括以下几个步骤:
(1) 使用DTS,配置数据迁移任务
(2) 迁移任务进入增量数据同步阶段时,当增量数据追平后,将源库应用停服,数据同步快速追平后,将业务切换到目标数据库,启动业务开启服务

所以,整个数据迁移过程当中,应用只需要在要切换之前停服,停服时间降低到分钟级别,极大得降低了数据迁移对业务的影响。

不停服数据库迁移技术原理

本小节简单介绍数据传输DTS提供的不停服迁移的实现原理。

_

如上如所示,DTS在全量迁移之前,会先在后台启动一个增量日志拉取及解析程序。这个程序会实时获取源数据库在全量迁移过程中产生的任何增量日志,解析并将其封装为DTS自己的数据格式存储在本地存储系统中。当全量迁移完成后,增量数据回放模块,会去拉取模块中读取存储的增量日志数据,然后通过解析、过滤、封装等步骤,最终拼装成要回放的SQL语句,回放到目标数据库,从而实现源数据库同目标数据库之间的增量数据实时同步。

小结

不停服迁移功能是阿里云数据传输DTS提供的低门槛数据迁移方式。目前可以实现MySQL、SQLServer、PostgreSQL的不停服迁移,未来DTS还将提供Oracle、MongoDB、Redis的不停服迁移功能。立即体验 >>

不停服迁移功能只是数据传输DTS提供的一种迁传输方式,除数据迁移之外,数据传输还提供了数据实时同步,实时数据订阅等多种传输能力,通过数据实时同步可以实现数据异地灾备加速跨境业务访问速度打通oltp->olap数据通道 等场景。通过数据订阅可以实现轻量级缓存更新核心业务异步解耦 等业务场景。如需了解数据传输更多详情,请猛击数据传输

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
目录
相关文章
|
Kubernetes API 数据库
Crossplane - 比 Terraform 更先进的云基础架构管理平台?
Crossplane - 比 Terraform 更先进的云基础架构管理平台?
|
SQL 关系型数据库 MySQL
如何实现 MySQL 的读写分离?
本文介绍了 MySQL 读写分离的实现方式及其主从复制原理,解释了如何通过主从架构提升读并发能力。重点分析了主从同步延时问题及解决方案,如半同步复制、并行复制等技术手段,并结合实际案例探讨了高并发场景下的优化策略。文章还提醒开发者在编写代码时需谨慎处理插入后立即查询的情况,避免因主从延时导致的数据不一致问题。
1398 44
如何实现 MySQL 的读写分离?
|
NoSQL Java Redis
Redis6入门到实战------思维导图+章节目录
这篇文章提供了Redis 6从入门到实战的全面学习资料,包括思维导图和各章节目录,涵盖了NoSQL数据库、Redis安装配置、数据类型、事务、持久化、主从复制、集群等核心知识点。
Redis6入门到实战------思维导图+章节目录
|
存储 JavaScript 算法
JS垃圾回收机制有哪些?
本文介绍了JavaScript中的垃圾回收(GC)机制,包括其概念、产生原因及重要性。文章详细讲解了几种常见的垃圾回收算法,如引用计数、标记清除、标记整理和分代回收,并分析了它们的优缺点。最后总结了垃圾回收对JS开发的重要作用,强调了其在自动内存管理和性能优化中的关键地位。
763 2
JS垃圾回收机制有哪些?
|
SQL 关系型数据库 MySQL
详解MySQL覆盖索引、索引下推
1.覆盖索引 1.1.概述 覆盖索引,是为了避免“回表查询”,从而降低查询耗时的一种使用索引的方法,所以要聊覆盖索引首先我们要知道什么是"回表查询,“回表查询”是因为MySQL的索引结构决定的,是因为非聚集索引要找聚集索引拿数据而出现的现象,所以我们又要先了解MySQL中的聚集索引和非聚集索引。 文章的脉络就是先聊聚集索引、非聚集索引是怎么带来了“回表查询”的问题,然后怎么用用覆盖索引解决这个问题。
2632 0
|
SQL 存储 Java
mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集 需求: 1.直接执行前端传来的任何sql语句,parameterType="String", 2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回具体的bean类型,因此设置resultType="java.util.Map",但是Map并不保证存入取出顺序一致, 因此设置resultType="java.util.LinkedHashMap",为保证查询的字段值有序(存入与取出顺序一致)所以采用LinkedHashMap。
2836 0
|
JavaScript
vue3 vite配置@根路径---解决:找不到模块“./xx/xxx.vue”或其相应的类型声明
vue3 vite配置@根路径---解决:找不到模块“./xx/xxx.vue”或其相应的类型声明
4801 0
|
小程序
微信小程序无法触发onReachBottom的解决方案
这篇文章提供了解决微信小程序中`onReachBottom`事件无法触发的问题的方案。问题的原因可能是`onReachBottom`方法重复,解决方案是删除系统自动生成的该方法。
|
安全 Linux
探索Linux中的`aulast`命令:审计用户的登录历史
`aulast`是Linux审计系统中的工具,用于查看用户登录历史。它显示登录时间、终端、IP地址等信息,帮助管理员分析登录模式和检测入侵。命令语法包括选项如 `-i` 显示IP地址,`-l` 显示详细信息,`-n` 指定记录数,`-s` 和 `-e` 指定时间范围。在使用前需确保`auditd`已启用并配置好规则。