典名科技本文主要介绍阿里云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。
注意事项
- DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,在数据库性能较差、规格较低或业务量较大的情况下(例如源库有大量慢SQL、存在无主键表或目标库存在死锁等),可能会加重数据库压力,甚至导致数据库服务不可用。因此您需要在执行数据同步前评估源库和目标库的性能,同时建议您在业务低峰期执行数据同步(例如源库和目标库的CPU负载在30%以下)。
- 如果同步对象为单个或多个表(非整库),那么在数据同步时,请勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。
注意 为避免同步失败,数据同步期间您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更。
- 全量初始化过程中,并发INSERT会导致目标集群的表碎片,全量初始化完成后,目标集群的表空间比源库的表空间大。
- 如果数据同步的源库没有主键或唯一约束,且记录的全字段没有唯一性,可能会出现重复数据。
支持同步的SQL操作
操作类型 | SQL操作语句 |
---|
DML | INSERT、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
|
支持的同步架构
- 一对一单向同步
- 一对多单向同步
- 级联单向同步
- 多对一单向同步
关于各类同步架构的介绍及注意事项,请参见数据同步拓扑介绍。
操作步骤
- 购买数据同步作业。
说明 购买时,选择源实例为MySQL、目标实例为PolarDB,并选择同步拓扑为单向同步。
- 登录数据传输控制台。
- 在左侧导航栏,单击数据同步。
- 在同步作业列表页面顶部,选择同步的目标实例所属地域。
- 定位至已购买的数据同步实例,单击配置同步链路。
- 配置同步通道的源实例及目标实例信息。
类别 | 配置 | 说明 |
---|
无 | 同步作业名称 | DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 |
源实例信息 | 实例类型 | 选择RDS实例。 |
实例地区 | 购买数据同步实例时选择的源实例地域信息,不可变更。 |
数据库账号 | 填入连接RDS实例的数据库账号。
说明- 该账号需具备REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。
- 当源RDS实例的数据库类型为MySQL 5.5或MySQL 5.6时,无需配置数据库账号和数据库密码。
|
数据库密码 | 填入数据库账号的密码。 |
连接方式 | 根据需求选择非加密连接或SSL安全连接。如果设置为SSL安全连接,您需要提前开启RDS实例的SSL加密功能。 |
目标实例信息 | 实例类型 | 固定为PolarDB,不可变更。 |
实例地区 | 购买数据同步实例时选择的目标实例地域信息,不可变更。 |
PolarDB实例ID | 选择目标PolarDB集群ID。 |
数据库账号 | 填入PolarDB集群的数据库账号。
说明 用于数据同步的数据库账号需具备目标同步对象的ALL权限。 |
数据库密码 | 填入数据库账号的密码。 |
- 单击页面右下角的授权白名单并进入下一步。
说明 此步骤会将DTS服务器的IP地址自动添加到源RDS实例和目标PolarDB集群的白名单中,用于保障DTS服务器能够正常连接源实例和目标集群。
- 配置目标已存在表的处理模式和同步对象。
配置项目 | 配置说明 |
---|
目标已存在表的处理模式 | - 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
说明 如果目标库中同名的表不方便删除或重命名,您可以设置同步对象在目标实例中的名称来避免表名冲突。 - 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:- 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在初始化阶段会保留目标库中的该条记录;在增量同步阶段则会覆盖目标库的该条记录。
- 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
|
选择同步对象 | 在源库对象框中单击待同步的对象,然后单击图标将其移动至已选择对象框。 同步对象的选择粒度为库、表。
说明- 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作都会同步至目标库。
- 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标集群中的名称,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称。
|
- 上述配置完成后,单击页面右下角的下一步。
- 配置同步初始化的高级配置信息。
说明 同步初始化类型细分为:结构初始化,全量数据初始化。选中结构初始化和全量数据初始化后,DTS会在增量数据同步之前,将源数据库中待同步对象的结构和存量数据,同步到目标数据库。
- 上述配置完成后,单击页面右下角的预检查并启动。
说明- 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
- 如果预检查失败,单击具体检查项后的图标,查看失败详情。根据提示修复后,重新进行预检查。
- 在预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
- 等待同步作业的链路初始化完成,直至处于同步中状态。
您可以在数据同步页面,查看数据同步作业的状态。
从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操作语句 |
---|
DML | INSERT、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
|
支持的同步架构
- 一对一单向同步
- 一对多单向同步
- 级联单向同步
- 多对一单向同步
关于各类同步架构的介绍及注意事项。
操作步骤
- 购买数据同步作业。
说明 购买时,选择源实例为PolarDB,选择目标实例为MySQL,并选择同步拓扑为单向同步。
- 登录数据传输控制台。
- 在左侧导航栏,单击数据同步。
- 在同步作业列表页面顶部,选择同步的目标实例所属地域。
- 定位至已购买的数据同步实例,单击配置同步链路。
- 配置同步通道的源实例及目标实例信息。
类别 | 配置 | 说明 |
---|
无 | 同步作业名称 | DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 |
源实例信息 | 实例类型 | 固定为PolarDB实例,不可变更。 |
实例地区 | 购买数据同步实例时选择的源实例地域信息,不可变更。 |
PolarDB实例ID | 选择源PolarDB集群ID。 |
数据库账号 | 填入源PolarDB集群的数据库账号。 |
数据库密码 | 填入数据库账号对应的密码。 |
目标实例信息 | 实例类型 | 选择为RDS实例。 |
实例地区 | 购买数据同步实例时选择的目标实例地域信息,不可变更。 |
数据库账号 | 填入目标RDS实例的数据库账号。 |
数据库密码 | 填入数据库账号对应的密码。
说明 当目标RDS实例的数据库类型为MySQL 5.5或MySQL 5.6时,无需配置数据库账号和数据库密码。 |
连接方式 | 根据需求选择非加密连接或SSL安全连接。如果设置为SSL安全连接,您需要提前开启RDS实例的SSL加密功能。 |
- 单击页面右下角的授权白名单并进入下一步。
说明 此步骤会将DTS服务器的IP地址自动添加到源PolarDB集群和目标RDS实例的白名单中,用于保障DTS服务器能够正常连接源集群和目标实例。
- 配置目标已存在表的处理模式和同步对象。
配置项目 | 配置说明 |
---|
目标已存在表的处理模式 | - 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
说明 如果目标库中同名的表不方便删除或重命名,您可以设置同步对象在目标实例中的名称来避免表名冲突。 - 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:- 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在初始化阶段会保留目标库中的该条记录;在增量同步阶段则会覆盖目标库的该条记录。
- 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
|
选择同步对象 | 在源库对象框中单击待同步的对象,然后单击图标将其移动至已选择对象框。 同步对象的选择粒度为库、表。
说明- 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作都会同步至目标库。
- 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标集群中的名称,请使用对象名映射功能。
|
- 上述配置完成后,单击页面右下角的下一步。
- 配置同步初始化的高级配置信息。
说明 同步初始化类型细分为:结构初始化,全量数据初始化。选中结构初始化和全量数据初始化后,DTS会在增量数据同步之前,将源数据库中待同步对象的结构和存量数据,同步到目标数据库。
- 上述配置完成后,单击页面右下角的预检查并启动。
说明- 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
- 如果预检查失败,单击具体检查项后的图标,查看失败详情。根据提示修复后,重新进行预检查。
- 在预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
- 等待同步作业的链路初始化完成,直至处于同步中状态。
您可以在数据同步页面,查看数据同步作业的状态。
从通过专线、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操作语句 |
---|
DML | INSERT、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
|
支持的同步架构
- 一对一单向同步
- 一对多单向同步
- 级联单向同步
- 多对一单向同步
关于各类同步架构的介绍及注意事项,请参见数据同步拓扑介绍。
准备工作
为自建MySQL创建账号并设置binlog
说明 用于数据同步的数据库账号需具备REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。
操作步骤
- 购买数据同步作业。
说明 购买时,选择源实例为MySQL、目标实例为PolarDB,并选择同步拓扑为单向同步。
- 登录数据传输控制台。
- 在左侧导航栏,单击数据同步。
- 在同步作业列表页面顶部,选择同步的目标实例所属地域。
- 定位至已购买的数据同步实例,单击配置同步链路。
- 配置同步通道的源实例及目标实例信息。
类别 | 配置 | 说明 |
---|
无 | 同步作业名称 | DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 |
源实例信息 | 实例类型 | 选择通过专线/VPN网关/智能接入网关接入的自建数据库。 |
实例地区 | 购买数据同步实例时选择的源实例地域信息,不可变更。 |
已和源端数据库联通的VPC | 选择自建数据库接入的VPC ID。 |
数据库类型 | 固定为MySQL,不可变更。 |
IP地址 | 填入自建MySQL数据库的服务器IP地址。 |
端口 | 填入自建MySQL的数据库服务端口。 |
数据库账号 | 填入为自建MySQL创建的数据库账号。 |
数据库密码 | 填入该数据库账号的密码。 |
目标实例信息 | 实例类型 | 固定为PolarDB,不可变更。 |
实例地区 | 购买数据同步实例时选择的目标实例地域信息,不可变更。 |
PolarDB实例ID | 选择目标PolarDB集群ID。 |
数据库账号 | 填入PolarDB集群的数据库账号。
说明 该数据库账号需具备目标同步对象的ALL权限。 |
数据库密码 | 填入该数据库账号的密码。 |
- 单击页面右下角的授权白名单并进入下一步。
说明 此步骤会将DTS服务器的IP地址自动添加到目标PolarDB集群的白名单中,用于保障DTS服务器能够正常连接目标集群。
- 配置目标已存在表的处理模式和同步对象。
配置项目 | 配置说明 |
---|
目标已存在表的处理模式 | - 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
说明 如果目标库中同名的表不方便删除或重命名,您可以设置同步对象在目标实例中的名称来避免表名冲突。 - 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:- 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在初始化阶段会保留目标库中的该条记录;在增量同步阶段则会覆盖目标库的该条记录。
- 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
|
选择同步对象 | 在源库对象框中单击待同步的对象,然后单击图标将其移动至已选择对象框。 同步对象的选择粒度为库、表。
说明- 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作都会同步至目标库。
- 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标集群中的名称,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称。
|
- 上述配置完成后,单击页面右下角的下一步。
- 配置同步初始化的高级配置信息。
说明 同步初始化类型细分为:结构初始化,全量数据初始化。选中结构初始化和全量数据初始化后,DTS会在增量数据同步之前,将源数据库中待同步对象的结构和存量数据,同步到目标数据库。
- 上述配置完成后,单击页面右下角的预检查并启动。
说明- 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
- 如果预检查失败,单击具体检查项后的图标,查看失败详情。根据提示修复后,重新进行预检查。
- 在预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
- 等待同步作业的链路初始化完成,直至处于同步中状态。
您可以在数据同步页面,查看数据同步作业的状态。
从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操作,如果您需要将新增的表作为同步对象,则需要执行新增同步对象操作。
术语对应关系
PolarDB MySQL | 云原生数据仓库AnalyticDB PostgreSQL |
---|
Database | Schema |
Table | Table |
操作步骤
- 购买数据同步作业,详情请参见购买流程。
说明 购买时,选择源实例为PolarDB、目标实例为AnalyticDB PostgreSQL,并选择同步拓扑为单向同步。
- 登录数据传输控制台。
- 在左侧导航栏,单击数据同步。
- 在同步作业列表页面顶部,选择同步的目标实例所属地域。
- 定位至已购买的数据同步实例,单击配置同步链路。
- 配置同步通道的源实例及目标实例信息。
类别 | 配置 | 说明 |
---|
无 | 同步作业名称 | DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 |
源实例信息 | 实例类型 | 固定为PolarDB实例。 |
实例地区 | 购买数据同步实例时选择的源PolarDB集群的地域信息,不可变更。 |
PolarDB实例ID | 选择PolarDB集群ID。 |
数据库账号 | 填入PolarDB集群的数据库账号。 |
数据库密码 | 填入该数据库账号的密码。 |
目标实例信息 | 实例类型 | 固定为AnalyticDB for PostgreSQL,无需设置。 |
实例地区 | 购买数据同步实例时选择的目标实例地域信息,不可变更。 |
实例ID | 选择云原生数据仓库AnalyticDB PostgreSQL实例ID。 |
数据库名称 | 填入云原生数据仓库AnalyticDB PostgreSQL实例中,待同步的目标表所属的数据库名称。 |
数据库账号 | 填入云原生数据仓库AnalyticDB PostgreSQL的初始账号,详情请参见设置账号。
说明 您也可以填入具备RDS_SUPERUSER权限的账号,创建方法请参见用户权限管理。 |
数据库密码 | 填入数据库账号的密码。 |
- 单击页面右下角的授权白名单并进入下一步。
说明 此步骤会将DTS服务器的IP地址自动添加PolarDB MySQL和云原生数据仓库AnalyticDB PostgreSQL的白名单中,用于保障DTS服务器能够正常连接源集群和目标实例。
- 配置同步策略及同步对象。
类别 | 配置 | 说明 |
---|
同步策略配置 | 同步初始化 | 默认情况下,您需要同时选中结构初始化和全量数据初始化。预检查完成后,DTS会将源实例中待同步对象的结构及数据在目标实例中初始化,作为后续增量同步数据的基线数据。 |
目标已存在表的处理模式 | |
同步操作类型 | 根据业务需求选择需要同步的操作类型: - Insert
- Update
- Delete
- AlterTable
|
选择同步对象 | 无 | 在源库对象框中单击待同步的表,然后单击图标将其移动至已选择对象框。
说明- 同步对象的选择粒度为表。
- 如果需要目标表中的列名称与源表不同,需要使用DTS的字段映射功能,详情请参见设置同步对象在目标实例中的名称。
|
- 设置待同步的表在云原生数据仓库AnalyticDB PostgreSQL中的主键列和分布列信息。
说明 当您在上一步中选择了结构初始化才会出现该页面。关于主键列和分布列的详细说明,请参见表的约束定义和表分布键定义。
- 上述配置完成后,单击页面右下角的预检查并启动。
说明- 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
- 如果预检查失败,单击具体检查项后的图标,查看失败详情。根据提示修复后,重新进行预检查。
- 在预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
- 等待同步作业的链路初始化完成,直至处于同步中状态。
您可以在数据同步页面,查看数据同步作业的状态。
从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操作语句 |
---|
DML | INSERT、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
|
准备工作
为自建MySQL创建账号并设置binlog
说明 用于数据同步的数据库账号需具备待同步对象的REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。
支持的同步架构
- 一对一单向同步
- 一对多单向同步
- 级联单向同步
- 多对一单向同步
关于各类同步架构的介绍及注意事项,请参见数据同步拓扑介绍。
操作步骤
- 购买数据同步作业,详情请参见购买流程。
说明 购买时,选择源实例为MySQL、目标实例为PolarDB,并选择同步拓扑为单向同步。
- 登录数据传输控制台。
- 在左侧导航栏,单击数据同步。
- 在同步作业列表页面顶部,选择同步的目标实例所属地域。
- 定位至已购买的数据同步实例,单击配置同步链路。
- 配置同步通道的源实例及目标实例信息。
类别 | 配置 | 说明 |
---|
无 | 同步作业名称 | DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 |
源实例信息 | 实例类型 | 选择ECS上的自建数据库。 |
实例地区 | 购买数据同步实例时选择的源实例地域信息,不可变更。 |
ECS实例ID | 选择自建MySQL数据库所属的ECS实例ID。 |
数据库类型 | 固定为MySQL,不可变更。 |
端口 | 填入自建MySQL的数据库服务端口。 |
数据库账号 | 填入连接自建MySQL的数据库账号。
说明 用于数据同步的数据库账号需具备REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。 |
数据库密码 | 填入数据库账号的密码。 |
目标实例信息 | 实例类型 | 固定为PolarDB,不可变更。 |
实例地区 | 购买数据同步实例时选择的目标实例地域信息,不可变更。 |
PolarDB实例ID | 选择目标PolarDB集群ID。 |
数据库账号 | 填入连接PolarDB集群的数据库账号。
说明 用于数据同步的数据库账号需具备目标同步对象的ALL权限。 |
数据库密码 | 填入数据库账号的密码。 |
- 单击页面右下角的授权白名单并进入下一步。
说明 此步骤会将DTS服务器的IP地址自动添加到ECS实例的内网入方向安全组规则和目标PolarDB集群的白名单中,用于保障DTS服务器能够正常连接源实例和目标集群。
- 配置目标已存在表的处理模式和同步对象。
配置项目 | 配置说明 |
---|
目标已存在表的处理模式 | - 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
说明 如果目标库中同名的表不方便删除或重命名,您可以设置同步对象在目标实例中的名称来避免表名冲突。 - 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:- 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在初始化阶段会保留目标库中的该条记录;在增量同步阶段则会覆盖目标库的该条记录。
- 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
|
选择同步对象 | 在源库对象框中单击待同步的对象,然后单击图标将其移动至已选择对象框。 同步对象的选择粒度为库、表。
说明- 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作都会同步至目标库。
- 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标集群中的名称,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称。
|
- 上述配置完成后,单击页面右下角的下一步。
- 配置同步初始化的高级配置信息。
说明 同步初始化类型细分为:结构初始化,全量数据初始化。选中结构初始化和全量数据初始化后,DTS会在增量数据同步之前,将源数据库中待同步对象的结构和存量数据,同步到目标数据库。
- 上述配置完成后,单击页面右下角的预检查并启动。
说明- 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
- 如果预检查失败,单击具体检查项后的图标,查看失败详情。根据提示修复后,重新进行预检查。
- 在预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
- 等待同步作业的链路初始化完成,直至处于同步中状态。
您可以在数据同步页面,查看数据同步作业的状态。
从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。
操作步骤
- 购买数据同步作业,详情请参见购买流程。
说明 购买时,选择源实例为PolarDB、目标实例为DataHub,并选择同步拓扑为单向同步。
- 登录数据传输控制台。
- 在左侧导航栏,单击数据同步。
- 在同步作业列表页面顶部,选择同步的目标实例所属地域。
- 定位至已购买的数据同步实例,单击配置同步链路。
- 配置同步作业的源实例及目标实例信息。
类别 | 配置 | 说明 |
---|
无 | 同步作业名称 | DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 |
源实例信息 | 实例类型 | 固定为PolarDB实例,不可变更。 |
实例地区 | 购买数据同步实例时选择的源实例地域信息,不可变更。 |
PolarDB实例ID | 选择源PolarDB集群ID。 |
数据库账号 | 填入PolarDB集群的数据库账号。 |
数据库密码 | 填入数据库账号对应的密码。 |
目标实例信息 | 实例类型 | 固定为DataHub,不可变更。 |
实例地区 | 购买数据同步实例时选择的目标实例地域信息,不可变更。 |
Project | 选择DataHub实例的Project。 |
- 单击页面右下角的授权白名单并进入下一步。
说明 此步骤会将DTS服务器的IP地址自动添加到PolarDB集群的白名单中,用于保障DTS服务器能够正常连接PolarDB集群。
- 配置同步策略和同步对象。
配置 | 说明 |
---|
同步初始化 | 勾选结构初始化。
说明 勾选结构初始化后,在数据同步作业的初始化阶段,DTS会将同步对象的结构信息(例如表结构)同步至目标DataHub实例。 |
选择同步对象 | 在源库对象框中单击待迁移的对象,然后单击将其移动至已选择对象框。
说明- 同步对象的选择粒度为表。
- 默认情况下,同步对象的名称保持不变。如果您需要改变同步对象在目标实例中的名称,需要使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称。
|
选择附加列规则 | DTS在将数据同步到DataHub时,会在同步的目标Topic中添加一些附加列。如果附加列和目标Topic中已有的列出现名称冲突将会导致数据同步失败。您需要根据业务需求选择是否启用新的附加列规则为是或否。
警告 在选择附加列规则前,您需要评估附加列和目标Topic中已有的列是否会出现名称冲突。关于附加列的规则和定义说明,请参见附加列名称和定义说明。 |
- 可选:将鼠标指针放置在已选择对象框中待同步的Topic名上,单击对象后出现的编辑,然后在弹出的对话框中设置Shardkey(即用于分区的key)。
- 上述配置完成后,单击页面右下角的预检查并启动。
说明- 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
- 如果预检查失败,单击具体检查项后的图标,查看失败详情。根据提示修复后,重新进行预检查。
- 在预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
- 等待同步作业的链路初始化完成,直至处于同步中状态。
您可以在数据同步页面,查看数据同步作业的状态。
Topic结构定义说明
DTS在将数据变更同步至DataHub实例的Topic时,目标Topic中除了存储变更数据外,还会新增一些附加列用于存储元信息,示例如下。
说明 本案例中的业务字段为id
、name
、address
,由于在配置数据同步时选用的是旧版附加列规则,DTS会为业务字段添加dts_
的前缀。
结构定义说明:
旧版附加列名称 | 新版附加列名称 | 说明 |
---|
dts_record_id | new_dts_sync_dts_record_id | 增量日志的记录id,为该日志唯一标识。
说明- 正常情况下是全局唯一自增的,在容灾的情况下会有回退且无法保证自增和唯一。
- 如果增量日志的操作类型为UPDATE,那么增量更新会被拆分成两条记录(分别记录更新前和更新后的值),且
dts_record_id 的值相同。
|
dts_operation_flag | new_dts_sync_dts_operation_flag | 操作类型,取值:- I:INSERT操作。
- D:DELETE操作。
- U:UPDATE操作。
|
dts_instance_id | new_dts_sync_dts_instance_id | 数据库的server id。 |
dts_db_name | new_dts_sync_dts_db_name | 数据库名称。 |
dts_table_name | new_dts_sync_dts_table_name | 表名。 |
dts_utc_timestamp | new_dts_sync_dts_utc_timestamp | 操作时间戳,即binlog的时间戳(UTC 时间)。 |
dts_before_flag | new_dts_sync_dts_before_flag | 所有列的值是否更新前的值,取值:Y或N。 |
dts_after_flag | new_dts_sync_dts_after_flag | 所有列的值是否更新后的值,取值:Y或N。 |
关于dts_before_flag和dts_after_flag的补充说明
对于不同的操作类型,增量日志中的dts_before_flag
和dts_after_flag
定义如下:
- INSERT
当操作类型为INSERT时,所有列的值为新插入的值,即为更新后的值,所以dts_before_flag
取值为N,dts_after_flag
取值为Y,示例如下。
- UPDATE
当操作类型为UPDATE时,DTS会将UPDATE操作拆为两条增量日志。这两条增量日志的dts_record_id
、dts_operation_flag
及dts_utc_timestamp
对应的值相同。
第一条增量日志记录了更新前的值,所以dts_before_flag
取值为Y,dts_after_flag
取值为N。第二条增量日志记录了更新后的值,所以 dts_before_flag
取值为N,dts_after_flag
取值为Y,示例如下。
- DELETE
当操作类型为DELETE时,增量日志中所有的列值为被删除的值,即列值不变,所以dts_before_flag
取值为Y, dts_after_flag
取值为N,示例如下。
后续操作
配置完数据同步作业后,您可以对同步到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定义进行数据解析。
操作步骤
- 购买数据同步作业,详情请参见购买流程。
说明 购买时,选择源实例为PolarDB、目标实例为Kafka,并选择同步拓扑为单向同步。
- 登录数据传输控制台。
- 在左侧导航栏,单击数据同步。
- 在同步作业列表页面顶部,选择同步的目标实例所属地域。
- 定位至已购买的数据同步实例,单击配置同步链路。
- 配置源实例及目标实例信息。
类别 | 配置 | 说明 |
---|
无 | 同步作业名称 | 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。 |
- 单击页面右下角的授权白名单并进入下一步。
说明 此步骤会将DTS服务器的IP地址自动添加到源PolarDB集群的白名单和目标ECS实例的内网入方向安全组规则中,用于保障DTS服务器能够正常连接源和目标实例。
- 配置同步策略和同步对象信息。
配置 | 说明 |
---|
同步到Kafka Partition策略 | 根据业务需求选择同步的策略,详细介绍请参见Kafka Partition同步策略说明。 |
同步对象 | 在源库对象区域框中,选择需要同步的对象(选择的粒度为表),然后单击图标将其移动到已选对象区域框中。
说明 DTS会自动将表名映射为配置同步的源和目标实例信息时选择的Topic名称。如果需要更换同步的目标Topic,请参见步骤9。 |
- 可选:在已选择对象区域框中,将鼠标指针放置在目标Topic名上,然后单击Topic名后出现的编辑,在弹出的对话框中设置源表在目标Kafka集群中的Topic名称、Topic的Partition数量、Partition Key等信息。
配置 | 说明 |
---|
数据库表名称 | 设置源表同步到的目标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中。 |
- 上述配置完成后单击页面右下角的下一步。
- 配置同步初始化的高级配置信息。
配置 | 说明 |
---|
同步初始化 | 默认选择结构初始化和全量数据初始化,DTS会在增量数据同步之前,将源库中待同步对象的结构和存量数据,同步到目标库。 |
过滤选项 | 默认选择忽略增量同步阶段的 DDL,即增量同步阶段源库执行的DDL操作不会被DTS同步至目标库。 |
- 上述配置完成后,单击页面右下角的预检查并启动。
说明- 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
- 如果预检查失败,单击具体检查项后的图标,查看失败详情。根据提示修复后,重新进行预检查。
- 在预检查对话框中显示预检查通过后,关闭预检查对话框,数据同步作业正式开始。
您可以在数据同步页面,查看数据同步状态。
从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数据库账号。
数据类型映射关系
详情请参见结构初始化涉及的数据类型映射关系。
操作步骤
- 购买数据同步作业。
说明 购买时,选择源实例为PolarDB、目标实例为AnalyticDB MySQL,并选择同步拓扑为单向同步。
- 登录数据传输控制台。
- 在左侧导航栏,单击数据同步。
- 在同步作业列表页面顶部,选择同步的目标实例所属地域。
- 定位至已购买的数据同步实例,单击配置同步链路。
- 配置同步通道的源实例及目标实例信息。
类别 | 配置 | 说明 |
---|
无 | 同步作业名称 | DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。 |
源实例信息 | 实例类型 | 固定为PolarDB实例,不可变更。 |
实例地区 | 购买数据同步实例时选择的源实例地域信息,不可变更。 |
PolarDB实例ID | 选择源PolarDB集群ID。 |
数据库账号 | 填入PolarDB集群的数据库账号,权限要求请参见数据库账号的权限要求。 |
数据库密码 | 填入数据库账号对应的密码。 |
目标实例信息 | 实例类型 | 固定为ADS,不可变更。 |
实例地区 | 购买数据同步实例时选择的目标实例地域信息,不可变更。 |
版本 | 根据目标云原生数据仓库AnalyticDB MySQL集群的版本,选择2.0或3.0。
说明- 选择为2.0后,DTS将自动创建数据库账号并进行授权,您无需配置数据库账号和数据库密码。
- 选择为3.0后,您还需要配置数据库账号和数据库密码。
|
数据库 | 选择目标云原生数据仓库AnalyticDB MySQL的集群ID。 |
数据库账号 | 填入云原生数据仓库AnalyticDB MySQL的数据库账号,权限要求请参见数据库账号的权限要求。 |
数据库密码 | 填入数据库账号对应的密码。 |
- 单击页面右下角的授权白名单并进入下一步。
说明 此步骤会将DTS服务器的IP地址自动添加到PolarDB MySQL和云原生数据仓库AnalyticDB MySQL的白名单中,用于保障DTS服务器能够正常连接源和目标集群。
- 配置同步策略及对象信息。
配置 | 说明 |
---|
同步初始化 | 默认情况下,您需要同时选中结构初始化和全量数据初始化。预检查完成后,DTS会将源实例中待同步对象的结构及数据在目标集群中初始化,作为后续增量同步数据的基线数据。 |
目标已存在表的处理模式 | - 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
说明 如果目标库中同名的表不方便删除或重命名,您可以更改该表在目标库中的名称,详情请参见设置同步对象在目标实例中的名称。 - 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:- 表结构一致的情况下,在目标库遇到与源库主键的值相同的记录,则会保留目标集群中的该条记录,即源库中的该条记录不会同步至目标数据库中。
- 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
|
多表归并 | - 选择为是:DTS将在每个表中增加
__dts_data_source 列来存储数据来源,且不再支持DDL同步。 - 选择为否:默认选项,支持DDL同步。
说明 多表归并功能基于任务级别,即不支持基于表级别执行多表归并。如果需要让部分表执行多表归并,另一部分不执行多表归并,您可以创建两个数据同步作业。 |
同步操作类型 | 根据业务选中需要同步的操作类型,支持的同步操作详情请参见#d23e126,默认情况下都处于选中状态。 |
选择同步对象 | 在源库对象框中单击待同步的对象,然后单击图标将其移动至已选择对象框。 同步对象的选择粒度为库、表。
说明- 如果选择整个库作为同步对象,那么该库中所有对象的结构变更操作会同步至目标库。
- 如果选择某个表作为同步对象,那么只有这个表的ADD COLUMN操作会同步至目标库。
- 默认情况下,同步对象的名称保持不变。如果您需要同步对象在目标集群上名称不同,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称。
|
- 上述配置完成后,单击页面右下角的下一步。
- 设置待同步的表在目标库中类型。
说明 选择了结构初始化后,您需要定义待同步的表在云原生数据仓库AnalyticDB MySQL中的类型、主键列、分区列等信息,详情请参见ADB 2.0 SQL手册和ADB 3.0 SQL手册。
- 上述配置完成后,单击页面右下角的预检查并启动。
说明- 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
- 如果预检查失败,单击具体检查项后的图标,查看失败详情。根据提示修复后,重新进行预检查。
- 在预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
- 等待同步作业的链路初始化完成,直至处于同步中状态。
您可以在数据同步页面,查看数据同步作业的状态。
如果您还有什么疑问的话,可以联系我们。