什么是数据传输服务DTS?
数据传输服务(Data Transmission Service,简称DTS)是天翼云提供的一种集数据迁移和数据实时同步于一体的数据传输服务。DTS作为数据流通的底座,集数据迁移、数据实时同步于一体,适用于帮助用户实现数据库不停业务快速稳定地迁移上云、构建数据实时同步通道实现数据库灾备/双活。DTS具备支持多数据源实时同步和迁移、企业级加密和脱敏等特性,其采用自研的DTS同步引擎,数据同步性能达数据库原生同步的四倍以上。
什么是区域和可用区?
区域
区域指文档数据库服务所在的物理位置。
同一区域内可用区之间内网互通,不同区域之间内网不互通。
公有云在不同地区有数据中心,与此相应,文档数据库服务可用于不同地区。通过在不同地区开通文档数据库服务,可以将应用程序设计的更接近特定客户的要求,或满足不同地区的法律或其他要求。
可用区
每个区域包含许多不同的称为“可用区”的位置,即在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。每个可用区都被设计成不受其他可用区故障的影响,并提供低价、低延迟的网络连接,以连接到同一地区其他可用区。通过使用独立可用区内的文档数据库服务,可以保护您的应用程序不受单一位置故障的影响。DTS也支持将副本集实例跨3个可用区部署,即副本集主节点、备节点和隐藏节点分别部署在3个可用区内,可以实现跨可用区容灾。
数据传输服务DTS是否支持关系型数据库的HA实例迁移?
目前DTS支持源库为MySQL的HA实例迁移,但需要满足如下条件:
源数据库实例需开启GTID模式。
HA实例需提供vip。
数据传输服务DTS对源数据库有什么要求?
目前数据传输服务在公测期间,支持MySQL到MySQL的数据迁移、PostgreSQL到PostgreSQL的数据迁移和MySQL到MySQL的数据同步。对源数据库的要求如下:
MySQL到MySQL的数据迁移:支持RDS for MySQL或自建 MySQL 5.6/5.7/8.0,且自建数据库的源数据库版本不得高于目标数据库版本。
PostgreSQL到PostgreSQL的数据迁移:支持RDS for PostgreSQL或自建PostgreSQL(版本12),且源数据库版本不得高于目标数据库版本。
MySQL到MySQL的数据同步:支持RDS for MYSQL或自建 MySQL 5.6/5.7/8.0,且源数据库版本不得高于目标数据库版本。
数据传输服务DTS对目标数据库有什么要求?
目前数据传输服务在公测期间,支持MySQL到MySQL的数据迁移、PostgreSQL到PostgreSQL的数据迁移和MySQL到MySQL的数据同步。对目标数据库的要求如下:
MySQL到MySQL的数据迁移:支持RDS for MYSQL,且自建数据库的源数据库版本不得高于目标数据库版本。
PostgreSQL到PostgreSQL的数据迁移:支持RDS for PostgreSQL,且源数据库版本不得高于目标数据库版本。
MySQL到MySQL的数据同步:支持RDS for MySQL,且源数据库版本不得高于目标数据库版本。
数据传输服务是否采用了并发技术?
数据传输服务DTS的全量迁移采用了并发技术,包括:
多表并发迁移,根据配置支持多张表的数据同时进行迁移。
单表写入目标库并发,针对每个表的迁移,在写入目标库时,启用多线程并发写入多批数据,以解决读写速度不均衡问题。
数据传输服务是否支持公有云和专属云间的数据库迁移?
当前支持专属云的数据迁移至天翼云(入云场景),不支持天翼云数据迁移至专属云(出云场景)。
数据传输服务支持将MySQL迁移到PostgreSQL吗?
不支持,目前公测期间,开放支持的链路有:
数据迁移:MySQL->MySQL,PostgreSQL->PostgreSQL
数据同步:MySQL->MySQL
数据传输服务DTS是否支持某个时间段的数据复制?
暂不支持。
数据传输服务支持断点续传吗?
支持。
DTS全量迁移支持表级和指定条件下的行级断点续传,当任务暂停或任务异常重启后,已经完成迁移的表不会重复迁移,如果满足相关条件,默认会从断点行开始迁移。
DTS增量迁移通过记录位点的方式支持断点续传,当任务暂停或任务异常重启后,会从上次完成的位点开始增量迁移。
数据迁移和数据同步有什么区别?
数据迁移:主要用于上云迁移,例如将本地数据库、ECS上的自建数据库或第三方云数据库迁移至天翼云数据库。它属于一次性任务,迁移完成后即可释放实例。
数据同步:主要用于两个数据源之间的数据实时同步,适用于异地多活、数据灾备实时数据仓库等场景。它属于持续性任务,任务创建后会一直同步数据,保持数据源和数据目标的数据一致性。
数据传输服务出现数据膨胀怎么办?
数据库在写操作时,会出现实际写入磁盘的数据比要迁移的数据量大的现象,即写放大。这是由于现代数据库系统中使用的写时复制和日志等技术所引起的,一般建议目标库服务器预留的磁盘空间为源库数据占用磁盘空间的1.5倍。
数据传输服务怎样选择RDS只读实例?
数据传输服务没法自动选择只读实例,在迁移过程中读取源库哪个实例的数据取决于配置源库的ip端口或实例信息。
数据传输服务对源数据库和目标数据库有什么影响?
全量迁移:全量迁移对源库和目标库有比较大的影响,会占用大量数据库所有服务器的磁盘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任务状态会变为异常。待网络正常后,可重启任务,继续迁移。
DTS是否支持只读实例的备库作为源库?
DTS不需要写源库,但是涉及到增量迁移/同步的场景,DTS需要读取源库的增量日志(例如MySQL的binlog日志),这种场景下需确保源库只读实例的日志完整性。