华为云用户手册

  • 添加标签 在“实时灾备管理”页面,选择指定的灾备任务,单击任务名称进入“基本信息”页签。 在左侧导航栏,单击“标签”。 在“标签”页签单击“添加/编辑标签”,在“添加/编辑标签”弹出框中,输入标签的键和值,单击“添加”,然后单击“确定”。 输入标签的键和值时,系统会自动联想当前用户的所有实例(除当前实例外)的所有关联的预定义标签。 标签的键不能为空且必须唯一,长度为1~128个字符,可以包含任意语种字母、数字、空格和_.:=+-@字符,但首尾不能含有空格,不能以_sys_开头。 标签的值可以为空字符串,长度为0~255个字符,可以包含任意语种字母、数字、空格和_.:/=+-@字符,但首尾不能含有空格。 添加成功后,您可在当前任务的所有关联的标签集合中,查询并管理自己的标签。
  • 暂停任务 在“实时灾备管理”页面的灾备列表中,选择要暂停的灾备任务,单击“操作”列的“暂停”。 在弹出的“暂停任务”对话框中,选择“暂停日志抓取”后,单击“是”。 暂停任务时,仅暂停增量数据的回放、或者拉取加回放,在进行数据库割接前,请先结束任务。 勾选“暂停日志抓取”后,该功能会停止一切DRS和源库、目标库的连接,请注意暂停过长可能会因为源端所需日志过期而导致任务无法恢复续传。建议暂停时间不超过24小时,具体时间请排查相应日志配置。 暂停成功后,状态栏显示为“已暂停”。 需要继续灾备时,可以使用续传功能。
  • 约束限制 对比是大小写敏感的,如果业务数据库或灾备数据库一端为非大小写敏感,一端为大小写敏感,对比结果可能出现不一致的情况。 如果在对比时业务数据库进行DDL操作,为保证对比结果的准确性,需重新进行内容对比。 如果单独对灾备数据库进行数据修改操作,可能会导致对比结果不一致。 如果业务数据库字符类型存在编码异常的情况,通过DRS灾备或对比时会因数据库驱动转码转换为异常码点,最终可能导致内容对比一致,实际字节不一致。 内容对比功能目前只支持带有主键的表,对于不支持内容对比的表可以使用行数对比功能。所以数据级对比功能需要结合业务场景,选用行数对比或者内容对比。 DRS进行内容比对期间不能暂停DRS任务,否则可能导致比对任务失败。 部分数据类型不支持内容对比,详情参考内容对比不支持哪些数据类型。 为避免占用资源,DRS对行对比的时长进行限制,超过限制时长,行对比任务自动停止。业务数据库是关系型数据库时,行对比限制时长为60分钟;业务数据库为非关系数据库,行对比限制时长为30分钟。 为避免占用资源,DRS任务的对比结果限制保留60天,60天后自动清除。 对于支持内容对比的灾备链路,如果创建任务时可以选择实例规格,那么仅支持大规格及以上规格进行内容对比。 MySQL、 GaussDB (for MySQL)为源链路,源数据库中的虚拟列不支持内容对比,对比时会过滤虚拟列。
  • 对数据库影响 对象对比:会查询源库及目标库的系统表,占用10个左右的session的连接数,正常情况不会对数据库产生影响。但是如果对象数量巨大(比如几十万张表),可能会对数据库产生一定的查询压力。 行数对比:会查询源库及目标库的表行数,占用10个左右的session的连接数,正常的select count语句基本不会对数据库产生影响。但是如果表数据量巨大(亿级)会对数据库产生一定的查询压力,返回查询结果会比较慢。 内容对比:会查询源库及目标库的全部数据,涉及每个字段都会对比,所以会对数据库产生一定的查询压力,主要体现在IO上,查询速度受限于源库和目标库的IO和网络带宽。占用1-2个CPU,占用10个左右的session的连接数。 用户对比:会查询源库及目标库的账户和权限,基本不会对数据库产生影响。
  • 操作说明 在“实时同步管理”页面,单击“创建同步任务”。 在“同步实例”页面,填选任务名称、描述、同步实例等信息,其中DRS任务类型选择“双AZ”,完成后单击“下一步”。 返回“实时同步管理”页面可以可以看到,DRS会同时创建一主一备两个子任务。 图1 主备任务 配置并启动同步任务后,DRS会启动主AZ任务进行同步,此时备AZ任务处于暂停状态。 图2 主备倒换前 当主AZ任务发生异常,DRS会自动启动备AZ任务继续进行同步。 图3 主备倒换后
  • 操作步骤 在“实时同步管理”页面,单击左上角“批量导入任务”。 在“批量导入任务”对话框中,单击“下载模板”。 图1 批量导入任务 编辑下载的Excel模板,按照要求填写任务信息。 填写完成后,单击“添加文件”,完成模板上传。 待上传并校验成功后,单击“确定”提交创建任务。 DRS不会保存上传的Excel文件,只针对内容进行解析。 任务创建后,数据库的IP地址或 域名 、数据库用户名和密码,会被系统加密暂存,直至删除该任务后自动清除。
  • SASL_PLAINTEXT认证 使用SASL机制连接Kafka,需要设置SASL相关配置。 图2 SASL_PLAINTEXT 表1 参数信息 参数 描述 SASL机制 用于客户端连接的SASL机制,支持以下四项,Kafka server默认是 GSSAPI 机制,更多说明可参考SASL机制。 GSSAPI PLAIN SC RAM -SHA-256 SCRAM-SHA-512 令牌委托 是否为委托令牌鉴权,SASL机制选择“SCRAM-SHA-256”或者“SCRAM-SHA-512”时可见。 用户名 登录使用的用户名。 密码 登录使用的密码
  • SSL认证 使用SSL加密方式连接Kafka,需要设置SSL相关配置。 图3 SSL 表2 参数信息 参数 描述 Truststore证书 后缀名为jks的SSL证书,证书文件生成可参考SSL证书。 Truststore证书密码 证书对应的秘钥。 主机名端点识别算法 指定通过服务端证书验证服务端主机名的端点识别算法,选填,不填表示禁用主机名验证。 SSL双向认证 是否开启SSL双向认证。 Keystore证书 SSL双向认证开启可见,需要上传后缀名为jks的双向认证证书。 Keystore证书密码 SSL双向认证开启可见,SSL双向认证证书对应的秘钥。 Keystore私钥密码 选填,Keystore证书中私钥的密码。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库参数要求: 源数据库模式必须设置为FULL模式。 源数据库必须开启SQL Server Agent代理服务。 源数据库若开启客户端配置中的“强制协议加密(Force Protocol Encrypton)”,必须同时开启“信任服务器证书(trust server certificate)”,如下图1所示: 图1 查看客户端属性 源数据库对象要求: 源库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。 源库中不允许存在名称为cdc的用户名或schema。 源库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。 源库待同步对象的表中列名不能包含如下字符:[]?。 目标数据库对象要求: 目标数据库实例必须有足够的磁盘空间。 除了SQL Server系统数据库之外,目标数据库不能包含与源数据库同名的数据库。 其他使用须知: 不支持源数据库主备切换,源数据库主备切换会导致同步任务失败。 不支持源数据库Microsoft SQL Server为TLS 1.0、TLS 1.1协议的同步,如果需要同步,建议源库升级到TLS 1.2及以上版本。 不建议在数据库中使用日期类型做主键,因存在精度损失,该特性影响DRS增量场景下对 UPDATE、DELETE语句的同步。 SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。 目标数据库为Oracle兼容模式时,会将写入的空字符串作为NULL处理,源数据库存在空字符串且具有非空约束时,会导致写入失败。 DRS全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。 对象名同步到目标库后会转换成小写,因此选择的源库表中不能存在表名称字母相同但大小写不同的表,否则会导致同步失败。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 不支持DDL操作,源数据库进行的DDL操作不会同步到目标数据库。 不支持大数据类型image、text、ntext的删除操作。 不支持delete和update目标端主键类型为blob、text、clob、nclob、bytea的表。 单增量任务再编辑增加同步对象时,在子任务变更结束前,不建议对新增同步的表进行DML操作,否则可能导致部分数据无法同步到目标数据库。 同步对比须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库参数要求: 源数据库的分区表触发器不可以设置为disable。 全量同步支持源库备机状态,但需要设置hot_standby_feedback为on;增量同步不支持源库备机状态。 若要做增量同步: 源数据库的“pg_hba.conf” 文件中包含如下的配置: host replication all 0.0.0.0/0 md5 源数据库参数wal_level必须配置为logical。 源数据库需提前安装test_decoding插件。 源数据库中无主键表的replica identity属性必须为full。 源数据库的max_replication_slots参数值必须大于当前已使用的复制槽数量。 源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。 源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。 源数据库对象要求: 同步对象依赖和关联的对象也须一起同步,否则可能导致同步失败。 说明: 常见的关联关系:主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。 目标数据库参数要求: 目标数据库参数max_prepared_transactions须大于源数据库。 目标数据库参数max_worker_processes须大于源数据库。 目标数据库参数max_locks_per_transaction须大于源数据库。 目标数据库参数max_connections须大于源数据库。 目标数据库和源数据库的lc_monetary参数值必须一致。 目标数据库对象要求: 目标数据库的字符集必须与源数据库一致。 目标数据库的时区设置必须与源数据库一致。 同步的表要禁用外键,因为DRS并行回放会使得不同表之间的写入顺序和源库不一致,可能会触发外键约束限制,造成同步失败。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 其他使用须知: 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 暂不支持级联单向同步,例如从实例A同步到实例B,再从实例B同步到实例C。 分区表只同步主表,转为普通表同步到目标库,分区表的数据将集中写入主表。 模式名或表名映射时,为防止索引和约束名冲突,同步后表上的原索引名称将变为此格式:i_+哈希值+原索引名(可能被截断)+_key。其中哈希值由“原模式名_原表名_原索引名”计算得到。同理,表上的原约束名将变为:c_+哈希值+原约束名(可能被截断)+_key。 对于全量+增量和增量任务,启动任务前,请确保源库中未启动长事务,源库启动长事务会阻塞逻辑复制槽的创建,进而引发任务失败。 对于全量+增量和增量任务,任务启动后,仅支持以下版本的源库发生主备倒换:源库为RDS for PostgreSQL 12.6及以上的小版本、RDS for PostgreSQL 13及以上版本的所有小版本。 DRS全量同步表结构时,源库中的character、character varying类型长度在目标库会按照字节长自动扩大(因为目标库为字节长),默认扩大4倍,最大长度为10485760。 DRS全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。 对象名同步到目标库后不进行大小写转换。 源数据库的唯一索引是表达式索引时,全量同步阶段目标数据库GaussDB分布式可能会因为无法创建该索引而导致任务失败。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿修改源数据库表的主键或者唯一键(主键不存在时),否则可能导致增量数据不一致或任务失败。 请勿修改源数据库中表的replica identity属性,否则可能导致增量数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 库级同步时,源库新增无主键表时,请务必同时将该无主键表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。 库级同步时,源库新增主键表时,如果主键列toast属性为main、external、extended时,请务必同时将该表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。 同步对比使用须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。 结束任务须知 正常结束任务: 全量+增量实时同步任务正常结束时,将自动删除任务在源库创建的流复制槽。 强制结束任务: 强制结束全量+增量实时同步任务,需要手动删除源库可能残留的复制槽,可参考PostgreSQL为源强制结束任务章节的指导进行操作。 逻辑复制槽命名规则为“drs_唯一性标识”,其中唯一性标识需要将任务node id中的“-”替换为“_”获取。node id可在DRS任务同步日志页面查看task node id is ***日志找到。
  • 使用建议 DRS任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 为保证同步前后数据一致性,确保同步期间目标数据库无业务写入。 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题。 基于以下原因,建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。 DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。 更多DRS对数据库的影响,可参考DRS对源数据库和目标数据库有什么影响。 数据对比 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库参数要求: 源数据库模式必须设置为FULL模式。 源数据库必须开启SQL Server Agent代理服务。 源数据库若开启客户端配置中的“强制协议加密(Force Protocol Encrypton)”,必须同时开启“信任服务器证书(trust server certificate)”,如下图1所示: 图1 查看客户端属性 源数据库对象要求: 源库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。 源库中不允许存在名称为cdc的用户名或schema。 源库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。 源库待同步对象的表中列名不能包含如下字符:[]?。 目标数据库对象要求: 目标数据库实例必须有足够的磁盘空间。 除了SQL Server系统数据库之外,目标数据库不能包含与源数据库同名的数据库。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 其他使用须知: 不支持源数据库主备切换,源数据库主备切换会导致同步任务失败。 不支持源数据库Microsoft SQL Server为TLS 1.0、TLS 1.1协议的同步,如果需要同步,建议源库升级到TLS 1.2及以上版本。 SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 不支持DDL操作,源数据库进行的DDL操作不会同步到目标数据库。 不支持大数据类型IMAGE、TEXT、NTEXT的删除操作。 支持任务再编辑追加同步对象。 同步对比须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。
  • 添加标签 在“实时同步管理”页面,选择指定的同步任务,单击任务名称进入“基本信息”页签。 在左侧导航栏,单击“标签”。 在“标签”页签单击“添加/编辑标签”,在“添加/编辑标签”弹出框中,输入标签的键和值,单击“添加”,然后单击“确定”。 输入标签的键和值时,系统会自动联想当前用户的所有实例(除当前实例外)的所有关联的预定义标签。 标签的键不能为空且必须唯一,长度为1~128个字符,可以包含任意语种字母、数字、空格和_.:=+-@字符,但首尾不能含有空格,不能以_sys_开头。 标签的值可以为空字符串,长度为0~255个字符,可以包含任意语种字母、数字、空格和_.:/=+-@字符,但首尾不能含有空格。 添加成功后,您可在当前任务的所有关联的标签集合中,查询并管理自己的标签。
  • 操作场景 标签管理服务(Tag Management Service,TMS)用于用户在云平台,通过统一的tag标签管理各种资源。TMS服务与各服务共同实现标签管理能力,TMS提供全局标签管理能力,各服务维护自身标签管理 。当用户资源较多时,可通过不同的标签标识和查找任务。 建议您先在TMS系统中设置预定义标签。 标签由“键”和“值”组成,每个标签中的一个“键”只能对应一个“值”。 每个实例最多支持20个标签配额。
  • 任务参数说明 表1 任务参数说明 参数名 描述 取值范围 默认值 参数类型 是否需要重启 applier_thread_num 全量阶段写数据到目标数据库的线程数 与规格大小有关。 极小规格:1-4 小规格:1-4 中规格:1-8 大规格:1-18 超大规格:1-24 与规格大小有关。 极小规格:2 小规格:2 中规格:4 大规格:6 超大规格:12 int 是 read_task_num 全量阶段从源数据库读取数据的线程数 与规格大小有关。 极小规格:1-2 小规格:1-2 中规格:1-4 大规格:1-8 超大规格:1-12 与规格大小有关。 极小规格:1 小规格:1 中规格:2 大规格:4 超大规格:6 int 是 shard_task_num 全量阶段从源数据库分片线程数 与规格大小有关。 极小规格:1-2 小规格:1-2 中规格:1-4 大规格:1-8 超大规格:1-8 与规格大小有关。 极小规格:1 小规格:1 中规格:2 大规格:4 超大规格:4 int 是 increment_writer_num 增量阶段写目标库线程数 与规格大小有关。 极小规格:1-8 小规格:1-16 中规格:1-32 大规格:1-128 超大规格:1-128 与规格大小有关。 极小规格:4 小规格:8 中规格:16 大规格:64 超大规格:64 int 是 relay_socket_timeout 增量阶段从源数据库拉取日志的超时时间 30000-2147483647毫秒 30000毫秒 int 是 datamove_source_socket_timeout 全量阶段从源数据库拉取数据的超时时间 120000-2147483647毫秒 120000毫秒 int 是
  • 操作步骤 在“实时同步管理”界面,选择指定的同步任务。 单击任务名称,页面跳转至“基本信息”页面。 单击左侧“参数管理”,在“参数”页签可对当前同步任务的参数信息进行修改。 图1 查看参数信息 修改完成后,可选择“保存”或者“取消”设置。 单击“保存”,在弹出框中单击“是”,保存修改。 单击“取消”,在弹出框中单击“是”,放弃本次设置。 部分参数完成修改后,需要重启任务后才生效,可单击右上角“重启”按钮使之生效,也可参考重启同步任务内容进行重启。 除此以外,重置、续传、任务重建、主备倒换、全量阶段修改限速操作也会重启任务进程使设置生效。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库参数要求: 源数据库的分区表触发器不可以设置为disable。 全量同步支持源库备机状态,但需要设置hot_standby_feedback为on;增量同步不支持源库备机状态。 若要做增量同步: 源数据库的“pg_hba.conf” 文件中包含如下的配置: host replication all 0.0.0.0/0 md5 源数据库参数wal_level必须配置为logical。 源数据库需提前安装test_decoding插件。 源数据库中无主键表的replica identity属性必须为full。 源数据库的max_replication_slots参数值必须大于当前已使用的复制槽数量。 源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。 源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。 源数据库对象要求: 同步对象依赖和关联的对象也须一起同步,否则可能导致同步失败。 说明: 常见的关联关系:视图引用表、视图引用视图、主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。 目标数据库参数要求: 目标数据库参数max_prepared_transactions须大于源数据库。 目标数据库参数max_worker_processes须大于源数据库。 目标数据库参数max_locks_per_transaction须大于源数据库。 目标数据库参数max_connections须大于源数据库。 目标数据库和源数据库的lc_monetary参数值必须一致。 目标数据库对象要求: 目标数据库的字符集必须与源数据库一致。 目标数据库的时区设置必须与源数据库一致。 同步的表要禁用外键,因为DRS并行回放会使得不同表之间的写入顺序和源库不一致,可能会触发外键约束限制,造成同步失败。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 其他使用须知: 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 暂不支持级联单向同步,例如从实例A同步到实例B,再从实例B同步到实例C。 分区表只同步主表,转为普通表同步到目标库,分区表的数据将集中写入主表。 模式名或表名映射时,为防止索引和约束名冲突,同步后表上的原索引名称将变为此格式:i_+哈希值+原索引名(可能被截断)+_key。其中哈希值由“原模式名_原表名_原索引名”计算得到。同理,表上的原约束名将变为:c_+哈希值+原约束名(可能被截断)+_key。 对于全量+增量和增量任务,启动任务前,请确保源库中未启动长事务,源库启动长事务会阻塞逻辑复制槽的创建,进而引发任务失败。 对于全量+增量和增量任务,任务启动后,仅支持以下版本的源库发生主备倒换:源库为RDS for PostgreSQL 12.6及以上的小版本、RDS for PostgreSQL 13及以上版本的所有小版本。 DRS全量同步表结构时,源库中的character、character varying类型长度在目标库会按照字节长自动扩大(因为目标库为字节长),默认扩大4倍,最大长度为10485760。 DRS全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。 对象名同步到目标库后不进行大小写转换。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿修改源数据库表的主键或者唯一键(主键不存在时),否则可能导致增量数据不一致或任务失败。 请勿修改源数据库中表的replica identity属性,否则可能导致增量数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 库级同步时,源库新增无主键表时,请务必同时将该无主键表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。 库级同步时,源库新增主键表时,如果主键列toast属性为main、external、extended时,请务必同时将该表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。 同步对比使用须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。 结束任务须知 正常结束任务: 全量+增量实时同步任务正常结束时,将自动删除任务在源库创建的流复制槽。 强制结束任务: 强制结束全量+增量实时同步任务,需要手动删除源库可能残留的复制槽,可参考PostgreSQL为源强制结束任务章节的指导进行操作。 逻辑复制槽命名规则为“drs_唯一性标识”,其中唯一性标识需要将任务node id中的“-”替换为“_”获取。node id可在DRS任务同步日志页面查看task node id is ***日志找到。
  • 表映射 实时同步过程中,如果待同步的表在源数据库和目标数据库中的名称不同,可以使用实时同步提供的表映射功能进行表名映射。例如:将源数据库中的A表同步到目标数据库,变成目标数据库中的B表,此时就可以使用表映射功能来实现。 在“设定同步”页面,同步对象右侧已选对象框中,选择需要进行映射的表,单击“编辑”按钮。 图7 表映射 修改表名。 在“编辑表名”的弹出框中,填写新的表名,修改后的名称即为保存在目标数据库中的表名。 图8 修改表名 查看修改结果。 表名修改成功后,您会看到修改前的表名和修改后的新表名,至此,表示完成表映射的配置。 图9 查看表名修改结果
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库参数要求: 源数据库模式必须设置为FULL模式。 源数据库必须开启SQL Server Agent代理服务。 源数据库若开启客户端配置中的“强制协议加密(Force Protocol Encrypton)”,必须同时开启“信任服务器证书(trust server certificate)”,如下图1所示: 图1 查看客户端属性 源数据库对象要求: 源库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。 源库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。 源库待同步对象的表中列名不能包含如下字符:[]?。 目标数据库对象要求: 目标数据库实例必须有足够的磁盘空间。 其他使用须知: 不支持源数据库主备切换,源数据库主备切换会导致同步任务失败。 不支持源数据库Microsoft SQL Server为TLS 1.0、TLS 1.1协议的同步,如果需要同步,建议源库升级到TLS 1.2及以上版本。 SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 不支持DDL操作,源数据库进行的DDL操作不会同步到目标数据库。 不支持大数据类型IMAGE、TEXT、NTEXT的删除操作。 同步对比须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库参数要求: 源数据库模式必须设置为FULL模式。 源数据库必须开启SQL Server Agent代理服务。 源数据库若开启客户端配置中的“强制协议加密(Force Protocol Encrypton)”,必须同时开启“信任服务器证书(trust server certificate)”,如下图1所示: 图1 查看客户端属性 源数据库对象要求: 源库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。 源库中不允许存在名称为cdc的用户名或schema。 源库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。 源库待同步对象的表中列名不能包含如下字符:[]?。 目标数据库对象要求: 目标数据库实例必须有足够的磁盘空间。 除了SQL Server系统数据库之外,目标数据库不能包含与源数据库同名的数据库。 其他使用须知: 不支持源数据库主备切换,源数据库主备切换会导致同步任务失败。 不支持源数据库Microsoft SQL Server为TLS 1.0、TLS 1.1协议的同步,如果需要同步,建议源库升级到TLS 1.2及以上版本。 不建议在数据库中使用日期类型做主键,因存在精度损失,该特性影响DRS增量场景下对 UPDATE、DELETE语句的同步。 SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。 目标数据库为Oracle兼容模式时,会将写入的空字符串作为NULL处理,源数据库存在空字符串且具有非空约束时,会导致写入失败。 DRS全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。 对象名同步到目标库后会转换成小写,因此选择的源库表中不能存在表名称字母相同但大小写不同的表,否则会导致同步失败。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 不支持DDL操作,源数据库进行的DDL操作不会同步到目标数据库。 不支持大数据类型image、text、ntext的删除操作。 不支持delete和update目标端主键类型为blob、text、clob、nclob、bytea的表。 单增量任务再编辑增加同步对象时,在子任务变更结束前,不建议对新增同步的表进行DML操作,否则可能导致部分数据无法同步到目标数据库。 同步对比须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。
  • 使用须知 DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。 表4 使用须知 类型名称 使用和操作约定 任务启动前须知 源数据库参数要求: 源数据库的分区表触发器不可以设置为disable。 全量同步支持源库备机状态,但需要设置hot_standby_feedback为on;增量同步不支持源库备机状态。 若要做增量同步: 源数据库的“pg_hba.conf” 文件中包含如下的配置: host replication all 0.0.0.0/0 md5 源数据库参数wal_level必须配置为logical。 源数据库需提前安装test_decoding插件。 源数据库中无主键表的replica identity属性必须为full。 源数据库的max_replication_slots参数值必须大于当前已使用的复制槽数量。 源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。 源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。 源数据库对象要求: 同步对象依赖和关联的对象也须一起同步,否则可能导致同步失败。 说明: 常见的关联关系:主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。 目标数据库参数要求: 目标数据库的block_size参数值必须大于源库中的对应参数值。 目标数据库对象要求: 目标库不可以包含,与待同步对象类型相同且名称相同的对象,包括库、模式、表等。系统库、系统模式、系统表等除外。 目标数据库的字符集必须与源数据库一致。 目标数据库的时区设置必须与源数据库一致。 同步的表要禁用外键,因为DRS并行回放会使得不同表之间的写入顺序和源库不一致,可能会触发外键约束限制,造成同步失败。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 其他使用须知: 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 分区表只同步主表,转为普通表同步到目标库,分区表的数据将集中写入主表。 表名映射时,同步后表上的原索引名称变化为如下格式,其中哈希值由“原模式名_原表名_映射后模式名_映射后表名_原索引名”计算得到:i_+哈希值+原索引名(可能被截断)+_key。 表名映射时,同步后表上的原约束名称变化为如下格式,其中哈希值由“原模式名_原表名_映射后模式名_映射后表名_原约束名”计算得到:c_+哈希值+原约束名(可能被截断)+_key。 对于全量+增量和增量任务,启动任务前,请确保源库中未启动长事务,源库启动长事务会阻塞逻辑复制槽的创建,进而引发任务失败。 对于全量+增量和增量任务,任务启动后,仅支持以下版本的源库发生主备倒换:源库为RDS for PostgreSQL 12.6及以上的小版本、RDS for PostgreSQL 13及以上版本的所有小版本。 DRS全量同步表结构时,源库中的character、character varying类型长度在目标库会按照字节长自动扩大(因为目标库为字节长),默认扩大4倍,最大长度为10485760。 全量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 增量同步过程须知 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿修改源数据库表的主键或者唯一键(主键不存在时),否则可能导致增量数据不一致或任务失败。 请勿修改源数据库中表的replica identity属性,否则可能导致增量数据不一致或任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 库级同步时,源库新增无主键表时,请务必同时将该无主键表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。 库级同步时,源库新增主键表时,如果主键列toast属性为main、external、extended时,请务必同时将该表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。 同步对比使用须知 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。 结束任务须知 正常结束任务: 全量+增量实时同步任务正常结束时,将自动删除任务在源库创建的流复制槽。 强制结束任务: 强制结束全量+增量实时同步任务,需要手动删除源库可能残留的复制槽,可参考PostgreSQL为源强制结束任务章节的指导进行操作。 逻辑复制槽命名规则为“drs_唯一性标识”,其中唯一性标识需要将任务node id中的“-”替换为“_”获取。node id可在DRS任务同步日志页面查看task node id is ***日志找到。
  • 约束限制 限速模式指的是限制秒级的流量上限,可能因为网络波动原因导致统计值的降低,实际统计的值可能会低于限速值大小。 限速模式只对全量同步阶段生效,增量同步阶段不生效。 增量阶段修改限速后,待任务再次进入全量阶段会生效。如增量中的任务修改限速,编辑任务新加同步对象后,限速会在同步任务的全量阶段生效。 修改限速后会出现短暂的没有流量情况,是因为DRS后台进程会重启续传,并不影响任务进度和数据一致性。
  • DRS灾备的RPO、RTO是什么 RPO(Recovery Point Objective)指当前业务数据库一个事务的提交时间,与该事务送达DRS的时间差(该事务通常也是DRS收到的最新的一个事务)。是主实例与DRS实例数据差的一种度量方式,RPO=0时,意味着业务数据库的最新数据已经全部到达DRS实例。 RTO(Recovery Time Objective)指当前DRS实例上事务,传输至灾备实例且执行成功的时间差(该事务通常也是DRS收到的最新的一个事务)。RTO是处在传输中数据量的一种度量方式,RTO=0时,意味着DRS实例上的事务已经全部在灾备数据库上执行完毕。 图1 RPO和RTO 父主题: 实时灾备
  • 本地数据库实时迁移 网络准备: 源数据库的网络设置: 本地MySQL数据库迁移至本云云数据库 RDS for MySQL的场景,一般可以使用VPN网络和公网网络两种方式进行迁移,您可以根据实际情况为本地MySQL数据库开放公网访问或建立VPN访问。一般推荐使用公网网络进行迁移,该方式下的数据迁移过程较为方便和经济。 目标数据库的网络设置: 若通过VPN访问,请先开通VPN服务,确保源数据库MySQL和目标端本云云数据库 RDS for MySQL的网络互通。 若通过公网网络访问,本云云数据库 RDS for MySQ L实例 不需要进行任何设置。 安全规则准备: 源数据库的安全规则设置: 若通过公网网络进行迁移,源数据库MySQL需要将DRS迁移实例的弹性公网IP添加到其网络白名单内,使源数据库与本云的网络互通。在设置网络白名单之前,需要获取DRS迁移实例的弹性公网IP,具体方法如下: DRS迁移实例创建成功后,可在“源库及目标库”页面获取DRS迁移实例的弹性公网IP。 若通过VPN网络进行迁移,源数据库MySQL需要将DRS迁移实例的私有IP添加到其网络白名单内,使源数据库与本云的网络互通。DRS迁移实例创建成功后,可在“源库及目标库”页面获取DRS迁移实例的私有IP。 以上白名单是为了进行迁移针对性设置的,迁移结束后可以删除。 目标数据库安全规则设置: 目标数据库默认与DRS迁移实例处在同一个VPC,网络是互通的,DRS可以直接写入数据到目标数据库。 设置目标数据库所在VPC的安全组,确保DRS实例IP的出方向到本地数据数据库的IP、监听端口放通。具体设置如下图所示: 图2 出口规则
  • E CS 自建数据库实时迁移 网络准备: 源数据库所在的region要和目标端本云云数据库 RDS for MySQL实例所在的region保持一致。 源数据库可以与目标端本云云数据库 RDS for MySQL实例在同一个VPC,也可以不在同一个VPC。 当源库和目标库处于同一个VPC时,网络默认是互通的。 当不在同一个VPC的时候,要求源数据库实例和目标端本云云数据库 RDS for MySQL实例所处的子网处于不同网段,此时需要通过建立对等连接实现网络互通。具体建立VPC对等连接的方法,可参考《虚拟私有云用户指南》。 安全规则准备: 同一VPC场景下,默认网络是连通的,不需要单独设置安全组。 不同VPC场景下,通过建立对等连接就可以实现网络互通,不需要单独设置安全组。
  • 跨云数据库实时迁移 网络准备。 源数据库需要开放公网访问。 源数据库的网络设置: 源数据库MySQL实例需要开放外网域名的访问。 以阿里云云数据库RDS MySQL迁移到本云云数据库 RDS for MySQL为例,一般情况下,阿里云RDS MySQL不提供外网地址,需要通过申请外网地址来允许外部的应用对接,具体的操作及注意事项可以参考源数据库所在云提供的相关指导。 目标数据库的网络设置: 目标数据库默认与DRS迁移实例处在同一个VPC内,网络是互通的,不需要进行任何设置。 安全规则准备。 源数据库的安全规则设置: 源数据库MySQL实例需要将DRS迁移实例的弹性公网IP添加到其网络白名单中,确保源数据库MySQL实例可以与上述弹性公网IP连通。 以上讲述的是精细配置白名单的方法,还有一种简单设置白名单的方法,在安全允许的情况下,可以将源数据库MySQL实例的网络白名单设置为0.0.0.0/0,代表允许任何IP地址访问该实例。 上述的网络白名单是为了进行数据迁移设置的,迁移结束后可以删除。 目标数据库安全规则设置: 目标数据库默认与DRS迁移实例处在同一个VPC,网络是互通的,DRS可以直接写入数据到目标数据库。 设置目标数据库所在VPC的安全组,确保DRS实例IP的出方向到本地数据数据库的IP、监听端口放通。具体设置如下图所示: 图1 出口规则
  • 排查iptables设置 以源数据库为本云ECS自建数据库为例,如果在上述的操作后,仍无法连通,此时需要额外排查iptables设置,因为HOSTGUARD服务在DRS发起频繁连接请求失败时,会将请求IP加入黑名单中。 登录弹性云服务器。 执行以下命令,排查是否有DENY相关的项目包含DRS实例的IP,一般项目名称为IN_HIDS_MYSQLD_DENY_DROP 。 iptables --list 如果存在,执行以下命令,查询iptables入方向规则列表,获取具体规则编号(line-numbers)。 iptables -L INPUT --line-numbers 执行以下命令,删除DRS实例的IP相关的入方向规则(注意:必须从后往前删,不然line-numbers会更新,需要重新查询)。 iptables -D 规则项目名 具体规则编号 删除相关iptables规则后重新进行测试连接即可。
  • 为什么DRS不支持部分他云只读实例的备库做源库 对于DRS的增量或者全量+增量任务,不支持部分他云只读实例的备库做源库进行数据迁移。DRS增量迁移是通过读取源数据库的原始增量日志数据(例如MySQL的Binlog)后解析转换进行 。 以MySQL的Binlog为例,部分他云只读MySQL备库的Binlog并不完整,会导致DRS无法进行增量数据同步。用户可使用mysqlbinlog下载并确认Binlog内容完整性。 下载命令:注意,该命令会把 $binlogLogName文件后的所有日志下载下来,如果只是确认Binlog内容完整性,可以选择一个Binlog下载。 mysqlbinlog --no-defaults -h$sourceHost -u$sourceUsername -P$sourcePort -p$sourcePassword --raw --read-from-remote-server $binlogLogName --to-last-log 查看Binlog内容: mysqlbinlog --base64-output=decode-rows -v $binlogLogName 正常Binlog 父主题: 产品咨询
  • 实时迁移、实时同步和实时灾备有什么区别 对比项 实时迁移 实时同步 实时灾备 适用场景 跨云平台数据库迁移、云下数据库迁移上云或云上跨区域的数据库迁移等多种业务场景迁移。 实时分析,报表系统,数仓环境等。 实现云下数据库到云上的灾备、跨云平台的数据库灾备。 特点 同构数据库间以整体数据库搬迁为目的。 支持包括:表、数据、索引、视图、存储过程、函数、数据库账号、数据库参数等。 可选择表级、库级或全部迁移维度。 支持同构、异构数据库间的数据同步,维持不同业务之间的数据持续性流动。 聚焦于表和数据,并满足多种灵活性的需求。 可选择表级、库级同步维度。 支持同构数据库间的数据灾备。 实现异地数据库主备倒换的效果。 实例级灾备,不支持表级、库级对象选择。 支持的数据库 详情请参见迁移方案概览。 详情请参见同步方案概览。 详情请参见灾备方案概览。 功能特性 支持迁移用户。 不支持迁移用户。 默认迁移所有用户,不支持选择。 支持参数对比。 不支持参数对比。 支持参数对比。 不支持增量阶段编辑迁移对象。 支持增量阶段编辑同步对象,动态增减同步对象。 不支持增量阶段编辑灾备对象。 不支持对象名映射。 支持对象名映射,使同步的库表在源数据库和目标数据库中存储名称不同。 不支持对象名映射。 不支持数据加工能力。 支持数据加工能力,可对选择的对象添加规则,如数据过滤、列加工等。 不支持数据加工能力。 不支持主备倒换。 不支持主备倒换。 支持主备倒换。 计费方式 仅支持按需计费。 支持按需计费和包年/包月。 支持按需计费和包年/包月。 更多特性 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 父主题: 产品咨询
  • 为什么实时灾备任务不支持触发器(TRIGGER)和事件(EVENT) 数据库的触发器(TRIGGER)和事件(EVENT)操作会记录binlog,DRS通过解析binlog同步数据,如果业务侧写入与触发器、事件存在同样对象,就会发生重复执行导致数据不一致或者任务失败,所以在灾备场景下,触发器和事件是不支持的。 假如源库表user存在这样触发器,当表user写入数据时,触发器会同步往另一个log表中写入一条日志数据。 当源库业务侧写入了一条数据到user表。 触发器同步了这条数据到log表,此时binlog中会有两条数据,如下图,第一条就是业务插入user表的数据,第二条是触发器被触发,写入到log中的数据。 DRS同步数据的时候可能会出现以下情况: 如果先同步了插入的数据到目标库user表,这时候目标数据库的触发器被触发,目标库log表会自动写入,当同步第二条log表数据时,就无法将这条log表数据写到目标库了,数据冲突任务报错。 如果先同步log表中的数据,再同步user表的数据时,这时候目标数据库的触发器被触发,会导致log表多一条数据,发生数据不一致问题。 同理,事件(EVENT)也会记录binlog并在目标库再次执行,这也会导致上述问题。 DRS实时迁移支持触发器和事件,是因为DRS会在结束任务的时候去迁移触发器和事件,在结束任务成功的时候保证目标库和源库的对象一致。 父主题: 实时灾备
共100000条