阿里云服务器ECS    
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新 [咨询更多]
阿里云存储OSS
简单易用、多重冗余、数据备份高可靠、多层次安全防护安全性更强、低成本 [咨询更多]
阿里云数据库RDS
稳定可靠、可弹性伸缩、更拥有容灾、备份、恢复、监控、迁移等方面的全套解决方案 [咨询更多]
阿里云安全产品
DDoS高防IP、web应用防火墙、安骑士、sll证书、态势感知众多阿里云安全产品热销中 [咨询更多]
阿里云折扣优惠    
云服务器ECS、数据库、负载均衡等产品新购、续费、升级联系客服获取更多专属折扣 [咨询更多]
PolarDB与其它数据库的数据同步阿里云MySQL云原生数据库
2020-11-7    点击量:

  典名科技本文主要介绍阿里云MySQL云原生数据库的PolarDB与其它数据库的数据同步。从RDS MySQL同步至PolarDB MySQL、从PolarDB MySQL同步至RDS MySQL、从通过专线、VPN网关或智能接入网关接入的自建MySQL同步至PolarDB MySQL、从PolarDB MySQL同步至云原生数据仓库AnalyticDB PostgreSQL、从ECS上的自建MySQL同步至PolarDB MySQL、从PolarDB MySQL同步至Datahub、从PolarDB MySQL同步到Kafka、从PolarDB MySQL同步至云原生数据仓库AnalyticDB MySQL。希望你帮助到您。阿里云数据库

  从RDS MySQL同步至PolarDB MySQL

PolarDB是阿里巴巴自主研发的下一代关系型分布式云原生数据库,可完全兼容MySQL,具备简单易用、高性能、高可靠、高可用等优势。通过数据传输服务DTS(Data Transmission Service),您可以将RDS MySQL同步至PolarDB MySQL。

前提条件

已创建PolarDB MySQL集群

注意事项

  • DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据同步前评估源库和目标库的性能,同时建议您在业务低峰期执行数据同步(例如源库和目标库的CPU负载在30%以下)。
  • 如果同步对象为单个或多个表(非整库),那么在数据同步时,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
    注意 为避免同步失败,数据同步期间您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更。
  • 全量初始化过程中,并发INSERT会导致目标集群的表碎片,全量初始化完成后,目标集群的表空间比源库的表空间大。
  • 如果数据同步的源库没有主键或唯一约束,且记录的全字段没有唯一性,可能会出现重复数据。

支持同步的SQL操作

操作类型SQL操作语句
DMLINSERT、UPDATE、DELETE、REPLACE
DDL
  • ALTER TABLE、ALTER VIEW
  • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW
  • DROP INDEX、DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

支持的同步架构

  • 一对一单向同步
  • 一对多单向同步
  • 级联单向同步
  • 多对一单向同步

关于各类同步架构的介绍及注意事项,请参见数据同步拓扑介绍

功能限制

  • 不兼容触发器

    当同步对象为整个库,且库中的触发器(TRIGGER)会更新库内某个表时,可能导致源和目标库的数据不一致。

  • RENAME TABLE限制

    RENAME TABLE操作可能导致同步数据不一致。例如同步对象只包含某个表,如果同步过程中源实例对该表执行了重命名操作,那么该表的数据将不会同步到目标库。为避免该问题,您可以在数据同步配置时将该表所属的整个数据库作为同步对象。

操作步骤

  1. 购买数据同步作业。
    说明 购买时,选择源实例为MySQL、目标实例为PolarDB,并选择同步拓扑为单向同步
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据同步
  4. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  5. 定位至已购买的数据同步实例,单击配置同步链路
  6. 配置同步通道的源实例及目标实例信息。
    配置源和目标实例信息
    类别配置说明
    同步作业名称DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息实例类型选择RDS实例
    实例地区购买数据同步实例时选择的源实例地域信息,不可变更。
    数据库账号填入连接RDS实例的数据库账号。
    说明
    • 该账号需具备REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。
    • 当源RDS实例的数据库类型为MySQL 5.5MySQL 5.6时,无需配置数据库账号数据库密码
    数据库密码填入数据库账号的密码。
    连接方式根据需求选择非加密连接SSL安全连接。如果设置为SSL安全连接,您需要提前开启RDS实例的SSL加密功能。
    目标实例信息实例类型固定为PolarDB,不可变更。
    实例地区购买数据同步实例时选择的目标实例地域信息,不可变更。
    PolarDB实例ID选择目标PolarDB集群ID。
    数据库账号填入PolarDB集群的数据库账号。
    说明 用于数据同步的数据库账号需具备目标同步对象的ALL权限。
    数据库密码填入数据库账号的密码。
  7. 单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加到源RDS实例和目标PolarDB集群的白名单中,用于保障DTS服务器能够正常连接源实例和目标集群。
  8. 配置目标已存在表的处理模式和同步对象。
    配置处理模式和同步对象
    配置项目配置说明
    目标已存在表的处理模式
    • 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
      说明 如果目标库中同名的表不方便删除或重命名,您可以设置同步对象在目标实例中的名称来避免表名冲突。
    • 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
      警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:
      • 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在初始化阶段会保留目标库中的该条记录;在增量同步阶段则会覆盖目标库的该条记录。
      • 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
    选择同步对象

    源库对象框中单击待同步的对象,然后单击向右小箭头图标将其移动至已选择对象框。

    同步对象的选择粒度为库、表。

    说明
    • 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作都会同步至目标库。
    • 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标集群中的名称,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称
  9. 上述配置完成后,单击页面右下角的下一步
  10. 配置同步初始化的高级配置信息。
    数据同步高级设置
    说明 同步初始化类型细分为:结构初始化,全量数据初始化。选中结构初始化全量数据初始化后,DTS会在增量数据同步之前,将源数据库中待同步对象的结构和存量数据,同步到目标数据库。
  11. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  12. 预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
  13. 等待同步作业的链路初始化完成,直至处于同步中状态。
    您可以在数据同步页面,查看数据同步作业的状态。查看同步作业状态

  从PolarDB MySQL同步至RDS MySQL

如何使用数据传输服务DTS(Data Transmission Service),将PolarDB MySQL同步至RDS MySQL,实现增量数据的实时同步。

前提条件

  • 已购买PolarDB MySQL集群。
  • PolarDB MySQL集群已开启Binlog。

注意事项

  • DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据同步前评估源库和目标库的性能,同时建议您在业务低峰期执行数据同步(例如源库和目标库的CPU负载在30%以下)。
  • 如果同步对象为单个或多个表(非整库),那么在数据同步时,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
    注意 为避免同步失败,数据同步期间您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更。
  • 全量初始化过程中,并发INSERT会导致目标集群的表碎片,全量初始化完成后,目标集群的表空间比源库的表空间大。
  • 如果数据同步的源库没有主键或唯一约束,且记录的全字段没有唯一性,可能会出现重复数据。

支持同步的SQL操作

操作类型SQL操作语句
DMLINSERT、UPDATE、DELETE、REPLACE
DDL
  • ALTER TABLE、ALTER VIEW
  • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW
  • DROP INDEX、DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

支持的同步架构

  • 一对一单向同步
  • 一对多单向同步
  • 级联单向同步
  • 多对一单向同步

关于各类同步架构的介绍及注意事项。

功能限制

  • 不兼容触发器

    当同步对象为整个库,且库中的触发器(TRIGGER)会更新库内某个表时,可能导致源和目标库的数据不一致。

  • RENAME TABLE限制

    RENAME TABLE操作可能导致同步数据不一致。例如同步对象只包含表A,如果同步过程中源实例将表A重命名为表B,那么表B将不会被同步到目标库。为避免该问题,您可以在数据同步配置时,选择同步表A和表B所在的整个数据库作为同步对象。

操作步骤

  1. 购买数据同步作业。
    说明 购买时,选择源实例为PolarDB,选择目标实例为MySQL,并选择同步拓扑为单向同步
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据同步
  4. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  5. 定位至已购买的数据同步实例,单击配置同步链路
  6. 配置同步通道的源实例及目标实例信息。
    配置源实例和目标实例信息
    类别配置说明
    同步作业名称DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息实例类型固定为PolarDB实例,不可变更。
    实例地区购买数据同步实例时选择的源实例地域信息,不可变更。
    PolarDB实例ID选择源PolarDB集群ID。
    数据库账号填入源PolarDB集群的数据库账号。
    数据库密码填入数据库账号对应的密码。
    目标实例信息实例类型选择为RDS实例
    实例地区购买数据同步实例时选择的目标实例地域信息,不可变更。
    数据库账号填入目标RDS实例的数据库账号。
    数据库密码填入数据库账号对应的密码。
    说明 当目标RDS实例的数据库类型为MySQL 5.5MySQL 5.6时,无需配置数据库账号数据库密码
    连接方式根据需求选择非加密连接SSL安全连接。如果设置为SSL安全连接,您需要提前开启RDS实例的SSL加密功能。
  7. 单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加到源PolarDB集群和目标RDS实例的白名单中,用于保障DTS服务器能够正常连接源集群和目标实例。
  8. 配置目标已存在表的处理模式和同步对象。
    配置处理模式和同步对象
    配置项目配置说明
    目标已存在表的处理模式
    • 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
      说明 如果目标库中同名的表不方便删除或重命名,您可以设置同步对象在目标实例中的名称来避免表名冲突。
    • 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
      警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:
      • 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在初始化阶段会保留目标库中的该条记录;在增量同步阶段则会覆盖目标库的该条记录。
      • 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
    选择同步对象

    源库对象框中单击待同步的对象,然后单击向右小箭头图标将其移动至已选择对象框。

    同步对象的选择粒度为库、表。

    说明
    • 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作都会同步至目标库。
    • 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标集群中的名称,请使用对象名映射功能。
  9. 上述配置完成后,单击页面右下角的下一步
  10. 配置同步初始化的高级配置信息。
    数据同步高级设置
    说明 同步初始化类型细分为:结构初始化,全量数据初始化。选中结构初始化全量数据初始化后,DTS会在增量数据同步之前,将源数据库中待同步对象的结构和存量数据,同步到目标数据库。
  11. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  12. 预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
  13. 等待同步作业的链路初始化完成,直至处于同步中状态。
    您可以在数据同步页面,查看数据同步作业的状态。查看同步作业状态

  从通过专线、VPN网关或智能接入网关接入的自建MySQL同步至PolarDB MySQL

PolarDB是阿里巴巴自主研发的下一代关系型分布式云原生数据库,可完全兼容MySQL,具备简单易用、高性能、高可靠、高可用等优势。通过数据传输服务DTS(Data Transmission Service),您可以将自建的MySQL数据库同步至PolarDB MySQL,本文以通过专线、VPN网关或智能接入网关接入的自建MySQL为例介绍配置流程。

前提条件

  • 自建MySQL数据库版本为5.1、5.5、5.6、5.7或8.0版本。
  • 已经将自建MySQL数据库通过专线、VPN网关或智能接入网关接入至阿里云专有网络。
    说明 接入至阿里云专有网络后,还需要允许DTS服务器的IP地址访问自建数据库所属的网络。
  • 已创建PolarDB MySQL集群。
    说明 PolarDB MySQL集群的存储空间须大于自建MySQL数据库占用的存储空间。

注意事项

  • DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据同步前评估源库和目标库的性能,同时建议您在业务低峰期执行数据同步(例如源库和目标库的CPU负载在30%以下)。
  • 如果同步对象为单个或多个表(非整库),那么在数据同步时,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
    注意 为避免同步失败,数据同步期间您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更。
  • 全量初始化过程中,并发INSERT会导致目标集群的表碎片,全量初始化完成后,目标集群的表空间比源库的表空间大。
  • 如果数据同步的源集群没有主键或唯一约束,且记录的全字段没有唯一性,可能会出现重复数据。

支持同步的SQL操作

操作类型SQL操作语句
DMLINSERT、UPDATE、DELETE、REPLACE
DDL
  • ALTER TABLE、ALTER VIEW
  • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW
  • DROP INDEX、DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

支持的同步架构

  • 一对一单向同步
  • 一对多单向同步
  • 级联单向同步
  • 多对一单向同步

关于各类同步架构的介绍及注意事项,请参见数据同步拓扑介绍

功能限制

  • 不兼容触发器

    当同步对象为整个库,且库中的触发器(TRIGGER)会更新库内某个表时,可能导致源和目标库的数据不一致。

  • RENAME TABLE限制

    RENAME TABLE操作可能导致同步数据不一致。例如同步对象只包含某个表,如果同步过程中源实例对该表执行了重命名操作,那么该表的数据将不会同步到目标库。为避免该问题,您可以在数据同步配置时将该表所属的整个数据库作为同步对象。

准备工作

为自建MySQL创建账号并设置binlog
说明 用于数据同步的数据库账号需具备REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。

操作步骤

  1. 购买数据同步作业。
    说明 购买时,选择源实例为MySQL、目标实例为PolarDB,并选择同步拓扑为单向同步
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据同步
  4. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  5. 定位至已购买的数据同步实例,单击配置同步链路
  6. 配置同步通道的源实例及目标实例信息。
    配置源和目标实例信息
    类别配置说明
    同步作业名称DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息实例类型选择通过专线/VPN网关/智能接入网关接入的自建数据库
    实例地区购买数据同步实例时选择的源实例地域信息,不可变更。
    已和源端数据库联通的VPC选择自建数据库接入的VPC ID。
    数据库类型固定为MySQL,不可变更。
    IP地址填入自建MySQL数据库的服务器IP地址。
    端口填入自建MySQL的数据库服务端口。
    数据库账号填入为自建MySQL创建的数据库账号。
    数据库密码填入该数据库账号的密码。
    目标实例信息实例类型固定为PolarDB,不可变更。
    实例地区购买数据同步实例时选择的目标实例地域信息,不可变更。
    PolarDB实例ID选择目标PolarDB集群ID。
    数据库账号填入PolarDB集群的数据库账号。
    说明 该数据库账号需具备目标同步对象的ALL权限。
    数据库密码填入该数据库账号的密码。
  7. 单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加到目标PolarDB集群的白名单中,用于保障DTS服务器能够正常连接目标集群。
  8. 配置目标已存在表的处理模式和同步对象。
    配置处理模式和同步对象
    配置项目配置说明
    目标已存在表的处理模式
    • 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
      说明 如果目标库中同名的表不方便删除或重命名,您可以设置同步对象在目标实例中的名称来避免表名冲突。
    • 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
      警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:
      • 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在初始化阶段会保留目标库中的该条记录;在增量同步阶段则会覆盖目标库的该条记录。
      • 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
    选择同步对象

    源库对象框中单击待同步的对象,然后单击向右小箭头图标将其移动至已选择对象框。

    同步对象的选择粒度为库、表。

    说明
    • 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作都会同步至目标库。
    • 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标集群中的名称,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称
  9. 上述配置完成后,单击页面右下角的下一步
  10. 配置同步初始化的高级配置信息。
    数据同步高级设置
    说明 同步初始化类型细分为:结构初始化,全量数据初始化。选中结构初始化全量数据初始化后,DTS会在增量数据同步之前,将源数据库中待同步对象的结构和存量数据,同步到目标数据库。
  11. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  12. 预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
  13. 等待同步作业的链路初始化完成,直至处于同步中状态。
    您可以在数据同步页面,查看数据同步作业的状态。查看同步作业状态

  从PolarDB MySQL同步至云原生数据仓库AnalyticDB PostgreSQL

云原生数据仓库AnalyticDB PostgreSQL版(原分析型数据库PostgreSQL版)为您提供简单、快速、经济高效的PB级云端数据仓库解决方案。通过数据传输服务DTS(Data Transmission Service),您可以将PolarDB MySQL同步至云原生数据仓库AnalyticDB PostgreSQL,帮助您快速实现对海量数据的即席查询分析、ETL处理和可视化探索。

前提条件

  • PolarDB MySQL集群已开启Binlog,详情请参见如何开启Binlog
  • PolarDB MySQL集群中待同步的数据表必须具备主键。
  • 已创建目标云原生数据仓库AnalyticDB PostgreSQL实例,详情请参见创建云原生数据仓库AnalyticDB PostgreSQL实例

注意事项

  • DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据同步前评估源库和目标库的性能,同时建议您在业务低峰期执行数据同步(例如源库和目标库的CPU负载在30%以下)。
  • 全量初始化过程中,并发INSERT会导致目标实例的表碎片,全量初始化完成后,目标实例的表空间比源集群的表空间大。

同步限制

  • 同步对象仅支持数据表。
  • 不支持BIT、VARBIT、GEOMETRY、ARRAY、UUID、TSQUERY、TSVECTOR、TXID_SNAPSHOT类型的数据同步。
  • 暂不支持同步前缀索引,如果源库存在前缀索引可能导致数据同步失败。
  • 在数据同步时,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。

支持同步的SQL操作

  • DML操作:INSERT、UPDATE、DELETE。
  • DDL操作:ADD COLUMN、RENAME COLUMN。
    说明 不支持CREATE TABLE操作,如果您需要将新增的表作为同步对象,则需要执行新增同步对象操作。

支持的同步架构

  • 1对1单向同步。
  • 1对多单向同步。
  • 多对1单向同步。

术语对应关系

PolarDB MySQL云原生数据仓库AnalyticDB PostgreSQL
DatabaseSchema
TableTable

操作步骤

  1. 购买数据同步作业,详情请参见购买流程
    说明 购买时,选择源实例为PolarDB、目标实例为AnalyticDB PostgreSQL,并选择同步拓扑为单向同步
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据同步
  4. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  5. 定位至已购买的数据同步实例,单击配置同步链路
  6. 配置同步通道的源实例及目标实例信息。
    配置源和目标实例信息
    类别配置说明
    同步作业名称DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息实例类型固定为PolarDB实例
    实例地区购买数据同步实例时选择的源PolarDB集群的地域信息,不可变更。
    PolarDB实例ID选择PolarDB集群ID。
    数据库账号填入PolarDB集群的数据库账号。
    说明 该账号需具备待同步对象的读权限。
    数据库密码填入该数据库账号的密码。
    目标实例信息实例类型固定为AnalyticDB for PostgreSQL,无需设置。
    实例地区购买数据同步实例时选择的目标实例地域信息,不可变更。
    实例ID选择云原生数据仓库AnalyticDB PostgreSQL实例ID。
    数据库名称填入云原生数据仓库AnalyticDB PostgreSQL实例中,待同步的目标表所属的数据库名称。
    数据库账号填入云原生数据仓库AnalyticDB PostgreSQL初始账号,详情请参见设置账号
    说明 您也可以填入具备RDS_SUPERUSER权限的账号,创建方法请参见用户权限管理
    数据库密码填入数据库账号的密码。
  7. 单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加PolarDB MySQL和云原生数据仓库AnalyticDB PostgreSQL的白名单中,用于保障DTS服务器能够正常连接源集群和目标实例。
  8. 配置同步策略及同步对象。
    mysql同步至ADB4PG
    类别配置说明
    同步策略配置同步初始化默认情况下,您需要同时选中结构初始化全量数据初始化。预检查完成后,DTS会将源实例中待同步对象的结构及数据在目标实例中初始化,作为后续增量同步数据的基线数据。
    目标已存在表的处理模式
    • 清空目标表的数据

      在预检查阶段跳过同名对象存在性检查的检查项目。全量初始化之前将目标表的数据清空。适用于完成同步任务测试后的正式同步场景。

    • 忽略报错并继续执行

      在预检查阶段跳过同名对象存在性检查的检查项目。全量初始化时直接追加数据。适用于多张表同步到一张表的汇总同步场景。

    同步操作类型

    根据业务需求选择需要同步的操作类型:

    • Insert
    • Update
    • Delete
    • AlterTable
    选择同步对象

    源库对象框中单击待同步的表,然后单击向右小箭头图标将其移动至已选择对象框。

    说明
    • 同步对象的选择粒度为表。
    • 如果需要目标表中的列名称与源表不同,需要使用DTS的字段映射功能,详情请参见设置同步对象在目标实例中的名称
  9. 设置待同步的表在云原生数据仓库AnalyticDB PostgreSQL中的主键列和分布列信息。
    说明 当您在上一步中选择了结构初始化才会出现该页面。关于主键列和分布列的详细说明,请参见表的约束定义表分布键定义
  10. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  11. 预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
  12. 等待同步作业的链路初始化完成,直至处于同步中状态。
    您可以在数据同步页面,查看数据同步作业的状态。查看同步作业状态

  从ECS上的自建MySQL同步至PolarDB MySQL

PolarDB是阿里巴巴自主研发的下一代关系型分布式云原生数据库,可完全兼容MySQL,具备简单易用、高性能、高可靠、高可用等优势。通过数据传输服务DTS(Data Transmission Service),您可以将自建的MySQL数据库同步至PolarDB MySQL,本文以ECS上的自建MySQL为例介绍配置流程。

前提条件

已创建PolarDB MySQL集群,详情请参见创建PolarDB MySQL集群

注意事项

  • DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据同步前评估源库和目标库的性能,同时建议您在业务低峰期执行数据同步(例如源库和目标库的CPU负载在30%以下)。
  • 如果同步对象为单个或多个表(非整库),那么在数据同步时,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
    注意 为避免同步失败,数据同步期间您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更,详情请参见不锁表结构变更
  • 全量初始化过程中,并发INSERT会导致目标集群的表碎片,全量初始化完成后,目标集群的表空间比源库的表空间大。
  • 如果数据同步的源库没有主键或唯一约束,且记录的全字段没有唯一性,可能会出现重复数据。

支持同步的SQL操作

操作类型SQL操作语句
DMLINSERT、UPDATE、DELETE、REPLACE
DDL
  • ALTER TABLE、ALTER VIEW
  • CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW
  • DROP INDEX、DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

功能限制

  • 不兼容触发器

    当同步对象为整个库,且库中的触发器(TRIGGER)会更新库内某个表时,可能导致源和目标库的数据不一致。相关解决方案请参见源库存在触发器时如何配置同步作业

  • RENAME TABLE限制

    RENAME TABLE操作可能导致同步数据不一致。例如同步对象只包含某个表,如果同步过程中源实例对该表执行了重命名操作,那么该表的数据将不会同步到目标库。为避免该问题,您可以在数据同步配置时将该表所属的整个数据库作为同步对象。

准备工作

为自建MySQL创建账号并设置binlog
说明 用于数据同步的数据库账号需具备待同步对象的REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。

支持的同步架构

  • 一对一单向同步
  • 一对多单向同步
  • 级联单向同步
  • 多对一单向同步

关于各类同步架构的介绍及注意事项,请参见数据同步拓扑介绍

操作步骤

  1. 购买数据同步作业,详情请参见购买流程
    说明 购买时,选择源实例为MySQL、目标实例为PolarDB,并选择同步拓扑为单向同步
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据同步
  4. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  5. 定位至已购买的数据同步实例,单击配置同步链路
  6. 配置同步通道的源实例及目标实例信息。
    配置源和目标实例信息
    类别配置说明
    同步作业名称DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息实例类型选择ECS上的自建数据库
    实例地区购买数据同步实例时选择的源实例地域信息,不可变更。
    ECS实例ID选择自建MySQL数据库所属的ECS实例ID。
    数据库类型固定为MySQL,不可变更。
    端口填入自建MySQL的数据库服务端口。
    数据库账号填入连接自建MySQL的数据库账号。
    说明 用于数据同步的数据库账号需具备REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。
    数据库密码填入数据库账号的密码。
    目标实例信息实例类型固定为PolarDB,不可变更。
    实例地区购买数据同步实例时选择的目标实例地域信息,不可变更。
    PolarDB实例ID选择目标PolarDB集群ID。
    数据库账号填入连接PolarDB集群的数据库账号。
    说明 用于数据同步的数据库账号需具备目标同步对象的ALL权限。
    数据库密码填入数据库账号的密码。
  7. 单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加到ECS实例的内网入方向安全组规则和目标PolarDB集群的白名单中,用于保障DTS服务器能够正常连接源实例和目标集群。
  8. 配置目标已存在表的处理模式和同步对象。
    配置处理模式和同步对象
    配置项目配置说明
    目标已存在表的处理模式
    • 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
      说明 如果目标库中同名的表不方便删除或重命名,您可以设置同步对象在目标实例中的名称来避免表名冲突。
    • 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
      警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:
      • 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在初始化阶段会保留目标库中的该条记录;在增量同步阶段则会覆盖目标库的该条记录。
      • 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
    选择同步对象

    源库对象框中单击待同步的对象,然后单击向右小箭头图标将其移动至已选择对象框。

    同步对象的选择粒度为库、表。

    说明
    • 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作都会同步至目标库。
    • 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标集群中的名称,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称
  9. 上述配置完成后,单击页面右下角的下一步
  10. 配置同步初始化的高级配置信息。
    数据同步高级设置
    说明 同步初始化类型细分为:结构初始化,全量数据初始化。选中结构初始化全量数据初始化后,DTS会在增量数据同步之前,将源数据库中待同步对象的结构和存量数据,同步到目标数据库。
  11. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  12. 预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
  13. 等待同步作业的链路初始化完成,直至处于同步中状态。
    您可以在数据同步页面,查看数据同步作业的状态。查看同步作业状态

  从PolarDB MySQL同步至Datahub

阿里云流式数据服务DataHub是流式数据(Streaming Data)的处理平台,提供对流式数据的发布、订阅和分发功能,让您可以轻松构建基于流式数据的分析和应用。通过数据传输服务(Data Transmission Service,简称DTS),您可以将PolarDB MySQL同步至DataHub,帮助您快速实现使用流计算等大数据产品对数据实时分析。

前提条件

  • DataHub实例的地域为华东1、华东2、华北2或华南1。
  • DataHub实例中,已创建用作接收同步数据的项目(Project),详情请参见创建项目
  • PolarDB MySQL集群已开启Binlog,详情请参见如何开启Binlog
  • PolarDB MySQL中待同步的表需具备主键或唯一约束。

功能限制

  • 不支持全量数据初始化,即DTS不会将源PolarDB集群中同步对象的存量数据同步至目标DataHub实例。
  • 仅支持表级别的数据同步。
  • 不支持新增列的数据同步,即源数据表新增了某个列,该列的数据不会同步至目标DataHub实例。
  • 数据同步的过程中,请勿对源库中待同步的表执行DDL变更,否则会导致同步失败。

支持同步的SQL操作

INSERT、UPDATE、DELETE。

操作步骤

  1. 购买数据同步作业,详情请参见购买流程
    说明 购买时,选择源实例为PolarDB、目标实例为DataHub,并选择同步拓扑为单向同步
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据同步
  4. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  5. 定位至已购买的数据同步实例,单击配置同步链路
  6. 配置同步作业的源实例及目标实例信息。
    配置源和目标实例信息
    类别配置说明
    同步作业名称DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息实例类型固定为PolarDB实例,不可变更。
    实例地区购买数据同步实例时选择的源实例地域信息,不可变更。
    PolarDB实例ID选择源PolarDB集群ID。
    数据库账号填入PolarDB集群的数据库账号。
    数据库密码填入数据库账号对应的密码。
    目标实例信息实例类型固定为DataHub,不可变更。
    实例地区购买数据同步实例时选择的目标实例地域信息,不可变更。
    Project选择DataHub实例的Project
  7. 单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加到PolarDB集群的白名单中,用于保障DTS服务器能够正常连接PolarDB集群。
  8. 配置同步策略和同步对象。
    配置同步策略和同步对象
    配置说明
    同步初始化勾选结构初始化
    说明 勾选结构初始化后,在数据同步作业的初始化阶段,DTS会将同步对象的结构信息(例如表结构)同步至目标DataHub实例。
    选择同步对象

    源库对象框中单击待迁移的对象,然后单击向右小箭头将其移动至已选择对象框。

    说明
    • 同步对象的选择粒度为表。
    • 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标实例中的名称,需要使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称
    选择附加列规则DTS在将数据同步到DataHub时,会在同步的目标Topic中添加一些附加列。如果附加列和目标Topic中已有的列出现名称冲突将会导致数据同步失败。您需要根据业务需求选择是否启用新的附加列规则
    警告 在选择附加列规则前,您需要评估附加列和目标Topic中已有的列是否会出现名称冲突。关于附加列的规则和定义说明,请参见附加列名称和定义说明
  9. 可选:将鼠标指针放置在已选择对象框中待同步的Topic名上,单击对象后出现的编辑,然后在弹出的对话框中设置Shardkey(即用于分区的key)。
  10. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  11. 预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
  12. 等待同步作业的链路初始化完成,直至处于同步中状态。
    您可以在数据同步页面,查看数据同步作业的状态。查看同步作业状态

Topic结构定义说明

DTS在将数据变更同步至DataHub实例的Topic时,目标Topic中除了存储变更数据外,还会新增一些附加列用于存储元信息,示例如下。
说明 本案例中的业务字段为idnameaddress,由于在配置数据同步时选用的是旧版附加列规则,DTS会为业务字段添加dts_的前缀。
Topic定义

结构定义说明:

旧版附加列名称新版附加列名称说明
dts_record_idnew_dts_sync_dts_record_id增量日志的记录id,为该日志唯一标识。
说明
  • 正常情况下是全局唯一自增的,在容灾的情况下会有回退且无法保证自增和唯一。
  • 如果增量日志的操作类型为UPDATE,那么增量更新会被拆分成两条记录(分别记录更新前和更新后的值),且dts_record_id的值相同。
dts_operation_flagnew_dts_sync_dts_operation_flag操作类型,取值:
  • I:INSERT操作。
  • D:DELETE操作。
  • U:UPDATE操作。
dts_instance_idnew_dts_sync_dts_instance_id数据库的server id。
dts_db_namenew_dts_sync_dts_db_name数据库名称。
dts_table_namenew_dts_sync_dts_table_name表名。
dts_utc_timestampnew_dts_sync_dts_utc_timestamp操作时间戳,即binlog的时间戳(UTC 时间)。
dts_before_flagnew_dts_sync_dts_before_flag所有列的值是否更新前的值,取值:Y或N。
dts_after_flagnew_dts_sync_dts_after_flag所有列的值是否更新后的值,取值:Y或N。

关于dts_before_flag和dts_after_flag的补充说明

对于不同的操作类型,增量日志中的dts_before_flagdts_after_flag定义如下:

  • INSERT

    当操作类型为INSERT时,所有列的值为新插入的值,即为更新后的值,所以dts_before_flag取值为N,dts_after_flag取值为Y,示例如下。

    INSERT操作
  • UPDATE

    当操作类型为UPDATE时,DTS会将UPDATE操作拆为两条增量日志。这两条增量日志的dts_record_iddts_operation_flagdts_utc_timestamp对应的值相同。

    第一条增量日志记录了更新前的值,所以dts_before_flag取值为Y,dts_after_flag取值为N。第二条增量日志记录了更新后的值,所以 dts_before_flag取值为N,dts_after_flag取值为Y,示例如下。

    UPDATE操作
  • DELETE

    当操作类型为DELETE时,增量日志中所有的列值为被删除的值,即列值不变,所以dts_before_flag取值为Y, dts_after_flag取值为N,示例如下。

    DELETE操作

后续操作

配置完数据同步作业后,您可以对同步到DataHub实例中的数据执行计算分析。


  从PolarDB MySQL同步到Kafka

Kafka是应用较为广泛的分布式、高吞吐量、高可扩展性消息队列服务,普遍用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,是大数据生态中不可或缺的产品之一。通过数据传输服务DTS(Data Transmission Service),您可以将PolarDB MySQL同步至自建Kafka集群,扩展消息处理能力。

前提条件

  • Kafka集群的版本为0.10.1.0-1.0.2版本。
  • PolarDB MySQL已开启Binlog,详情请参见如何开启Binlog

注意事项

如果源数据库没有主键或唯一约束,且所有字段没有唯一性,可能会导致目标数据库中出现重复数据。

功能限制

  • 仅支持表粒度的数据同步。
  • 不支持自动调整同步对象。
    说明 如果在同步的过程中,对源库中待同步的表执行了重命名操作,且重命名后的名称不在同步对象中,那么该表将不再被同步到目标Kafka集群中。如果该表还需要同步,那么您需要新增同步对象

消息格式

同步到Kafka集群中的数据以avro格式存储,schema定义详情请参见DTS avro schema定义

说明 数据同步到Kafka集群后,您需要根据avro schema定义进行数据解析。

操作步骤

  1. 购买数据同步作业,详情请参见购买流程
    说明 购买时,选择源实例为PolarDB、目标实例为Kafka,并选择同步拓扑为单向同步
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据同步
  4. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  5. 定位至已购买的数据同步实例,单击配置同步链路
  6. 配置源实例及目标实例信息。
    同步通道的源和目标实例配置
    类别配置说明
    同步作业名称DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息实例类型固定为PolarDB实例,不可变更。
    实例地区购买数据同步实例时选择的源实例地域,不可变更。
    PolarDB实例ID选择PolarDB集群ID。
    数据库账号填入PolarDB集群的数据库账号,需要具备待同步数据库的读权限。
    数据库密码填入该数据库账号的密码。
    目标实例信息实例类型根据Kafka集群的部署位置选择,本文以ECS上的自建数据库为例介绍配置流程。
    说明 当选择为其他实例类型时,您还需要执行相应的准备工作,详情请参见准备工作概览
    实例地区购买数据同步实例时选择的目标实例地域,不可变更。
    ECS实例ID选择部署了Kafka集群的ECS实例ID。
    数据库类型选择为Kafka
    端口Kafka集群对外提供服务的端口,默认为9092。
    数据库账号填入Kafka集群的用户名,如Kafka集群未开启验证可不填写。
    数据库密码填入Kafka集群用户名对应的密码,如Kafka集群未开启验证可不填写。
    Topic单击右侧的获取Topic列表,然后在下拉框中选择具体的Topic。
    Kafka版本根据目标Kafka集群版本,选择对应的版本信息。
    连接方式根据业务及安全需求,选择非加密连接SCRAM-SHA-256
  7. 单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加到源PolarDB集群的白名单和目标ECS实例的内网入方向安全组规则中,用于保障DTS服务器能够正常连接源和目标实例。
  8. 配置同步策略和同步对象信息。
    配置同步对象
    配置说明
    同步到Kafka Partition策略根据业务需求选择同步的策略,详细介绍请参见Kafka Partition同步策略说明
    同步对象源库对象区域框中,选择需要同步的对象(选择的粒度为表),然后单击向右箭头图标将其移动到已选对象区域框中。
    说明 DTS会自动将表名映射为配置同步的源和目标实例信息时选择的Topic名称。如果需要更换同步的目标Topic,请参见步骤9。
  9. 可选:已选择对象区域框中,将鼠标指针放置在目标Topic名上,然后单击Topic名后出现的编辑,在弹出的对话框中设置源表在目标Kafka集群中的Topic名称、Topic的Partition数量、Partition Key等信息。
    设置topic
    配置说明
    数据库表名称设置源表同步到的目标Topic名称。
    说明 如果设置的Topic名称在目标Kafka集群中不存在,您还需要设置该Topic的Partition数量。
    过滤条件
    • 过滤条件支持标准的SQL WHERE语句(仅支持=!=<< code="">和>操作符),只有满足WHERE条件的数据才会被同步到目标Topic。本案例填入id>1000
    • 过滤条件中如需使用引号,请使用单引号('),例如address in('hangzhou','shanghai')
    设置新Topic的Partition数量在下拉列表中,选择新Topic的Partition数量。
    说明 只有当设置的目标Topic名称在目标Kafka集群中不存在时,您才需要配置本参数。
    设置Partition Key当您在步骤8中选择同步策略为按主键的hash值投递到不同Partition时,您可以配置本参数,指定单个或多个列作为Partition Key来计算Hash值,DTS将根据计算得到的Hash值将不同的行投递到目标Topic的各Partition中。
  10. 上述配置完成后单击页面右下角的下一步
  11. 配置同步初始化的高级配置信息。
    Kafka同步初始化高级配置
    配置说明
    同步初始化默认选择结构初始化全量数据初始化,DTS会在增量数据同步之前,将源库中待同步对象的结构和存量数据,同步到目标库。
    过滤选项默认选择忽略增量同步阶段的 DDL,即增量同步阶段源库执行的DDL操作不会被DTS同步至目标库。
  12. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  13. 预检查对话框中显示预检查通过后,关闭预检查对话框,数据同步作业正式开始。
    您可以在数据同步页面,查看数据同步状态。查看数据同步状态

  从PolarDB MySQL同步至云原生数据仓库AnalyticDB MySQL

云原生数据仓库AnalyticDB MySQL是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,可以对千亿级数据进行毫秒级的即时多维分析透视和业务探索。通过数据传输服务DTS(Data Transmission Service),您可以将PolarDB MySQL同步到云原生数据仓库AnalyticDB MySQL,帮助您快速构建企业内部BI、交互查询、实时报表等系统。

前提条件

  • 已创建目标云原生数据仓库AnalyticDB MySQL集群,详情请参见创建云原生数据仓库AnalyticDB MySQL(2.0)创建云原生数据仓库AnalyticDB MySQL(3.0)
  • 确保目标云原生数据仓库AnalyticDB MySQL具备充足的存储空间。
  • PolarDB MySQL已开启Binlog,详情请参见如何开启Binlog
  • 如果同步的目标为云原生数据仓库AnalyticDB MySQL(2.0),源PolarDB MySQL中待同步的对象不能包含云原生数据仓库AnalyticDB MySQL(2.0)保留的库名和列名,否则将造成数据同步失败或DDL操作同步失败。

注意事项

  • DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据同步前评估源库和目标库的性能,同时建议您在业务低峰期执行数据同步(例如源库和目标库的CPU负载在30%以下)。
  • 请勿在数据同步时,对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
    说明 如果同步的目标为云原生数据仓库AnalyticDB MySQL(3.0),您可以使用DMS企业版提供的相关功能来执行在线DDL变更,详情请参见不锁表结构变更
  • 由于云原生数据仓库AnalyticDB MySQL(3.0)本身的使用限制,当云原生数据仓库AnalyticDB MySQL(3.0)集群中的节点磁盘空间使用量超过80%,该集群将被锁定。请提前根据待同步的对象预估所需空间,确保目标集群具备充足的存储空间。
  • 暂不支持同步前缀索引,如果源库存在前缀索引可能导致数据同步失败。

术语/概念对应关系

PolarDB MySQL云原生数据仓库AnalyticDB MySQL
数据库
  • 云原生数据仓库AnalyticDB MySQL(2.0):表组
  • 云原生数据仓库AnalyticDB MySQL(3.0):数据库
  • 云原生数据仓库AnalyticDB MySQL(2.0):表
  • 云原生数据仓库AnalyticDB MySQL(3.0):表
说明 关于云原生数据仓库AnalyticDB MySQL中表组和表的相关介绍,请参见基本概念

支持同步的SQL操作

目标数据库版本支持的SQL操作
云原生数据仓库AnalyticDB MySQL2.0
  • DDL操作:ADD COLUMN、DROP COLUMN、MODIFY COLUMN
  • DML操作:INSERT、UPDATE、DELETE
云原生数据仓库AnalyticDB MySQL3.0
  • DDL操作:CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE、ADD COLUMN、DROP COLUMN、MODIFY COLUMN
  • DML操作:INSERT、UPDATE、DELETE
说明 如果在数据同步的过程中变更了源表的字段类型,同步作业将报错并中断。您可以提交工单处理或手动修复,详情请参见修复因变更字段类型导致的同步失败

数据库账号的权限要求

数据库所需权限
PolarDB MySQL待同步对象的读权限。
云原生数据仓库AnalyticDB MySQL(2.0)无需填写数据库账号信息,DTS会自动创建账号并授权。
云原生数据仓库AnalyticDB MySQL(3.0)读写权限。

数据库账号的创建和授权方法,请参见创建PolarDB MySQL数据库账号创建云原生数据仓库AnalyticDB MySQL数据库账号

数据类型映射关系

详情请参见结构初始化涉及的数据类型映射关系

操作步骤

  1. 购买数据同步作业
    说明 购买时,选择源实例为PolarDB、目标实例为AnalyticDB MySQL,并选择同步拓扑为单向同步
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据同步
  4. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  5. 定位至已购买的数据同步实例,单击配置同步链路
  6. 配置同步通道的源实例及目标实例信息。
    配置源和目标实例信息
    类别配置说明
    同步作业名称DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息实例类型固定为PolarDB实例,不可变更。
    实例地区购买数据同步实例时选择的源实例地域信息,不可变更。
    PolarDB实例ID选择源PolarDB集群ID。
    数据库账号填入PolarDB集群的数据库账号,权限要求请参见数据库账号的权限要求
    数据库密码填入数据库账号对应的密码。
    目标实例信息实例类型固定为ADS,不可变更。
    实例地区购买数据同步实例时选择的目标实例地域信息,不可变更。
    版本根据目标云原生数据仓库AnalyticDB MySQL集群的版本,选择2.03.0
    说明
    • 选择为2.0后,DTS将自动创建数据库账号并进行授权,您无需配置数据库账号数据库密码
    • 选择为3.0后,您还需要配置数据库账号数据库密码
    数据库选择目标云原生数据仓库AnalyticDB MySQL的集群ID。
    数据库账号填入云原生数据仓库AnalyticDB MySQL的数据库账号,权限要求请参见数据库账号的权限要求
    数据库密码填入数据库账号对应的密码。
  7. 单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加到PolarDB MySQL和云原生数据仓库AnalyticDB MySQL的白名单中,用于保障DTS服务器能够正常连接源和目标集群。
  8. 配置同步策略及对象信息。
    配置同步策略和对象
    配置说明
    同步初始化默认情况下,您需要同时选中结构初始化全量数据初始化。预检查完成后,DTS会将源实例中待同步对象的结构及数据在目标集群中初始化,作为后续增量同步数据的基线数据。
    目标已存在表的处理模式
    • 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
      说明 如果目标库中同名的表不方便删除或重命名,您可以更改该表在目标库中的名称,详情请参见设置同步对象在目标实例中的名称
    • 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
      警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:
      • 表结构一致的情况下,在目标库遇到与源库主键的值相同的记录,则会保留目标集群中的该条记录,即源库中的该条记录不会同步至目标数据库中。
      • 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
    多表归并
    • 选择为:DTS将在每个表中增加__dts_data_source列来存储数据来源,且不再支持DDL同步。
    • 选择为:默认选项,支持DDL同步。
    说明 多表归并功能基于任务级别,即不支持基于表级别执行多表归并。如果需要让部分表执行多表归并,另一部分不执行多表归并,您可以创建两个数据同步作业。
    同步操作类型根据业务选中需要同步的操作类型,支持的同步操作详情请参见#d23e126,默认情况下都处于选中状态。
    选择同步对象

    源库对象框中单击待同步的对象,然后单击向右小箭头图标将其移动至已选择对象框。

    同步对象的选择粒度为库、表。

    说明
    • 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作会同步至目标库。
    • 如果选择某个表作为同步对象,那么只有这个表的ADD COLUMN操作会同步至目标库。
    • 默认情况下,同步对象的名称保持不变。如果您需要同步对象在目标集群上名称不同,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称
  9. 上述配置完成后,单击页面右下角的下一步
  10. 设置待同步的表在目标库中类型。
    设置表类型
    说明 选择了结构初始化后,您需要定义待同步的表在云原生数据仓库AnalyticDB MySQL中的类型、主键列分区列等信息,详情请参见ADB 2.0 SQL手册ADB 3.0 SQL手册
  11. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  12. 预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
  13. 等待同步作业的链路初始化完成,直至处于同步中状态。
    您可以在数据同步页面,查看数据同步作业的状态。查看同步作业状态
  如果您还有什么疑问的话,可以联系我们。
联系客服免费领取更多阿里云产品新购、续费升级折扣,叠加官网活动折上折更优惠