云数据库ClickHouse是面向联机分析处理的列式数据库,基于大宽表的聚合分析查询性能非常优异,比其他分析型数据库速度快一个数量级,通过数据传输服务DTS(Data Transmission Service),您可以将MySQL数据库(例如自建MySQL或RDS MySQL)同步至ClickHouse集群,帮助您轻松实现数据的流转,将企业数据集中分析。

前提条件

  • 源库中待同步的数据表必须具备主键。
  • 已创建目标ClickHouse集群,详情请参见创建ClickHouse集群

注意事项

  • DTS在执行全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升,您需要在执行数据同步前评估数据同步对源库和目标库性能的影响,同时建议您在业务低峰期执行数据同步。
  • 待同步数据库的数量符合云数据库ClickHouse的限制,即不超过256个。
  • 待同步数据库、表和列的名称符合云数据库ClickHouse的命名规范,相关规范请参见对象命名规范限制

同步初始化类型说明

同步初始化类型 说明
结构初始化 DTS将源库中待同步对象的结构定义信息同步至目标库,目前支持的对象为库、表和视图。
警告 此场景属于异构数据库间的数据同步,DTS在执行结构初始化时数据类型无法完全对应,请谨慎评估数据类型的映射关系对业务的影响,详情请参见结构初始化涉及的数据类型映射关系
全量数据初始化 DTS将源库中待同步对象的存量数据,全部同步到目标库中,作为后续增量同步数据的基线数据。
警告 在结构初始化和全量数据初始化完成之前,请勿对源库和目标库的同步对象执行DDL操作,否则可能导致数据同步失败。
增量数据初始化 DTS在全量数据初始化的基础上,将源库的增量更新数据实时同步至目标库。

在增量数据初始化阶段,DTS支持同步的SQL语句如下:

  • DML:INSERT、UPDATE、DELETE
  • DDL:
    • CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE
    • CREATE VIEW
    • ADD COLUMN、MODIFY COLUMN、DROP COLUMN
    警告 请勿在源库执行上述范围以外的DDL语句,否则将导致数据同步失败。

操作步骤

  1. 购买数据同步作业,详情请参见购买流程
    说明 购买时,选择源实例为MySQL,目标实例为ClickHouse,并选择同步拓扑为单向同步
  2. 在左侧导航栏,单击数据同步
  3. 同步作业列表页面顶部,选择同步的目标实例所属地域。
    选择地域
  4. 定位至已购买的数据同步实例,单击配置同步链路
  5. 配置数据同步作业的源库和目标库信息。
    配置源和目库信息
    类别 配置 说明
    同步作业名称 DTS会自动生成一个同步作业名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源实例信息 实例类型 选择RDS实例
    实例地区 购买数据同步实例时选择的源实例地域信息,不可变更。
    实例ID 选择源RDS实例ID。
    数据库账号 填入源RDS的数据库账号,该账号需具备REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW和所有同步对象的SELECT权限。
    说明 当源RDS实例的数据库类型为MySQL 5.5MySQL 5.6时,无需配置数据库账号数据库密码
    数据库密码 填入该数据库账号的密码。
    连接方式 根据需求选择非加密连接SSL安全连接。如果设置为SSL安全连接,您需要提前开启RDS实例的SSL加密功能,详情请参见设置SSL加密
    目标实例信息 实例类型 选择云数据库ClickHouse
    实例地区 购买数据同步实例时选择的目标实例地域信息,不可变更。
    ClickHouse实例ID 选择目标ClickHouse实例ID。
    数据库账号 填入目标ClickHouse实例的数据库账号。
    数据库密码 填入该数据库账号的密码。
  6. 单击页面右下角的授权白名单并进入下一步
    此步骤中,DTS会将DTS服务器的IP地址添加至源实例和目标集群的白名单中,以保障DTS可以正常连接源实例和目标集群。
  7. 配置同步策略及对象信息。
    配置同步策略和对象
    配置 说明
    同步初始化 选中结构初始化全量数据初始化增量数据初始化,相关说明请参见同步初始化类型说明
    目标已存在表的处理模式
    • 预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据同步作业不会被启动。
      说明 如果目标库中同名的表不能删除或重命名,您可以设置该表在目标库中的名称来避免表名冲突,详情请参见设置同步对象在目标实例中的名称
    • 忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
      警告 选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:
      • 表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在全量数据初始化阶段会保留目标库中的该条记录;在增量数据初始化则会覆盖目标库的该条记录。
      • 表结构不一致的情况下,可能会导致无法初始化数据、只能同步部分列的数据或同步失败。
    多表归并
    • 选择为:通常在OLTP场景中,为提高业务表响应速度,通常会做分库分表处理。此类场景中,您可以借助DTS的多表归并功能将源库中多个表结构相同的表(即各分表)同步至ClickHouse集群的同一个表中。
      说明
      • DTS会在ClickHouse集群的同步目标表中增加__dts_data_source列(类型为varchar)来存储数据来源。DTS将以<dts数据同步实例ID>:<源数据库名>.<源表名>的格式写入列值用于区分表的来源,例如dts********:dtstestdata.customer1
      • 多表归并功能基于实例级别,如果需要让部分表执行多表归并,另一部分不执行多表归并,您需要为这两批表分别创建数据同步作业。
    • 选择为:默认选项。
    同步操作类型 根据业务选中需要同步的操作类型,默认情况下都处于选中状态。
    说明 如果多表归并选择为,则不再支持DDL操作的同步。
    选择同步对象 源库对象框中单击待迁移的对象,然后单击向右小箭头图标将其移动至已选择对象框。

    同步对象的选择粒度为库、表和列。默认情况下,同步对象的名称保持不变。如果您需要同步对象在目标实例上名称不同,请使用对象名映射功能,详情请参见设置同步对象在目标实例中的名称

    警告 如果选择多表归并,选择源库的多个表后,您需要通过对象名映射功能,将其改为ClickHouse集群中的同一个表名,否则将导致数据不一致。操作方法请参见设置同步对象在目标实例中的名称
  8. 单击下一步
  9. 配置待同步表在ClickHouse中的主键列、排序键、分区键和Sharding_key信息。
    clickhouse高级配置
    说明
    • 主键列和排序键可以是组合键,即您可以在对应的下拉框中选择多个字段作为主键列和排序键;分区键和Sharding_key只能手动填写一个字段或字段表达式。更多关于主键列、排序键、分区键和Sharding_key的信息,请参见Create Table
    • 如果表的数量较多,您可以按照表名过滤并批量设置分区键和Sharding_key,例如在全部设分区键为后的文本框中填写字段或字段表达式,然后单击文本框后的确定
  10. 上述配置完成后,单击页面右下角的预检查并启动
    说明
    • 在数据同步作业正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动数据同步作业。
    • 如果预检查失败,单击具体检查项后的提示图标,查看失败详情。根据提示修复后,重新进行预检查。
  11. 预检查对话框中显示预检查通过后,关闭预检查对话框,同步作业将正式开始。
  12. 等待同步作业的链路初始化完成,直至处于同步中状态。
    您可以在 数据同步页面,查看数据同步作业的状态。查看同步作业状态