HybridDB for MySQL原生支持直接从RDS实时同步数据,用户可以快速地构建起RDS到HybridDB for MySQL的同步关系,轻松实现数据流转和复杂查询加速。

前提条件

  • 必须使用阿里云主账户执行该操作。
  • 该操作只支持阿里云RDS for MySQL(5.6版本)数据源,网络类型可以是经典网络或者专有网络。不支持自建MySQL。
  • 考虑到数据的绝对精确,目前仅支持主键表的同步,不支持非主键表的同步。
  • 一个RDS实例推荐只创建一个同步通道,同步过程需要使具有SELECT权限的RDS实例用户。
  • 实例必须是高性能计算规格实例,并且实例状态为运行中。
  • 源RDS实例已经创建了只读账户。
  • HybridDB for MySQL节点资源会限制最大同步任务数,双节点实例最多不要超过64个同步任务;支持一个任务同步多个表,节省资源。如果实例节点数较少,而同步任务数较多时,可能出现同步任务不运行的情况。

操作步骤

  1. 在HybridDB for MySQL控制台开启引擎内部监控,操作如下:
    1. 登录 HybridDB for MySQL管理控制台
    2. 找到目标实例,单击实例右侧的管理选项。
    3. 在左侧导航栏中,单击引擎详情
      说明 只有分析引擎CStore的实例才会出现该导航选项。
    4. 引擎详情页点击开启引擎内部监控
    5. 开通后,根据当前访问IP是否在内部控制台访问白名单内,引擎详情出现不同的选项。
      • 页面出现内部引擎控制详情按键,请跳转至步骤 i
      • 页面出现修改内部控制台白名单按键,请跳转至下一步。
    6. 单击修改内部控制台白名单,系统弹出对话框。
    7. 删除网络访问白名单中的127.0.0.1,填入引擎详情页下方显示的当前访问IP,单击确认
    8. 单击内部引擎控制详情,跳转至HybridDB for MySQL控制台(内部),如下图所示。
  2. 使用HybridDB for MySQL实例的账号和密码登录HybridDB for MySQL内部控制台。

  3. 在左侧导航中,选择DataSync

  4. Data Sync页的DataSource页签中单击创建数据同步通道

  5. 创建数据同步通道页中,填入参数后,单击下一步,等待几分钟即可完成同步通道创建。

    必填参数说明:

    • 同步通道名称:根据源实例的用途填写,支持英文字母或数字,长度控制在128个字符,可以与RDS实例名称一样。
    • RDS实例名称:需要进行同步的源RDS实例名称。
    • 账号:全量同步时访问源RDS实例的账号。
    • 密码:全量同步时访问源RDS实例的账号密码。

    可选参数(一般不用填写,如果RDS实例为只读实例时请必填):

    • RDS实例所在Region:源RDS实例所在地域,不配置会默认是源实例所在位置。
    • 备库URL:可选。
    • RDS实例从库实例名称:可选,指定RDS从库的实例名称。如果配置了该参数,系统从指定的备库同步而不从主库同步。
  6. 回到DataSync首页,点击同步任务列表中的同步表结构
  7. 表同步结构页,在左侧选择栏选择源RDS实例的表结构,通过向右箭头将其选入右侧目标栏。如需撤回,可以选择右侧的目标表,单击向左箭头将其撤回。

    目前支持三种同步模式的表定义类型,以适应多库多表的同步场景:

    • 目标表名需要源表schema作为前缀:目标表自动加上原表schema作为前缀,可以用于多库同步到中心库,但对表名敏感的应用有侵入。
    • 多实例多库相同表同步至单表:目标表自动增加一个source_schema字段放在第一列,该字段存储通道信息、库信息、表信息,并作为联合主键,防止多实例多库分库分表同步到一个目标表出现主键冲突。如果确定同步不会出现主键冲突,可以不使用这个模式。
    • 多实例单库相同表同步至单表:目标表自动增加一个source字段放在第一列,该字段存储通道信息、表信息,并作为联合主键,防止多实例单库分库分表同步到一个目标表出现主键冲突。如果确定同步不会出现主键冲突,可以不使用这个模式。
  8. 单击预览目标表进入如下页面:

    针对特定场景的表结构,需要仔细审核。如需修改建表语句,有两种操作方式可供选择。

    • 在对应表记录左侧操作列中,单击修改表结构进入如下页面:

      上方的RDS Table DDL为源表的DDL,不可编辑;下方的HDB Table DDL为HybridDB for MySQL表的DDL,可编辑。完成编辑后,单击保存修改返回原页面。

    • 如果是多张分库分表同步到一张HybridDB for MySQL目标表,点击页面下方的批量修改表结构进入如下页面:

      在左侧选择栏选中具有相同表结构的源表,在右侧输入框中输入目标表名后按回车,即可以编辑右下方的HDB表结构内的DDL,完成修改后,单击保存修改返回原页面。

  9. 表结构同步页,单击开始建表,开始表结构同步。

    如出现失败信息,请修改表结构后,再继续执行。

    说明 同步表结构过程中涉及到DDL修改,容易出现错误,如有问题请随时联系阿里云客服获取技术支持。
  10. 创建同步任务页,选择同步类型数据源表结构,然后单击下一步

    两种同步类型:

    • 全量同步:数据以SELECT的方式全量写入HybridDB for MySQL。
    • 增量同步:数据以binlog的方式从RDS同步到HybridDB for MySQL。

    参数:

    • 起始时间:指定增量同步的开始时间,可以指定(一般无需指定)从哪个时间点开始同步数据。
      注意 由于MySQL的binlog采用的是UTC时间,在操作时,该参数时间为当前浏览器的时间,后台会自动将浏览器的时间转换成UTC格式的时间。
    • 起始offset:指定增量同步的日志起点,只用于引擎内部,用户无需关心。
    • 批量表大小:指定增量同步并发同步的表数量,一般推荐20张表并发同步,这样可以提升同步性能,如果需要同步大量的表,可以将该参数设置得大一些。
    • 监听种类:默认为Insert、Update和Delete。
  11. 在如下页面,单击开始同步,启动同步任务。

    注意 在创建同步任务时,如果同时勾选了全量迁移增量同步,系统执行时会自动以先全量后增量的方式进行同步。
  12. 查看任务状态。

    可在DataSyncDataSync Jobs页签查看任务状态。

  13. 如果,任务状态正常,请跳过该步骤。如任务无法正常执行,用户可以取消任务,然后重新执行上述操作,执行新的同步任务。

    DataSync Jobs页签中,选择对应任务的Operation列,选择取消

RDS MySQ同步到HybridDB for MySQL的SQL兼容性

DML支持情况

操作 支持 备注
REPLACE 对应HybridDB for MySQL的REPLACE
INSERT 对应HybridDB for MySQL的REPLACE
UPDATE 对应HybridDB for MySQL的REPALCE
DELETE 对应HybridDB for MySQL的DELETE,用户在配置任务时可选择是否同步源端的DELETE,默认为同步
DDL支持情况

对于不支持的DDL,均忽略不处理。

操作 支持 备注
CREATE TABLE 用户需使用表结构同步功能迁移表结构,进而建立同步任务
DROP TABLE 忽略不处理
TRUNCATE TABLE 忽略不处理
RENAME TABLE 忽略不处理
OPTIMIZE TABLE 忽略不处理
ALTER TABLE ADD COLUMN 会忽略源表列的NOT NULL 属性
ALTER TABLE DROP COLUMN 此列在HybridDB for MySQL的表中仍然存在。若此列没有NOT NULL属性,不影响同步任务
ALTER TABLE RENAME COLUMN 可能导致同步任务失败
ALTER TABLE MODIFY COLUMN 可能导致同步任务失败
所有索引DDL HybridDB for MySQL提供了全部列索引