更新时间:2022-05-25 GMT+08:00
分享

MySQL自建到Kafka同步实例

本小节以MySQL自建->Kafka自建的实时同步为示例,介绍如何使用数据复制服务配置实时同步任务。

前提条件

操作步骤

  1. 在“实时同步管理”页面,单击“创建同步任务”。
  2. 在“同步实例”页面,填选区域、任务名称、任务异常通知信息、SMN主题、时延阈值、任务异常自动结束时间、描述、同步实例信息,单击“下一步”。

    图1 同步任务信息
    表1 任务和描述

    参数

    描述

    区域

    当前所在区域,可进行切换。

    任务名称

    任务名称在4-50位之间,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或下划线,不能包含其他的特殊字符。

    任务异常通知设置

    该项为可选参数,开启之后,选择对应的SMN主题。当同步任务状态异常时,系统将发送通知。

    SMN主题

    “任务异常通知设置”项开启后可见,需提前在SMN上申请主题并添加订阅。

    SMN主题申请和订阅可参考《消息通知服务用户指南》

    时延阈值

    在增量同步阶段,源数据库和目标数据库之间的同步有时会存在一个时间差,称为时延,单位为秒。

    时延阈值设置是指时延超过一定的值后(时延阈值范围为1—3600s),DRS可以发送告警通知。告警通知将在时延稳定超过设定的阈值6min后发送,避免出现由于时延波动反复发送告警通知的情况。

    说明:
    • 首次进入增量同步阶段,会有较多数据等待同步,存在较大的时延,属于正常情况,不在此功能的监控范围之内。
    • 设置时延阈值之前,需要设置任务异常通知。

    任务异常自动结束时间(天)

    设置任务异常自动结束天数,输入值必须在14-100之间。

    说明:

    异常状态下的任务仍然会计费,而长时间异常的任务无法续传和恢复。设置任务异常自动结束天数后,异常且超时的任务将会自动结束,以免产生不必要的费用。

    描述

    描述不能超过256位,且不能包含! = < > & ' " \ 特殊字符。

    图2 同步实例信息
    表2 同步实例信息

    参数

    描述

    数据流动方向

    选择“自建-自建”

    源数据库引擎

    选择“MySQL”

    目标数据库引擎

    选择“Kafka”

    网络类型

    此处以“公网网络”为示例。目前支持可选公网网络、VPC网络和VPN、专线网络。

    可用区

    选择DRS实例创建在哪个可用区,选择跟源或目标库相同的可用区性能更优。

    VPC

    选择可用的虚拟私有云。

    同步实例所在子网

    请选择同步实例所在的子网。也可以单击“查看子网”,跳转至“网络控制台”查看实例所在子网帮助选择。

    默认值为当前所选数据库实例所在子网,请选择有可用IP地址的子网。为确保同步实例创建成功,仅显示已经开启DHCP的子网。

    内网安全组

    请选择内网安全组。内网安全组限制实例的安全访问规则,加强安全访问。

    同步类型

    “增量”

    企业项目

    对于已成功关联企业项目的用户,仅需在“企业项目”下拉框中选择目标项目。

    如果需要自定义企业项目,请前往项目管理服务进行创建。关于如何创建项目,详见《项目管理用户指南》。

    标签

    可选配置,对同步任务的标识。使用标签可方便管理您的实时同步任务。每个任务最多支持10个标签配额。

    任务创建成功后,您可以单击实例名称,在“标签”页签下查看对应标签。关于标签的详细操作,请参见标签管理

  3. 在“源库及目标库”页面,同步实例创建成功后,填选源库信息和目标库信息,建议您单击“源库和目标库”处的“测试连接”,分别测试并确定与源库和目标库连通后,勾选协议,单击“下一步”

    图3 源库信息
    表3 源库信息

    参数

    描述

    IP地址或域名

    源数据库的IP地址或域名。

    端口

    源数据库服务端口,可输入范围为1~65535间的整数。

    数据库用户名

    源数据库的用户名。

    数据库密码

    源数据库的用户名所对应的密码。

    SSL安全连接

    通过该功能,用户可以选择是否开启对迁移链路的加密。如果开启该功能,需要用户上传SSL CA根证书。

    说明:
    • 最大支持上传500KB的证书文件。
    • 如果不使用SSL证书,请自行承担数据安全风险。

    源数据库的数据库用户名和密码,会被系统加密暂存,直至删除该迁移任务后自动清除。

    图4 目标库信息
    表4 源库信息

    参数

    描述

    IP地址或域名

    目标数据库的IP地址或域名。

  4. “设置同步”页面,选择同步策略、数据格式和同步对象,单击“下一步”

    图5 同步模式
    表5 同步对象

    参数

    描述

    同步Topic策略

    同步Topic策略,可选择

    • 集中投递到一个Topic:适合源库业务量不大的场景。
    • 自动生成Topic名字:适合每张表数据量都较大的场景,按每一张库表来确定一个Topic。

    Topic

    选择目标端需要同步到的Topic,同步Topic策略选择集中投递到一个Topic时可见。

    Topic名字格式

    Topic名字格式,同步Topic策略选择自动生成Topic名字时可见。

    Topic名字格式支持database和tablename两个变量,其他字符都当做常量。分别用$database$代替数据库名,$tablename$代替表名。

    例如:配置成$database$-$tablename$时,如果数据库名称为db1,表名为tab1,则Topic名字为db1-tab1。如果是DDL语句,$tablename$为空,则Topic名字为db1.

    同步到kafka partition策略

    同步到kafka partition策略。

    • 按库名+表名的hash值投递到不同Partition:适用于单表的查询场景,可以提高单表读写性能,推荐使用此选项。
    • 全部投递到Partition 0:适用于有事务要求的场景,写入性能比较差,如果没有强事务要求,不推荐使用此选项。
    • 按表的主键值hash值投递到不同的Partion:适用于一个表一个Topic的场景,避免该表都写到同一个分区,消费者可以并行从各分区获取数据。

    投送到kafka的数据格式

    选择MySQL投送到kafka的数据格式。

    • Avro:可以显示Avro二进制编码,高效获取数据。
    • JSON:为Json消息格式,方便解释格式,但需要占用更多的空间。
    • JSON-C:一种能够兼容多个批量,流式计算框架的数据格式。

    详细格式可参考Kafka消息格式

    同步对象

    同步对象支持表级同步、库级同步、导入对象文件,您可以根据业务场景选择对应的数据进行同步。

    • 选择对象的时候支持搜索,以便您快速选择需要的数据库对象。
    • 在同步对象右侧已选对象框中,可以使用对象名映射功能进行源数据库和目标数据库中的同步对象映射,具体操作可参考对象名映射
    • 选择导入对象文件,具体步骤和说明可参考导入同步对象

  5. 在“数据加工”页面,选择需要加工的列,进行列加工。

    • 如果不需要数据加工,单击“下一步”。
    • 如果需要加工列,参考数据加工章节,设置相关规则。
    图6 数据加工

  6. “预检查”页面,进行同步任务预校验,校验是否可进行实时同步

    • 查看检查结果,如有不通过的检查项,需要修复不通过项后,单击“重新校验”按钮重新进行任务预校验。

      预检查不通过项处理建议请参见《数据复制服务用户指南》中的“预检查不通过项修复方法”。

    • 预检查完成后,且所有检查项结果均通过时,单击“下一步”
      图7 预检查

      所有检查项结果均通过时,若存在请确认项,需要阅读并确认详情后才可以继续执行下一步操作。

  7. “任务确认”页面,设置同步任务的启动时间,并确认同步任务信息无误后,勾选协议,单击“启动任务”,提交同步任务。

    • 同步任务的启动时间可以根据业务需求,设置为“立即启动”或“稍后启动”。
    • 预计同步任务启动后,会对源数据库和目标数据库的性能产生影响,建议选择业务低峰期,合理设置同步任务的启动时间。

  8. 同步任务提交后,您可在实时同步管理”页面,查看并管理自己的任务。

    • 您可查看任务提交后的状态,状态请参见任务状态
    • 在任务列表的右上角,单击刷新列表,可查看到最新的任务状态。

分享:

    相关文档

    相关产品

close