开发者社区> 问答> 正文

数据库实时同步

已解决

展开
收起
2018-05-10 02:35:27 1015 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    数据传输DTS提供的数据实时同步功能,简单易用。只需3个步骤,即可完成整个同步链路的配置。本小节介绍如何使用数据传输服务快速创建两个RDS(MySQL)实例之间的实时同步作业,实现RDS增量数据的实时同步。

    同步限制

    • 数据源

      • 目前实时同步只能支持RDS MySQL实例,暂不支持其他数据源类型
      • 目标实例不支持访问模式为标准模式且只有外网连接地址的RDS实例
      • 不支持香港可用区A的RDS实例的实时同步
    • 同步架构

      目前数据传输服务提供的实时同步功能支持的同步架构有限,其仅能支持如下三种架构:

      • A->B 即两个实例之间的单向同步。且要求B中同步的对象必须为只读,否则可能导致同步链路异常。

        进入DTS控制台

      • A->B/C/D 即1对多的分发式同步架构,这个架构对目标RDS实例个数没有限制,但是要求目标实例中的同步对象必须为只读,否则可能导致同步链路异常。

        进入DTS控制台

      • B/C/D->A 即多对1的数据汇总架构。对于多对1的同步架构,要求每个同步链路的同步对象不相同,保证同步完整性。

        进入DTS控制台

        对于下面几种同步架构,暂时不支持:

      • A->B->C 即级联架构。

        进入DTS控制台

      • A->B->A 即实例A和实例B之间的双向同步架构。

        进入DTS控制台

        如果用户配置同步链路过程中,配置了这些不支持的同步架构,那么预检查中的复杂拓扑检查项会检查失败。

    • 不兼容触发器

      如果同步对象为整个库且这个库中包含了会更新同步表内容的触发器,那么可能导致同步数据不一致。

      触发器内容为在insert一条数据到a之后,在b中插入一条数据。这种情况下,在同步过程中,如果源实例有a上的insert操作,就会导致b表在源实例跟目标实例数据不一致。

      为了解决这个问题,只能将目标实例中的对应触发器删除掉。b表的数据由源实例同步过去。具体解决方案详见最佳实践中的,触发器存在情况下如何配置同步链路

    前提条件

    在配置同步作业前,要确保同步作业的源及目标RDS实例都已经存在。如果不存在,那么请先购买RDS实例购买RDS实例

    操作步骤

    下面我们详细介绍下创建任意两个RDS实例之间的同步链路的具体步骤。

    1. 购买同步链路。

      1. 进入数据传输服务控制台,进入数据同步页面。
      2. 点击控制台右上角“创建同步作业” 开始作业配置。
      3. 在链路配置之前需要购买一个同步链路。同步链路目前支持包年包月及按量付费两种付费模式,可以根据需要选择不同的付费模式。

        在购买页面需要配置的参数包括:

      • 源地域

        源地域为同步链路源RDS实例所在地域。

      • 目标地域

        目标地域为同步链路目标RDS实例所在地域。

      • 实例规格

        实例规格影响了链路的同步性能,实例规格跟性能之间的对应关系详见 数据同步规格说明

      • 数量

        数量为一次性购买的同步链路的数量,如果购买的是按量付费实例,一次最多购买99条链路。

        当购买完同步实例,返回数据传输控制台,点击新购链路右侧的“配置同步作业” 开始链路配置。

    2. 同步链路连接信息配置。

      在这一步主要配置:

      • 同步作业名称同步作业名称没有唯一性要求,主要为了更方便识别具体的作业,建议选择一个有业务意义的作业名称,方便后续的链路查找及管理。
      • 同步链路的RDS实例ID源跟目标RDS实例必须为两个不同的实例,选择RDS实例ID时,下拉菜单中只列出对应阿里云账号下的RDS For MySQL实例。

        当这些内容配置完成后,可以点击“授权白名单并进入下一步”。

    3. 授权RDS实例白名单。

      这个步骤,主要是将数据传输服务器IP添加到同步RDS实例的白名单中。避免因为RDS设置了白名单,数据传输服务器连接不上RDS导致同步作业创建失败。

      为了保证同步作业的稳定性,在同步过程中,请勿将这些服务器IP从RDS实例的白名单中删除。

      当白名单授权后,点击下一步,进入同步账号创建。

    4. 创建目标库上的同步账号。

      这个步骤主要是在目标RDS实例上创建一个同步账号,账号名字为:dtssyncwriter,在同步过程中,不能删除这个账号,否则会导致同步链路中断。

    5. 选择同步对象。

      当创建完目标RDS实例的同步账号后,即进入同步对象的选择步骤。实时同步的同步对象的选择粒度可以支持到表级别,即用户可以选择同步某些库或是同步某几张表。

      如果选择的同步对象为整个库,那么这个库中所有对象的结构变更操作(例如create table,drop view 等),都会同步到目标库。

      如果选择的某张表,那么只有这个表的drop/alter/truncate/rename table,create/drop index 的操作会同步到目标库。

      需要注意的是rename table操作可能导致同步数据不一致。例如同步对象只包含表A,不包含表B,如果同步过程中源实例执行了rename A to B的操作,那么改名后的B表的操作不会被同步到目标库。为了解决这个问题,可以选择同步表A、B对应的整个数据库。

      当选择完同步对象后,即进入同步初始化选择。

    6. 同步初始化配置。

      同步初始化配置,初始化是同步链路启动的第一步,它会将源实例中已经存在同步对象的结构及数据在目标实例中初始化,作为后续增量同步数据的基线数据。

      同步初始化类型细分为:结构初始化,全量数据初始化。默认情况下,需要选择结构初始化及全量初始化。

    7. 预检查。

      当上面所有选项配置完成后,即进入启动之前的预检查。

      当同步作业配置完成后,数据传输服务会进行限制预检查,当预检查通过后,可以点击 启动 按钮,启动同步作业。

      当同步作业启动之后,即进入同步作业列表。此时刚启动的作业处于同步初始化状态。初始化的时间长度依赖于源实例中同步对象的数据量大小。当初始化完成后同步链路即进入同步中的状态,此时源跟目标实例的同步链路才真正建立完成。

    2018-05-15 05:20:03
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载