什么是数据传输服务DTS?
数据传输服务(Data Transmission Service,简称DTS)是天翼云提供的一种集数据迁移和数据实时同步于一体的数据传输服务。DTS作为数据流通的底座,集数据迁移、数据实时同步于一体,适用于帮助用户实现数据库不停业务快速稳定地迁移上云、构建数据实时同步通道实现数据库灾备/双活。DTS具备支持多数据源实时同步和迁移、企业级加密和脱敏等特性,其采用自研的DTS同步引擎,数据同步性能达数据库原生同步的四倍以上。
什么是区域和可用区?
区域
DTS的区域指DTS服务所在的物理位置。
同一区域内可用区之间内网互通,不同区域之间内网不互通。
公有云在不同地区有数据中心,与此相应,DTS服务可用于不同地区。通过在不同地区开通数据传输服务DTS,可以将应用程序设计的更接近特定客户的要求,或满足不同地区的法律或其他要求。
可用区
每个区域包含许多不同的称为“可用区”的位置,即在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。每个可用区都被设计成不受其他可用区故障的影响,并提供低价、低延迟的网络连接,以连接到同一地区其他可用区。通过使用独立可用区内的DTS服务,可以保护您的应用程序不受单一位置故障的影响。当前阶段,DTS只支持单可用区部署,待转商后将提供跨可用区部署能力、实现跨可用区容灾。
数据传输服务DTS是否支持关系型数据库的HA实例迁移?
对于源数据库实例为MySQL的情况,DTS支持HA迁移。以下是一些条件和说明:
- GTID:源数据库实例需要开启GTID(Global Transaction Identifier)模式。GTID 为全局事务ID,用于保证提交的事务在主从复制中有唯一的ID。
- HA实例的VIP:HA实例需要提供虚拟IP(VIP),以便在故障切换时可以自动切换到备用实例。
在满足上述条件的情况下,DTS可以实现MySQL数据库的HA实例迁移。当迁移过程中源数据库实例短暂断开连接时,DTS会尝试自动重连,并从断开连接前的位点接续之前的迁移任务。从而确保数据的连续性和一致性。
数据传输服务DTS对源数据库有什么要求?
目前数据传输服务支持MySQL到MySQL、PostgreSQL到PostgreSQL、SQL Server到SQL Server的数据迁移和数据同步。支持DDS/MongoDB->DDS/MongoDB的数据迁移。对源数据库的要求如下:
- MySQL到MySQL的数据迁移/数据同步:支持RDS for MySQL或自建 MySQL 5.6部分版本/5.7/8.0,且自建数据库的源数据库版本不得高于目标数据库版本。
- PostgreSQL到PostgreSQL的数据迁移/数据同步:支持RDS for PostgreSQL或自建PostgreSQL 9.4/9.5/9.6/10/11/12/13/14/15,且源数据库版本不得高于目标数据库版本。
- DDS/MongoDB到DDS/MongoDB的数据迁移:支持DDS 3.0/4.0(副本集)或自建MongoDB 3.4/4.0/4.2/4.4/5.0/6.0(副本集),目标库大版本号建议不低于源库。
- SQL Server到SQL Server的数据迁移/数据同步:支持RDS for SQL Server 2016 标准版/2016 企业版或自建SQL Server 2016 标准版/2016 企业版,且源数据库版本不得高于目标数据库版本。
数据传输服务DTS对目标数据库有什么要求?
目前数据传输服务支持MySQL到MySQL、PostgreSQL到PostgreSQL、SQL Server到SQL Server的数据迁移和数据同步,支持DDS/MongoDB->DDS/MongoDB的数据迁移。对目标数据库的要求如下:
- MySQL到MySQL的数据迁移/数据同步:支持RDS for MYSQL,且自建数据库的源数据库版本不得高于目标数据库版本。
- PostgreSQL到PostgreSQL的数据迁移/数据同步:支持RDS for PostgreSQL,且源数据库版本不得高于目标数据库版本。
- DDS/MongoDB到DDS/MongoDB的数据迁移:支持DDS,且目标库大版本号建议不低于源库。
- SQL Server到SQL Server的数据迁移/数据同步:支持RDS for SQL Server,且源数据库版本不得高于目标数据库版本。
数据传输服务是否采用了并发技术?
数据传输服务DTS的全量迁移采用了并发技术,包括:
- 多表并发迁移,根据配置支持多张表的数据同时进行迁移。
- 单表写入目标库并发,针对每个表的迁移,在写入目标库时,启用多线程并发写入多批数据,以解决读写速度不均衡问题。
数据传输服务是否支持公有云和专属云间的数据库迁移?
当前支持专属云的数据迁移至天翼云(入云场景),不支持天翼云数据迁移至专属云(出云场景)。
数据传输服务DTS支持的迁移场景请参见用户指南-数据迁移-迁移方案概览,具体操作方法请参见用户指南-数据迁移-入云。
数据传输服务支持将MySQL迁移到PostgreSQL吗?
暂不支持,目前开放支持的链路有:
- 数据迁移:MySQL->MySQL,PostgreSQL->PostgreSQL,DDS/MongoDB->DDS/MongoDB,SQL Server->SQL Server。
- 数据同步:MySQL->MySQL,PostgreSQL->PostgreSQL,SQL Server->SQL Server。
数据传输服务DTS是否支持某个时间段的数据迁移?
暂不支持。
数据传输服务DTS目前只支持结构迁移、全量迁移、增量迁移几种迁移类型,具体请参见用户指南-数据迁移-迁移方案概览。
数据传输服务支持断点续传吗?
支持。
DTS全量迁移支持表级和指定条件下的行级断点续传,当任务暂停或任务异常重启后,已经完成迁移的表不会重复迁移,如果满足相关条件,默认会从断点行开始迁移。
DTS增量迁移通过记录位点的方式支持断点续传,当任务暂停或任务异常重启后,会从上次完成的位点开始增量迁移。
数据迁移和数据同步有什么区别?
数据迁移:主要用于上云迁移,例如将本地数据库、ECS上的自建数据库或第三方云数据库迁移至天翼云数据库。它属于一次性任务,迁移完成后即可释放实例。
数据同步:主要用于两个数据源之间的数据实时同步,适用于异地多活、数据灾备实时数据仓库等场景。它属于持续性任务,任务创建后会一直同步数据,保持数据源和数据目标的数据一致性。
数据传输服务出现数据膨胀怎么办?
数据库在写操作时,会出现实际写入磁盘的数据比要迁移的数据量大的现象,即写放大。这是由于现代数据库系统中使用的写时复制和日志等技术所引起的,解决的办法就是目标数据库关联RDS实例必须有足够的磁盘空间,建议如下:
- 将MySQL迁移/同步到MySQL时,目标库服务器预留的磁盘空间为源库数据占用磁盘空间的2.5倍。
- 将PostgreSQL迁移到PostgreSQL时,磁盘大小建议取以下两种中的最小值:
- 源库待迁移数据量大小的1.5倍。
- 源库待迁移数据量大小加200GB。
数据传输服务怎样选择RDS只读实例作为源库来完成数据传输?
数据传输服务支持选择天翼云RDS-MySQL只读实例作为源库来完成数据传输。天翼云RDS-MySQL只读实例为单个物理节点的架构(没有备节点),采用MySQL的原生复制功能,主实例和只读实例之间的数据同步不受网络延时的影响。
当前DTS提供公网EIP和内网VPC两种网络传输方式,选择天翼云RDS-MySQL只读实例作为源库时,根据网络连接方式的不同,操作略有不同:
- 如果是公网EIP传输,用户可以在确保MySQL只读实例绑定了EIP的前提下,手工输入只读实例的EIP/PORT信息,完成源库的选择。
- 如果是采用内网VPC传输,受限于DTS产品设计约束,用户默认只能选取只读实例对应的主实例作为源库。
具体操作请参见用户指南-数据迁移-实例配置和实例编辑-配置迁移实例具体步骤部分内容。
他云只读实例是否可以作为DTS数据传输任务的源库,取决于他云的设计和使用规范。在配置之前,用户需明确这一点。
数据传输服务对源数据库和目标数据库有什么影响?
在进行全量迁移时,数据传输服务会对源数据库和目标数据库产生一定影响。这主要体现在数据库所在服务器的磁盘IO和网络带宽方面。在全量迁移阶段,数据传输服务需要快速读取源数据库中大量的存量数据,并将其传输到目标数据库,这会给源数据库和目标数据库的服务器带来较大的读/写IO和网络带宽压力。因此,建议在业务低峰期进行全量迁移,以确保业务正常运行。如果必须在正常业务期间进行全量迁移,可以通过限制传输速率的方式,以保障业务的使用体验。
对于增量迁移,它通过读取源数据库的增量日志来捕捉数据变化。增量迁移对源数据库的影响较小,而对目标数据库的影响则取决于增量数据的产生速率和传输速率。通常情况下,增量迁移对目标数据库的影响较小。
数据传输服务需要源数据库停止业务吗?
不需要。
DTS通过全量迁移+增量迁移结合的方式提供热迁移功能,最大程度保证了业务的连续性,对业务影响最小化。数据传输的过程中,源数据库不需要停止业务,但需注意全量和增量不同阶段对数据库产生的影响。
影响DTS任务速度的因素以及如何预估任务耗时?
迁移速度的影响因素
- 源库的读取吞吐能力越高,迁移速度越快,耗时越少。
- 目标库的写入吞吐能力越高,迁移速度越快,耗时越少。
- 可用的网络带宽越高,迁移速度越快,耗时越少。
- 网络延迟越小、网络质量越好,迁移速度越快,耗时越少。
- DTS实例规格越大,迁移速度越快,耗时越少。
- 源库增量数据产生的速度越快,DTS任务追平增量数据的耗时越长。
- 按表拆分为多个DTS任务,可以提升总体的迁移性能。
迁移时间的评估
影响迁移速度的因素有很多,因此没有通用方式能够评估迁移时间。
DTS任务是否可以修改迁移/同步对象?
数据迁移任务:已创建成功但未启动的状态下,可以修改迁移对象,任务启动后,不再支持修改对象。具体操作请参见迁移对象管理。
数据同步任务:已创建成功但未启动的状态下,可以修改同步对象,任务启动后,不再支持修改对象。具体操作请参见同步对象管理。
DTS是否支持同步同一实例下的不同库?
DTS实时同步任务具有对象名映射功能,通过修改目标数据库对象名称,使数据库对象在源数据库和目标数据库中的命名不同,从而实现同一实例不同库之间的同步。
修改数据同步对象的操作请参见同步对象管理章节的对象名映射部分的内容。
DTS的任务状态会受到源或目标数据库哪些操作的影响?
以天翼云关系数据库MySQL版举例说明,以下操作可能会影响DTS任务状态:
- 数据库实例异常:DTS会自动重试建立连接。若重试不成功,待数据库实例正常后,可重启任务,继续迁移。
- 数据库实例升级:数据库内核升级会重启实例导致DTS连接短暂中断。在此期间,DTS会自动重试。若重试仍无法恢复连接,待数据库实例状态正常后,可重启任务,继续迁移。
- 数据库实例重启:重启数据库实例将导致DTS连接暂时中断,在此期间,DTS会自动重试。若重试仍无法恢复连接,待数据库实例状态正常后,可重启任务,继续迁移。
- 数据库实例规格变更:规格变更会重启数据库导致DTS连接暂时中断,在此期间,DTS会自动重试。若重试仍无法恢复连接,待数据库实例状态正常后,可重启任务,继续迁移。
- 会话连接数限制:DTS任务需要一定数量的源和目标端会话数,当数据库连接数不足时,可能会导致DTS任务失败,用户可在调整数据库连接数后,可重启任务,继续迁移。
- 数据库实例用户密码修改:修改数据库用户密码可能会导致DTS连接失败,可在暂停任务后编辑任务的数据库密码为正确密码,重启任务,继续迁移。
- 数据库实例用户权限修改:修改数据库用户权限可能会导致DTS权限不足,导致任务失败。重新为迁移用户赋权后,重启任务,继续迁移。
- 源库日志清理:当源库binlog日志被清理时,DTS无法从源库获取到当前同步位点后的日志,导致任务失败(例如增量阶段失败)。用户可以重新创建同步任务在新的日志位点上进行同步。
- 数据库参数修改:DTS任务在启动前的预检查阶段会对源数据库和目标数据库的必要参数进行检查,在预检查完成后到任务结束前,不建议对数据库参数进行修改,避免因为修改参数导致任务失败。如果参数修改导致任务失败,用户可以尝试在恢复参数后,重启任务,继续迁移。
- 网络抖动:网络抖动造成DTS无法连接数据库,DTS会自动重试建立连接,若重试不成功,DTS任务状态会变为异常。待网络正常后,可重启任务,继续迁移。