华为云用户手册

  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小在12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):私有访问密钥。与访问密钥ID结合使用,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头中,从而通过身份认证,获得操作API的权限。Token可通过调用获取用户Token接口获取。 调用本服务API需要项目级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", // IAM 用户名 "password": $ADMIN_PASS, //IAM用户密码,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全 "domain": { "name": "domainname" //IAM用户所属账号名 } } } }, "scope": { "project": { "name": "xxxxxxxx" //项目名称 } } } } 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 1 2 3 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333。
  • 响应示例 状态码: 200 OK { "result" : { "id" : "b7d95c35c08e0b328bfbafd45408bd2ac28b73f9", "individual_note" : false, "notes" : [ { "id" : 2111886200, "type" : "DiffNote", "body" : "检视意见内容", "author" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "created_at" : "2023-06-01T17:05:12.000+08:00", "updated_at" : "2023-06-01T17:05:12.000+08:00", "system" : false, "noteable_id" : 19387, "noteable_type" : "MergeRequest", "resolvable" : true, "is_reply" : true, "noteable_iid" : 2, "discussion_id" : "8bbe6d4e797169c4c1ce56507fdf1abc11f95601", "project" : "DevOpsqlcylxm00004/project-test", "diff_file" : "7", "diff" : "@@ -0,0 +1,0 @@\n+7", "archived" : false, "review_categories" : "regulations", "review_categories_cn" : "编程军规问题", "review_categories_en" : "Regulations", "review_modules" : "aaa,bbb", "severity" : "suggestion", "assignee" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "proposer" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "position" : { "base_sha" : "973bcc0211c32dbaa8473561c6767f74e1a81471", "start_sha" : "973bcc0211c32dbaa8473561c6767f74e1a81471", "head_sha" : "f5bf0230f9b996ed6c0d64d2b2fef789d91b164c", "old_path" : "7", "new_path" : "7", "position_type" : "text", "new_line" : 1 }, "resolved" : false, "is_outdated" : false } ], "project_id" : 2111699786, "noteable_type" : "MergeRequest", "project_full_path" : "DevOpsqlcylxm00004/project-test", "a_mode" : "0", "b_mode" : "100644", "deleted_file" : false, "new_file" : true, "resolved" : false, "archived" : false, "review_categories" : "regulations", "review_categories_cn" : "编程军规问题", "review_categories_en" : "Regulations", "review_modules" : "aaa,bbb", "severity" : "suggestion", "severity_cn" : "建议", "severity_en" : "Suggestion", "assignee" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "proposer" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "diff_file" : "@@ -0,0 +1,0 @@\n+7", "added_lines" : 1, "removed_lines" : 0 }, "status" : "success" }
  • 响应示例 状态码: 200 OK { "result" : { "id" : "b7d95c35c08e0b328bfbafd45408bd2ac28b73f9", "individual_note" : false, "notes" : [ { "id" : 2111886200, "type" : "DiffNote", "body" : "检视意见内容", "author" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "created_at" : "2023-06-01T17:05:12.000+08:00", "updated_at" : "2023-06-01T17:05:12.000+08:00", "system" : false, "noteable_id" : 19387, "noteable_type" : "MergeRequest", "resolvable" : true, "is_reply" : true, "noteable_iid" : 2, "discussion_id" : "8bbe6d4e797169c4c1ce56507fdf1abc11f95601", "project" : "DevOpsqlcylxm00004/project-test", "diff_file" : "7", "diff" : "@@ -0,0 +1,0 @@\n+7", "archived" : false, "review_categories" : "regulations", "review_categories_cn" : "编程军规问题", "review_categories_en" : "Regulations", "review_modules" : "aaa,bbb", "severity" : "suggestion", "assignee" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "proposer" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "position" : { "base_sha" : "973bcc0211c32dbaa8473561c6767f74e1a81471", "start_sha" : "973bcc0211c32dbaa8473561c6767f74e1a81471", "head_sha" : "f5bf0230f9b996ed6c0d64d2b2fef789d91b164c", "old_path" : "7", "new_path" : "7", "position_type" : "text", "new_line" : 1 }, "resolved" : false, "is_outdated" : false } ], "project_id" : 2111699786, "noteable_type" : "MergeRequest", "project_full_path" : "DevOpsqlcylxm00004/project-test", "a_mode" : "0", "b_mode" : "100644", "deleted_file" : false, "new_file" : true, "resolved" : false, "archived" : false, "review_categories" : "regulations", "review_categories_cn" : "编程军规问题", "review_categories_en" : "Regulations", "review_modules" : "aaa,bbb", "severity" : "suggestion", "severity_cn" : "建议", "severity_en" : "Suggestion", "assignee" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "proposer" : { "id" : 1234, "name" : "beta", "username" : "c369c68f1ff84679b5a8ed904d8bff1c", "state" : "active", "name_cn" : "beta" }, "diff_file" : "@@ -0,0 +1,0 @@\n+7", "added_lines" : 1, "removed_lines" : 0 }, "status" : "success" }
  • 响应示例 状态码: 200 OK { "result" : { "categories_and_modules_enabled" : true, "secondary_category_enabled" : false, "primary_categories" : [ { "key" : "design", "name_zh" : "代码设计", "name_en" : "Code design" }, { "key" : "regulations", "name_zh" : "编程军规问题", "name_en" : "Programming guideline" } ], "review_default_categories" : [ "design", "regulations" ], "review_customized_categories" : [ "xxx", "yyy" ], "review_modules" : [ "aaa", "bbb", "ccc" ], "source_id" : 2111699786, "source_type" : "Project", "source_path" : "DevOpsqlcylxm00004/project-test" }, "status" : "success" }
  • 概述 欢迎使用代码托管(CodeArts Repo)。 代码托管服务 源自千亿级代码管理经验,基于Git,提供企业代码托管的全方位服务,为软件开发者提供基于Git的在线代码托管服务,包括代码克隆/下载/提交/推送/比较/合并/分支/Code Review等功能。 您可以使用本文档提供的API对代码托管服务进行相关操作,如创建仓库、添加部署密钥、添加仓库成员等。 在调用代码托管服务的API之前,请确保已经充分了解代码托管服务的相关概念,详细信息请参见产品介绍。 父主题: 使用前必读
  • 计费说明 数据复制服务 “按需计费”和“包年/包月”两种计费方式均针对单个的DRS任务从以下方面收取费用: 表1 计费项 计费项 计费项说明 计费模式 配置费(必选) 指计算和存储资源及数据处理的费用。 “按需计费”配置费用是按照实际使用时长计费。 “包年/包月”配置费用是一次性计费。 弹性公网IP费用(可选) 指公网访问产生的数据处理和数据流量费用。如果创建公网网络任务,您需要购买弹性公网IP。 由弹性公网IP服务收取,详细说明请参考弹性公网IP计费说明。 目前实时迁移仅支持“按需计费”,暂不支持“包年/包月”。 实时同步和实时灾备支持“按需计费”和“包年/包月”的选择。
  • 变更计费模式概述 在购买DRS后,如果发现当前计费模式无法满足业务需求,您可以变更计费模式。支持变更计费模式的DRS计费项如表1所示。 表1 支持变更计费模式的DRS计费项 计费项 变更说明 相关文档 配置费(必选) DRS任务目前只支持按需转包年/包月,暂不支持包年/包月转为按需。 迁移任务:目前只支持按需计费,不支持转包年/包月。 同步任务:仅支持非冻结状态且为增量中的单AZ同步任务按需转包年/包月。 灾备任务:仅支持非冻结状态且为灾备中的任务按需转包年/包月。对于双主灾备,正向和反向子任务均为灾备中才能按需转包年/包月。 按需转包年/包月 弹性公网IP费(可选) 包年/包月EIP支持到期后转为按需、按带宽计费EIP。 按需、按带宽计费EIP支持转为包年/包月EIP。 按需、按带宽计费EIP支持和按需、按流量计费EIP互转。 具体变更方式可参考图2。 由弹性公网IP服务收取,详细说明请参考弹性公网IP计费说明。 图1 配置费计费模式变更 图2 EIP计费模式变更 父主题: 变更计费模式
  • 修订记录 发布日期 修改说明 2024-05-30 第四十六次正式发布,新增如下内容: DRS要求的PostgreSQL权限有哪些 2024-02-28 第四十五次正式发布,新增如下内容: MySQL或MariaDB不同版本之间的语法差异 GaussDB 远程连接配置方法 GaussDB为源链路增量同步连接及端口说明 2023-10-30 第四十四次正式发布,新增如下内容: 为什么迁移前后数据库磁盘空间使用量不一致 2023-09-30 第四十三次正式发布,新增如下内容: DRS支持caching_sha2_password加密用户迁移吗 2023-08-30 第四十二次正式发布,新增如下内容: DRS任务创建后支持修改源或目标数据库吗 2023-07-30 第四十一次正式发布,新增如下内容: DRS任务表数量太多导致任务超时怎么办 DRS增量同步怎样填启动位点 2023-05-30 第四十次正式发布,新增如下内容: MySQL账号迁移后权限显示多了反斜杠“\” 创建DRS任务提示用户权限不足或没有操作权限 2023-04-30 第三十九次正式发布,新增如下内容: 为什么DRS不支持部分他云只读实例的备库做源库 2023-02-28 第三十八次正式发布,新增如下内容: 设置 SMN 主题策略,允许DRS发送 消息通知 2023-01-30 第三十七次正式发布,新增如下内容: 源或者目标数据库哪些操作,会影响DRS任务状态 订阅SDK获取不到数据,且程序异常 为什么实时灾备任务不支持触发器(TRIGGER)和事件(EVENT) DRS全量阶段迁移过慢或者进度不更新可能原因 DRS增量阶段时延增高可能原因 2022-11-30 第三十六次正式发布,新增如下内容: DRS是否支持只迁移表结构不迁移数据 MySQL迁移、同步、灾备任务怎么迁移账号,是否支持修改密码 影响DRS任务速度的因素有哪些以及如何进行耗时预估 DRS任务支持修改对象吗 DRS是否支持同一实例不同库之间的同步 一对多的场景约束及操作建议 DDM为源链路源库分片数量和信息怎么填写 源端MySQL发生主备倒换,DRS任务会丢数据吗 DRS对象选择时的全部迁移、表级迁移、库级迁移有什么区别 源库或目标库修改密码后如何操作 2022-08-30 第三十五次正式发布,新增如下内容: DRS是否支持双向实时同步 Oracle到GaussDB字符集兼容性说明 2022-07-30 第三十四次正式发布,新增如下内容: DRS任务的双AZ和单AZ有什么区别 同步到GaussDB(DWS)的方案选型 同步到GaussDB(DWS)的使用建议 DRS对比任务对数据库有什么影响 资源冻结/释放/删除/退订 2022-05-30 第三十三次正式发布,新增如下内容: 目标库读写设置是实例级还是库级 未启动任务计费说明 什么是SMN主题 已经创建的SMN主题为什么选择不了 任务创建成功后是否支持修改SMN主题 2022-04-30 第三十二次正式发布,新增如下内容: 源库Oracle补全日志检查方法 MongoDB链路时延增高可能原因 包年包月到期说明 DRS支持跨账号云数据库迁移吗 2022-03-30 第三十一次正式发布,新增如下内容: DRS支持一键反向功能吗 DRS需要源数据库停止业务吗 2022-02-28 第三十次正式发布,新增如下内容: 源库Oracle为RAC集群时,为什么建议使用SCAN IP连接 双主灾备子任务的正向和反向怎么理解 2021-12-31 第二十八次正式发布,新增如下内容: DRS对源数据库和目标数据库有什么影响 灾备任务时延增高常见原因 2021-10-30 第二十七次正式发布,新增如下内容: 重置任务和重新创建任务有什么区别 2021-09-30 第二十六次正式发布,新增如下内容: 已结束的任务还能重新启动吗 DRS公网网络的EIP带宽是多少 2021-08-30 第二十五次正式发布,新增如下内容: MySQL迁移出现数据膨胀怎么办 分片集群MongoDB迁移前清除孤儿文档 2021-08-03 第二十四次正式发布,新增如下内容: 内容对比不支持哪些数据类型 任务结束后不删除还会计费吗 2021-07-05 第二十三次正式发布,新增如下内容: 灾备任务的主备倒换是自动触发,还是手动触发 实时灾备是否支持指定库进行灾备 失败任务计费说明 暂停任务计费说明 2021-05-31 第二十二次正式发布,新增如下内容: DRS实时同步支持使用Online DDL工具吗 2021-04-30 第二十一次正式发布,新增如下内容: DRS导出任务列表 2021-03-30 第二十次正式发布,新增如下内容: 什么是配额 创建DRS任务后执行自动功能失败 2021-01-30 第十九次正式发布,新增如下内容: 数据复制服务是否采用了并发技术 数据复制服务是否采用了压缩技术 2020-11-30 第十八次正式发布,新增如下内容: 为什么DRS发送提示信息的语言和页面不符 为什么DRS任务自动结束了 2020-07-31 第十七次正式发布,新增如下内容: 如何处理迁移实例和数据库网络连接异常 2020-04-30 第十六次正式发布,新增如下内容: 实时迁移、实时同步和实时灾备有什么区别 2020-03-31 第十五次正式发布,新增如下内容: 实时灾备常见异常场景示例 2020-02-29 第十四次正式发布,新增如下内容: DRS要求的MySQL权限有哪些 什么是单主/双主灾备 双主灾备的主1、主2如何选择 2020-01-30 第十三次正式发布,新增如下内容: 低版本迁移至MySQL 8.0,应该注意哪些问题 DRS支持断点续传吗 RDS for MySQL不支持MyISAM引擎表,迁移时MyISAM如何处理 DRS灾备的RPO、RTO是什么 Oracle等异构数据库迁移到MySQL后的数据库排序规则为什么是utf8mb4_bin 2019-11-30 第十二次正式发布,新增如下内容: Oracle到MySQL迁移时,索引超长如何处理 2019-10-30 第十一次正式发布,新增如下内容: 数据复制服务是否支持某个时间段的数据复制 如何确保业务数据库的全部业务已经停止 2019-09-30 第十次正式发布,新增如下内容: 为什么MariaDB和SysDB下的数据不迁移或同步 迁移日志提示can not get agency token 2019-08-30 第九次正式发布,新增如下内容: MySQL迁移中Definer强制转化后如何维持原业务用户权限体系 扩大带宽是否会对DRS正在进行中的任务产生影响 DRS支持将DB2 for LUW迁移到PostgreSQL吗 Microsoft SQL Server数据库能与本地数据库的数据实时同步吗 2019-6-30 第八次正式发布,新增如下内容: 如何关闭集合均衡器Balancer MySQL源库设置了global binlog_format = ROW没有立即生效 DRS是否支持公有云和专属云间的数据库迁移 DRS支持直接同步不同schema的表到同一个schema吗 2019-05-30 第七次正式发布,新增如下内容: 修改数据库后,到SDK的用户端消费一般有多长时间的延迟 DRS界面信息重叠是什么原因 MongoDB数据库迁移过程中,源数据库出现内存溢出(OOM)是什么原因 2019-04-30 第六次正式发布,新增如下内容: 如何批量导出、导入事件(event)和触发器(trigger) 2018-12-30 第五次正式发布,新增以下内容: 源库参数lower_case_table_names=1时,为什么不允许迁移包含大写字母的库或者表 如何设置MongoDB数据库分片集群的分片键 设置的密码不符合目标库的密码复杂度要求时,如何修改密码强度 2018-11-30 第四次正式发布,新增以下内容: 新增常见问题:哪些情况下会出现目标数据库重启(已不存在该问题) 2018-08-31 第三次正式发布,新增以下内容: 在线迁移 支持PostgreSQL引擎任务迁移。 常见问题:如何将源数据库的用户与权限导出,再导入到目标数据库 2018-07-14 第二次正式发布,新增以下内容: 在线迁移 新增MongoDB数据库引擎任务迁移。 2018-06-30 第一次正式发布。
  • 迁移时长预估 由于影响迁移时长的因素很多,因此没有通用的计算方式能准确的计算迁移耗时,用户可先参考如下数据进行评估。建议用户先使用和待迁移实例相同规格、负载、网络配置、数据模型的环境创建测试任务,以评估迁移时长。 DRS任务全量阶段迁移速度: MySQL为源链路:50MB/s。 Oracle为源链路:40MB/s。 Redis为源全量+增量链路:30MB/s。 GaussDB为源链路:40MB/s。 DDM为源链路:20MB/s。 MongoDB为源链路:20MB/s。 PostgreSQL为源链路:30MB/s。 影响DRS迁移速度的因素很多,当前全量阶段迁移速度为网络和数据库性能无瓶颈、任务为大规格时的测试数据,仅供用户进行参考。 当目标数据库为Oralce或者GaussDB(DWS)时,受限于目标数据库写入机制,全量速度相较于其他类型数据库下降30%~50%。 MongoDB数据库的写入性能会受索引个数影响,单个索引影响5-8%,索引越多,速度越慢。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 如果源数据库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7.0-5.7.28之间),需提交运维申请才能使用SSL测试连接。 使用限制 通用: 任务启动、任务全量同步阶段,不建议做删除类型的DDL操作,可能会引起任务失败。 不支持源数据库进行恢复操作。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 DRS全量同步表结构时,列名不能是CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID、OID、GS_TUPLE_UID、TABLEBUCKETID,这些GaussDB禁止的字段,否则会导致建表失败。 增量同步阶段: 不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 如果设置session变量character_set_client为binary,可能导致乱码。 增量同步过程中支持DDL操作。默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,RENAME_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,ALTER_COLUMN,DROP_INDEX,RENAME_INDEX,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步过程中,不支持DELETE和UPDATE目标数据库主键类型为tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、clob、nclob、bytea、binary的表。 结束任务: 任务正常结束: 请确保任务结束前,不要断开源和目标数据库的网络连通性,并在结束任务时关注同步日志上报的状态,达到数据库完整同步效果。 任务强制结束: 强制结束将直接释放DRS资源。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 在MySQL中,同一个database(schema)下面的不同表可以存在相同的索引名或约束名。而目标数据库GaussDB中,同一个schema中索引和约束名是唯一的,且长度存在上限。为防止索引和约束名冲突,在全量同步中,DRS同步到目标表上的索引名称将变为此格式:哈希值+原索引名(可能被截断)+_key。其中哈希值由"原库名_原表名_原索引名"计算得到。同理,表上的原约束名将变为:哈希值+原约束名(可能被截断)+_key。 暂不支持级联单向同步,例如从实例A同步到实例B,再从实例B同步到实例C。 网络中断在30秒内恢复的,不影响实时同步,如果超过30秒,则会导致同步任务失败。 源库表同步至目标库后分布方式为哈希分布,暂不支持复制分布。 源库为RDS for MySQ L实例 时,不支持带有TDE特性并建立具有加密功能表。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 源库和目标库均相同的任务不允许出现重复同步的情况,如:A任务和B任务同时将源库的同一张表的实时同步到目标库的同一张表中,可能导致数据不一致和同步失败。 GaussDB只能设置库级字符集,如果遇到MySQL中设置了表级、字段级字符集的场景,可能会因为字符长度问题导致创建表结构异常。 DRS全量同步表结构时,源库中char、varchar、nvarchar、enum、set字符类型长度在目标库会按照字节长自动扩大(因为目标库为字节长),扩大倍数和源库中列的字符集有关。如源库字符集为UTF8的按照字节长扩大3倍,为UTF8MB4的按照字节长扩大4倍。 不建议在数据库中使用非精确数值类型做主键,该特性影响DRS增量场景下对UPDATE、DELETE语句的同步,导致任务失败。 如果无主键表中包含大字段(tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、clob、nclob、bytea、binary),增量同步阶段存在大字段数据不一致的可能性。 由于浮点型数据是采用近似值存储,而不是作为精确值存储,此外操作系统平台和底层实现也对浮点型数据有影响,因此FLOAT,DOUBLE类型的数据是不精确的,所以在MySQL和GaussDB同步浮点型数据,存在一定差异的可能性,可参考MySQL的官方文档。 不支持两阶段事务。 由于MySQL与GaussDB针对零时间("0000-00-00 00:00:00")内置的处理方式不同,当进行内容对比时,如果源、目标数据库存在零时间,对比结果会显示数据不一致。 源数据库MySQL的表中如果存在定长的binary字段,MySQL驱动会在数据末尾按照长度补齐\0,可能导致同步到目标库GaussDB后出现数据不一致的情况。 源数据库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 源数据库同步的表如果有AUTO_INCREMENT属性,结束任务时,DRS会自动刷新同步表的序列整型列所对应的GaussDB自增列(sequence)起始值,刷新值为该列的最大值+10000。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 源数据库不允许存在与目标库同名的无主键表。 如果源数据库MariaDB不支持TLS1.2协议,需提交运维申请才能使用SSL测试连接。 如果源数据库版本低于10.4.3,选择库级同步,任务启动之后,请不要在对象选择的库里使用带json数据类型的建表语句创建表结构(如create table t1 (c1 json)),或者使用带json数据类型的加列语句(如 alter table t1 add column c1 json),否则数据将不一致。 使用限制 通用: 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 全量同步阶段: 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 全量同步过程中,对MyISAM表执行修改操作时,可能造成数据不一致。 增量同步阶段: 增量同步支持DDL语句。 增量同步支持表的重命名,源表和目标表必须都在对象选择里。 增量同步支持任务再编辑追加同步对象。 同步对比阶段: 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库如果存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤; 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 源库和目标库是相同的RDS实例时,不支持没有库映射的实时同步。 源库和目标库为RDS for MariaDB实例时,不支持带有TDE特性并建立具有加密功能表。 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 不支持源数据库恢复到之前时间点的操作(PITR)。 不支持目标数据库恢复到全量同步时间段范围内的PITR操作。 不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 不支持强制清理binlog,否则会导致同步任务失败。 不支持分区表的分区字段进行列映射。 任务创建后,目标库不能设置为只读。 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 源数据库不允许存在与目标库同名的无主键表。 如果源数据库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7.0-5.7.28之间),需提交运维申请才能使用SSL测试连接。 使用限制 通用: 不建议修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 不允许对正在同步中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 不允许源库执行清除Binlog的操作。 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 对MyISAM表执行修改操作时,可能造成数据不一致。 增量同步阶段: 如果设置session变量character_set_client为binary,可能导致乱码。 表级同步时,增量同步过程支持使用Online DDL,可参考DRS实时同步支持使用Online DDL工具吗。 支持任务再编辑追加同步对象。 支持断点续传功能,在主机系统崩溃的情况下,对于非事务性的无主键的表可能会出现重复插入数据的情况。 支持部分DDL语句。 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,DROP_COLUMN,DROP_INDEX,ADD_INDEX,CREATE_INDEX,RENAME_INDEX,DROP_TABLE,TRUNCATE_TABLE,DROP_PARTITION,RENAME_COLUMN,DROP_PRIMARY_KEY,ADD_PRIMARY_KEY,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步支持表的重命名,源表和目标表必须都在对象选择里。 不支持源数据库进行恢复到某个备份点的操作(PITR)。 结束任务: 任务正常结束: 请确保任务结束前,不要断开源和目标数据库的网络连通性,并在结束任务时关注同步日志上报的状态,达到数据库完整同步效果。 任务强制结束: 强制结束将直接释放DRS资源。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 对于源数据库和目标数据库的版本有差异的同步链路,由于不同版本之间的部分特性差异,可能会出现语法兼容性问题,详情可参考MySQL不同版本之间的语法差异。 表名映射时,不支持同步视图、存储过程、函数依赖的表,不支持同步表的外键约束。 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。 进行表级多对一同步时,源库不允许存在无主键表。 源库和目标库是相同的RDS实例时,不支持没有库映射的实时同步。 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。 源数据库中的库名、表名如果存在非成对的{},可能导致表结构同步失败。进行数据映射后,映射到目标库中的库名、表名如果存在非成对{},可能导致表结构同步失败。 不支持目标数据库恢复到全量同步时间段范围内的PITR操作。 不支持分区表的分区字段进行列映射。 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 源库和目标库为RDS for MySQL实例时,不支持带有TDE特性并建立具有加密功能表。 当目标数据库为5.7版本时,因为版本限制,json类型中的浮点数会丢失小数点后末位的0,存在精度损失导致内容对比不一致。 在创建DRS任务之前,如果源或者目标数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 同步任务创建后,目标数据库不能设置为“只读”。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 如果涉及多对一场景的同步任务,可参考多对一的场景约束及操作建议。 如果涉及表级汇集的多对一同步任务,则不支持DDL,否则会导致同步全部失败。 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤。 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 如果源数据库MySQL不支持TLS1.2协议,需提交运维申请才能使用SSL测试连接。 使用限制 通用: 实时同步过程中,如果修改了源库或者目标库的用户名、密码,会导致同步任务失败,需要在数据复制服务控制台将上述信息重新修改正确,然后重试任务可继续进行实时同步。一般情况下不建议在同步过程中修改上述信息。 为了保持数据一致性,不允许对正在同步中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 全量同步阶段: 不支持DDL操作。 对MyISAM表执行修改操作时,可能造成数据不一致。 增量同步阶段: 如果设置session变量character_set_client为binary,可能导致乱码。 支持部分DDL操作。 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,DROP_COLUMN,DROP_INDEX,ADD_INDEX,CREATE_INDEX,RENAME_INDEX,DROP_TABLE,TRUNCATE_TABLE,DROP_PARTITION,RENAME_COLUMN,DROP_PRIMARY_KEY,ADD_PRIMARY_KEY,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步支持表的重命名,源表和目标表必须都在对象选择里。 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤。 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 表级同步时,增量同步过程支持使用Online DDL,可参考DRS实时同步支持使用Online DDL工具吗。 支持任务再编辑追加同步对象。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 对于目标库MariaDB的系统参数enforce_storage_engine,如果该参数值为InnoDB,那么DRS不支持同步存储引擎为MyISAM的表结构和数据到目标库MariaDB。如果需要同步存储引擎为MyISAM的表数据,请先在目标创建好表结构(由于enforce_storage_engine参数限制,存储引擎只能为InnoDB)。 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 对于源数据库和目标数据库的版本有差异的同步链路,由于不同版本之间的部分特性差异,可能会出现语法兼容性问题,详情可参考MySQL或MariaDB不同版本之间的语法差异。 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。 进行表级多对一同步时,源库不允许存在无主键表。 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 不支持源数据库恢复到之前时间点的操作(PITR)。 不支持目标数据库恢复到全量同步时间段范围内的PITR操作。 不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 不支持强制清理binlog,否则会导致同步任务失败。 不支持分区表的分区字段进行列映射。 任务创建后,目标库不能设置为只读。 表级同步中,对于多对一场景下的表在数据加工页面设置了附加列为来源列,如果目标库中已经存在多对一映射之后的表,请在目标库中删除这张表或者清除这张表的数据,否则将不会通过附加列来创建联合主键(这在同步过程中会导致数据冲突并忽略,从而到导致数据不一致)。 源库MySQL版本为8.0时,部分排序字符集(utf8mb4_0900_as_ci、utf8mb4_0900_as_cs、utf8mb4_0900_bin、utf8mb4_cs_0900_ai_ci等支持Unicode 9.0的排序字符集),在目标库不支持。 由于引擎和版本差异,部分MySQL中的函数在MariaDB中不支持,不支持的函数有:MBRCOVEREDBY、ST_BUFFER_STRATEGY、ST_GeoHash、ST_IsValid、ST_LatFromGeoHash、ST_LongFromGeoHash、ST_PointFromGeoHash、ST_SIMPLIFY、ST_VALIDATE、 (8.0)JSON_ARRAYAGG、JSON_OBJECTAGG、JSON_PRETTY、JSON_STORAGE_FREE、JSON_STORAGE_SIZE、JSON_TABLE。 目标数据库MariaDB执行分区交换的时候不支持VALIDATION语法验证,在源数据库MySQL执行分区交换SQL的时候不要带校验语法,例如: ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2 WITH VALIDATION; 增量过程中请不要在源库MySQL的json类型中写入\n、\t、\r等字符,否则会导致数据不一致。 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 如果源数据库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7.0-5.7.28之间),需提交运维申请才能使用SSL测试连接。 使用限制 通用: 如果源数据库为RDS for MySQL,支持修改端口,修改之后同步任务失败,需要通过重试后继续进行同步。 如果源数据库为非RDS for MySQL,不支持修改端口。 不支持修改源和目标数据库的IP、账号和密码。 不允许源库执行清除Binlog的操作。 不允许源库进行恢复操作。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 DRS会向目标库PostgreSQL写入大量数据,会导致PostgreSQL的wal日志量急剧增长,PostgreSQL的磁盘有被写满的风险。可以通过在全量同步前关闭PostgreSQL的日志备份功能,减少wal日志的生产,同步完成后再将其打开的方式进行规避(具体操作方法可参考设置自动备份策略)。 注意: 关闭日志备份会影响数据库的灾备恢复,请根据实际情况谨慎选择。 增量同步阶段: 如果设置session变量character_set_client为binary,可能导致乱码。 支持部分DDL语句。 支持表字段的增删改,例如: alter table `ddl_test` add column `c2` varchar(25); alter table `ddl_test` modify column `c1` varchar(50); alter table `ddl_test` alter c1 set default 'xxx'; 支持修改表索引,例如: alter table `ddl_test` drop primary key; alter table `ddl_test` add primary key(id); alter table `ddl_test` add index `ddl_test_uk`(id); alter table `ddl_test` drop index `ddl_test_uk`; 表级同步支持增加列、修改列、增加主键和普通索引。 如果目标表不存在,则该DDL会被忽略掉。 不支持DROP_DATABASE、DROP_TABLE、TRUNCATE_TABLE、CREATE_VIEW、DROP_VIEW。 不支持使用Online DDL。 结束任务: 任务正常结束: 请确保任务结束前,不要断开源和目标数据库的网络连通性,并在结束任务时关注同步日志上报的状态,达到数据库完整同步效果。 任务强制结束: 强制结束将直接释放DRS资源。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 由于MySQL中视图支持as select ... from a join b where ...等语法,PostgreSQL不支持,可能会导致视图同步失败。 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 在MySQL中,同一个database(schema)下面的不同表可以存在相同的索引名或约束名。而目标数据库PostgreSQL中,同一个schema中索引和约束名是唯一的,且长度存在上限。为防止索引和约束名冲突,在全量同步中,DRS同步到目标表上的索引名称将变为此格式:哈希值+原索引名(可能被截断)+_key。其中哈希值由"原库名_原表名_原索引名"计算得到。同理,表上的原约束名将变为:哈希值+原约束名(可能被截断)+_key。 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图等。 源库为RDS for MySQL实例时,不支持带有TDE特性并建立具有加密功能表。 在创建DRS任务之前,如果源或者目标数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 网络中断在30秒内恢复的,不影响实时同步,如果超过30秒,则会导致同步任务失败。 支持通过映射方式实现多个库对一个库的实时同步,且映射库之间不允许存在同名表。 索引同步不区分索引类型,同步到目标数据库都是btree索引。 在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。 源数据库为RDS for MySQL时,设置Binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 仅支持记录违反非空约束的异常数据、char类型或varchar类型超出字段长度限制的异常数据。 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤。 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 如果无主键表中包含大字段(blob、text、clob、nclob、bytea),增量同步阶段存在大字段数据不一致的可能性。 源数据库同步的表如果有AUTO_INCREMENT属性,结束任务时,DRS会自动刷新同步表的序列整型列所对应的PostgreSQL自增列(sequence)起始值,刷新值为该列的最大值+10000。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 源数据库不允许存在与目标库同名的无主键表。 如果源数据库MariaDB不支持TLS1.2协议,需提交运维申请才能使用SSL测试连接。 使用限制 通用: 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 全量同步阶段: 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 全量同步过程中,对MyISAM表执行修改操作时,可能造成数据不一致。 增量同步阶段: 增量同步过程中支持部分DDL操作。 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,DROP_COLUMN,DROP_INDEX,ADD_INDEX,CREATE_INDEX,RENAME_INDEX,DROP_TABLE,TRUNCATE_TABLE,DROP_PARTITION,RENAME_COLUMN,DROP_PRIMARY_KEY,ADD_PRIMARY_KEY,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步支持表的重命名,源表和目标表必须都在对象选择里。 增量同步支持任务再编辑追加同步对象。 表级同步时,增量同步过程支持使用Online DDL,可参考DRS实时同步支持使用Online DDL工具吗。 同步对比阶段: 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库如果存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤; 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 对于源数据库和目标数据库的版本有差异的同步链路,由于不同版本之间的部分特性差异,可能会出现语法兼容性问题,详情可参考MySQL或MariaDB不同版本之间的语法差异。 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。 进行表级多对一同步时,源库不允许存在无主键表。 当源数据库不存在视图,但是存在和视图同名的表结构时,请不要在源端执行对应的drop view if exists的SQL语句,否则会导致任务失败。这是因为在MariaDB中执行drop view if exists的时候,如果对应视图不存在,但是存在和视图名同名的表,该操作不会报异常,同时还会产生Binlog记录。同步到目标库时,MySQL在同样情况下执行drop view if exists时,会报is not view的异常,导致任务失败。 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 不支持源数据库恢复到之前时间点的操作(PITR)。 不支持目标数据库恢复到全量同步时间段范围内的PITR操作。 不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 不支持强制清理binlog,否则会导致同步任务失败。 不支持分区表的分区字段进行列映射。 任务创建后,目标库不能设置为只读。 多对一表级同步场景下,在“数据加工”页面设置了附加列为来源列,如果目标库中已经存在多对一映射之后的表,请在目标库中删除这张表或者清除表的数据,否则将不会通过附加列来创建联合主键。并且在同步过程中会因为数据冲突并忽略,而导致数据不一致。 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 源物理分片数据库建议开启skip-name-resolve,减少连接超时的可能性。 使用限制 通用: 在任务启动、任务全量同步阶段,不建议对源数据库做删除类型的DDL操作,这样可能会引起任务同步失败。 同步过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 同步过程中,不允许对源库需要同步的表结构进行修改。 同步过程中,不允许源端DDM正在同步的表做改变拆分键的操作;也不允许将单表/广播表改为拆分表,拆分表改为单表/广播表。 增量同步阶段: 不支持源数据库进行恢复操作。 支持部分DDL语句,包括:ADD COLUMN、CREATE TABLE、CREATE INDEX、DROP INDEX、RENAME INDEX、ADD INDEX。 对同一张表或列做DDL操作,需要在业务低峰期,并且时间间隔1分钟以上。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 数据类型不兼容时,可能引起同步失败。 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 任务创建后,源数据库不支持增加逻辑库或修改旧逻辑库关联新的RDS,否则会导致数据无法正常同步或任务失败。 目标库需要提前创建逻辑库。 目标库如果已存在数据,DRS在增量同步过程中源库相同主键的数据将覆盖目标库已存在的数据,因此在同步前需要用户自行判断数据是否需要清除,建议用户在同步前自行清空目标库。 目标库实例如果选择将时间戳类型(TIMESTAMP,DATETIME)的列作为分片键,则源库数据在同步到目标库之后,作为分片键的该时间戳类型列的秒精度将被丢弃。 目标数据库存在表的AUTO_INCREMENT值至少不能小于源库表的AUTO_INCREMENT值。 选择表级对象同步时,增量同步过程中不建议对表进行重命名操作。 任务再编辑时,对新添加的表,在再编辑变更过程中禁止大批量导数据,建议在业务低峰期进行再编辑操作。 当目标DDM版本大于3.0.4.1版本,结束任务时,DRS会自动刷新DDM的自增列(sequence)起始值。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 源数据库不允许存在与目标库同名的无主键表。 如果源数据库MariaDB不支持TLS1.2协议,需提交运维申请才能使用SSL测试连接。 使用限制 通用: 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 全量同步阶段: 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 全量同步过程中,对MyISAM表执行修改操作时,可能造成数据不一致。 增量同步阶段: 增量同步过程中支持部分DDL操作。 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,DROP_COLUMN,DROP_INDEX,ADD_INDEX,CREATE_INDEX,RENAME_INDEX,DROP_TABLE,TRUNCATE_TABLE,DROP_PARTITION,RENAME_COLUMN,DROP_PRIMARY_KEY,ADD_PRIMARY_KEY,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步支持表的重命名,源表和目标表必须都在对象选择里。 增量同步支持任务再编辑追加同步对象。 表级同步时,增量同步过程支持使用Online DDL,可参考DRS实时同步支持使用Online DDL工具吗。 同步对比阶段: 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库如果存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤; 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。 进行表级多对一同步时,源库不允许存在无主键表。 当源数据库不存在视图,但是存在和视图同名的表结构时,请不要在源端执行对应的drop view if exists的SQL语句,否则会导致任务失败。这是因为在MariaDB中执行drop view if exists的时候,如果对应视图不存在,但是存在和视图名同名的表,该操作不会报异常,同时还会产生Binlog记录。同步到目标库时,GaussDB(for MySQL)在同样情况下执行drop view if exists时,会报is not view的异常,导致任务失败。 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 不支持源数据库恢复到之前时间点的操作(PITR)。 不支持目标数据库恢复到全量同步时间段范围内的PITR操作。 不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 不支持强制清理binlog,否则会导致同步任务失败。 不支持分区表的分区字段进行列映射。 任务创建后,目标库不能设置为只读。 多对一表级同步场景下,在“数据加工”页面设置了附加列为来源列,如果目标库中已经存在多对一映射之后的表,请在目标库中删除这张表或者清除表的数据,否则将不会通过附加列来创建联合主键。并且在同步过程中会因为数据冲突并忽略,而导致数据不一致。 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 如果源数据库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7.0-5.7.28之间),需提交运维申请才能使用SSL测试连接。 使用限制 通用: 实时同步过程中,若源库为RDS时,支持修改端口,修改之后同步任务失败,需要通过重试后继续进行同步。 实时同步过程中,若源库为非RDS时,不支持修改端口。 实时同步过程中,不支持IP、账号、密码修改。 不允许源数据库进行恢复操作。 不支持强制清理Binlog。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量同步阶段: 如果设置session变量character_set_client为binary,可能导致乱码。 增量同步过程中,不支持delete和update目标端主键类型为binary,text,blob,clob的表。 库级同步新建的无主键表必须包含以下列中的其中之一,详细说明可参考GaussDB(DWS)参数说明。 INTEGER TYPES: TINYINT、SMALLINT、INT、BIGINT、NUMERIC/DECIMAL; CHARACTER TYPES: CHAR、BPCHAR、VARCHAR、VARCHAR2、NVARCHAR2; DATE/TIME TYPES: DATE、TIME、TIMETZ、TIMESTAMP、TIMESTAMPTZ、INTERVAL、SMALLDATETIME; 无主键表会指定可作为分布列的其中一列作为分布列,如果所有列类型都无法作为分布列,会导致建表失败,DRS同步中断。 增量同步过程中,不支持指定位置加列的DDL操作(例如ALTER TABLE ddl_test ADD COLUMN c2 AFTER/FIRST c1;),DRS会删除AFTER/FIRST属性,可能会导致列顺序不一致。 增量同步过程中,执行不幂等的DDL可能导致数据不一致(例如ALTER TABLE ddl_test ADD COLUMN c3 timestamp default now();),DRS会因数据库函数执行结果不幂等导致最终数据不一致。 增量同步过程中,库级同步不支持Online DDL,表级同步目前只支持阿里云DMS产生的Online DDL。 增量同步过程中支持DDL操作。 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,ALTER_COLUMN,DROP_CONSTRAINT、ADD_CONSTRAINT、CREATE_INDEX,DROP_INDEX,RENAME_INDEX,RENAME_COLUMN,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 多对一场景下,执行colunm重命名操作,必须停业务操作,不然会有数据不一致的风险。 多对一场景下,推荐只同步加列DDL,其他的DDL同步可能会因为目标表被修改而导致任务失败或数据不一致。 多对一场景下,执行ADD_COLUNM时,需保证每张表加列的类型一致,否则有可能导致任务失败。 新增和修改表名、列名、索引名时不能超出63字符,否则任务会失败。 执行DDL语句创建索引时,语句中表名+索引名超出63字符可能出现重名情况,造成索引创建失败。 源库无主键表增加主键的时候,必须含有第一列,否则任务会失败。 增量阶段执行DDL操作时,如果目标表不存在,则该DDL会被忽略掉。 增量阶段,源数据库执行CHANGE COLUMN修改列信息,如果该列在目标数据库GaussDB(DWS)中为分布列,则该语句会被忽略,因为GaussDB(DWS)不支持修改分布列。 增量阶段,由于源和目标数据库索引规则不一样,所以不支持RENAME INDEX的DDL操作。 增量阶段,不建议CHAR(0)与其他字符拼接进行同步,例如插入CONCAT('a',CHAR(0),'b'),可能造成数据不一致。 增量阶段,JSON数据类型里不建议CHAR(34)(双引号)、CHAR(92)(反斜杠)与其他字符拼接进行同步,例如插入JSON_OBJECT('$.0', CONCAT('a', CHAR(34), 'b')),同步到目标端后会多出一个反斜杠,造成数据不一致。 结束任务: 任务正常结束: 请确保任务结束前,不要断开源和目标数据库的网络连通性,并在结束任务时关注同步日志上报的状态,达到数据库完整同步效果。 任务强制结束: 强制结束将直接释放DRS资源。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:索引引用表等。 不支持源数据库进行恢复操作。 不支持强制清理binlog,否则会导致同步任务失败。 同步无主键表时,如果存在唯一键,可能因数据冲突导致写入失败。 不建议在数据库中使用非精确数值类型做主键,该特性影响DRS增量场景下对UPDATE、DELETE语句的同步,导致任务失败。 如果无主键表中包含大字段(blob、text、clob、nclob、bytea),增量同步阶段存在大字段数据不一致的可能性。 源库为RDS for MySQL实例时,不支持带有TDE特性并建立具有加密功能表。 源库为RDS for MySQL实例时,支持源数据库多张表对GaussDB(DWS)一张表的映射。详细操作可参考创建MySQL到GaussDB(DWS)同步任务。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 MySQL 5.7版会过滤check约束,如果源数据库为5.7版时,不建议使用check约束,可能会导致数据不一致。 网络中断在30秒内恢复的,不影响实时同步,如果超过30秒,则会导致同步任务失败。 MySQL的唯一约束(unique key)在同步到目标数据库GaussDB(DWS)后会改写成普通约束,主键(primary key)的同步保持不变。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源数据库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 在MySQL中,同一个database(schema)下面的不同表可以存在相同的索引名或约束名。而目标端GaussDB(DWS)中,同一个schema中索引和约束名是唯一的,且长度存在上限。为防止索引和约束名冲突,DRS同步到目标表上的索引名称将变为此格式:哈希值+原索引名(可能被截断)+_key。其中哈希值由“原库名_原表名_原索引名”计算得到。同理,表上的原约束名将变为:哈希值+原约束名(可能被截断)+_key,或表名_原索引名。 全量阶段基于索引实现上差异,只保留普通B-Tree索引,其他索引默认不同步。GaussDB(DWS)索引过多时会影响存储空间和入库性能,建议用户可根据业务需求按需建索引。 DRS全量同步表结构时,源库中char、varchar、nvarchar、enum、set字符类型长度在目标库会按照字节长自动扩大(因为目标库为字节长)。 全量同步分区表的结构时会将该对象转为非分区的普通表,增量同步时,源库跟分区表相关的操作,可能无法同步到目标库或者在目标库执行失败。增量阶段同步分区表会依赖GaussDB(DWS)支持的类型创建分区表,可能会创建失败。 全量同步timestamp类型时,默认值中的on update current_timestamp语法将不会同步到目标库GaussDB(DWS)中。 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤。 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 增量同步DDL中的SQL来源于用户执行的原生SQL,全量同步的表结构语法是经过SQL语法层处理之后的SQL语句,两者之前存在一些类型或者约束差异,可能会导致全量和增量创建的结构或者字段类型不同,详细说明可参考同步到GaussDB(DWS)的使用建议。 源数据库同步的表如果有AUTO_INCREMENT属性,结束任务时,DRS会自动刷新同步表的序列整型列所对应的GaussDB自增列(sequence)起始值,刷新值为该列的最大值+10000。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 源库需要部署Pump和Drainer组件,具体操作请参考TiDB Binlog集群部署。 修改Drainer组件的配置文件,设置输出类型为Kafka,具体操作请参考配置 Kafka Drainer。 由于TIDB和GaussDB(for MySQL)的double类型的精度支持范围不一样,DRS不支持源库同步对象中的主键表以double类型的列作为主键列,不支持同步对象中的无主键表中含有double类型的列。如果以上场景中包含了double类型,可能会造成源库和目标库数据不一致。 注意: TiDB Binlog 与 TiDB v5.0 版本开始引入的以下特性不兼容: TiDB 聚簇索引特性:开启 TiDB Binlog 后 TiDB 不允许创建非单个整数列作为主键的聚簇索引;已创建的聚簇索引表的数据插入、删除和更新动作不会通过 TiDB Binlog 同步到下游。如需同步聚簇索引表,请升级至 v5.1 版本。 TiDB 系统变量 tidb_enable_async_commit:启用 TiDB Binlog 后,开启该选项无法获得性能提升。 TiDB 系统变量 tidb_enable_1pc:启用 TiDB Binlog 后,开启该选项无法获得性能提升。 TiDB Binlog 与 TiDB v4.0.7 版本开始引入的以下特性不兼容: TiDB 系统变量 tidb_enable_amend_pessimistic_txn:两个功能存在兼容性问题,一起使用会造成 TiDB Binlog 复制数据不一致的正确性问题。 使用限制 通用: 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。 请勿在目标库做写入操作,否则可能导致数据不一致。 全量同步阶段: 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。 增量同步阶段: 支持部分DML(Data Manipulation Language):包括INSERT、UPDATE、DELETE。 支持部分DDL(Data Definition Language):包括CREATE TABLE、DROP TABLE、ALTER TABLE、RENAME TABLE、TRUNCATE TABLE。 同步对比阶段: 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库如果存在写入,则对比结果可能不一致。 不支持在全量同步过程中做对比。 不支持数据对比过程中做限速。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 目标数据库参数lower_case_table_names等于1时,不允许同步包含大写字母的库或者表。 选择全量+增量同步,如果目标库已经存在表结构,需要保证与源端一致或包含源端的列。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 目标库已启用的触发器不可以与同步表关联。 增量同步支持任务再编辑追加同步对象。 在创建DRS任务之前,如果目标数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 如果源数据库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7.0-5.7.28之间),需提交运维申请才能使用SSL测试连接。 使用限制 通用: 不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 全量同步阶段: 对MyISAM表执行修改操作时,可能造成数据不一致。 不支持DDL操作。 增量同步阶段: 如果设置session变量character_set_client为binary,可能导致乱码。 支持部分DDL操作。 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,DROP_COLUMN,DROP_INDEX,ADD_INDEX,CREATE_INDEX,RENAME_INDEX,DROP_TABLE,TRUNCATE_TABLE,DROP_PARTITION,RENAME_COLUMN,DROP_PRIMARY_KEY,ADD_PRIMARY_KEY,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步支持表的重命名,源表和目标表必须都在对象选择里。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 任务做表名映射时,不支持该表的外键约束同步。 任务做库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤; 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。 源库不允许存在与目标库同名的无主键表。 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 源库为RDS for MySQL实例时,不支持带有TDE特性并建立具有加密功能表。 在创建DRS任务之前,如果源或者目标数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 不支持源数据库恢复到之前时间点的操作(PITR)。 不支持目标数据库恢复到全量同步时间段范围内的PITR操作。 不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 不支持强制清理binlog,否则会导致同步任务失败。 任务创建后,目标数据库不能设置为“只读”。 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。 使用了附加列功能,单表的列数超过500时,对该表添加附加列可能会超过列数上限,会导致任务失败。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 如果源数据库MySQL不支持TLS1.2协议,需提交运维申请才能使用SSL测试连接。 使用限制 通用: 实时同步过程中,如果修改了源库或者目标库的用户名、密码,会导致同步任务失败,需要在数据复制服务控制台将上述信息重新修改正确,然后重试任务可继续进行实时同步。一般情况下不建议在同步过程中修改上述信息。 为了保持数据一致性,不允许对正在同步中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 全量同步阶段: 不支持DDL操作。 对MyISAM表执行修改操作时,可能造成数据不一致。 增量同步阶段: 如果设置session变量character_set_client为binary,可能导致乱码。 支持部分DDL操作。 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,DROP_COLUMN,DROP_INDEX,ADD_INDEX,CREATE_INDEX,RENAME_INDEX,DROP_TABLE,TRUNCATE_TABLE,DROP_PARTITION,RENAME_COLUMN,DROP_PRIMARY_KEY,ADD_PRIMARY_KEY,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步支持表的重命名,源表和目标表必须都在对象选择里。 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤。 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 表级同步时,增量同步过程支持使用Online DDL,可参考DRS实时同步支持使用Online DDL工具吗。 支持任务再编辑追加同步对象。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 对于目标库MariaDB的系统参数enforce_storage_engine,如果该参数值为InnoDB,那么DRS不支持同步存储引擎为MyISAM的表结构和数据到目标库MariaDB。如果需要同步存储引擎为MyISAM的表数据,请先在目标创建好表结构(由于enforce_storage_engine参数限制,存储引擎只能为InnoDB)。 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 对于源数据库和目标数据库的版本有差异的同步链路,由于不同版本之间的部分特性差异,可能会出现语法兼容性问题,详情可参考MySQL或MariaDB不同版本之间的语法差异。 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。 进行表级多对一同步时,源库不允许存在无主键表。 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 不支持源数据库恢复到之前时间点的操作(PITR)。 不支持目标数据库恢复到全量同步时间段范围内的PITR操作。 不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 不支持强制清理binlog,否则会导致同步任务失败。 不支持分区表的分区字段进行列映射。 任务创建后,目标库不能设置为只读。 表级同步中,对于多对一场景下的表在数据加工页面设置了附加列为来源列,如果目标库中已经存在多对一映射之后的表,请在目标库中删除这张表或者清除这张表的数据,否则将不会通过附加列来创建联合主键(这在同步过程中会导致数据冲突并忽略,从而到导致数据不一致)。 源库MySQL版本为8.0时,部分排序字符集(utf8mb4_0900_as_ci、utf8mb4_0900_as_cs、utf8mb4_0900_bin、utf8mb4_cs_0900_ai_ci等支持Unicode 9.0的排序字符集),在目标库不支持。 由于引擎和版本差异,部分MySQL中的函数在MariaDB中不支持,不支持的函数有:MBRCOVEREDBY、ST_BUFFER_STRATEGY、ST_GeoHash、ST_IsValid、ST_LatFromGeoHash、ST_LongFromGeoHash、ST_PointFromGeoHash、ST_SIMPLIFY、ST_VALIDATE、 (8.0)JSON_ARRAYAGG、JSON_OBJECTAGG、JSON_PRETTY、JSON_STORAGE_FREE、JSON_STORAGE_SIZE、JSON_TABLE。 目标数据库MariaDB执行分区交换的时候不支持VALIDATION语法验证,在源数据库MySQL执行分区交换SQL的时候不要带校验语法,例如: ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2 WITH VALIDATION; 增量过程中请不要在源库MySQL的json类型中写入\n、\t、\r等字符,否则会导致数据不一致。 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 如果源数据库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7.0-5.7.28之间),需提交运维申请才能使用SSL测试连接。 使用限制 通用: 任务启动、任务全量同步阶段,不建议做删除类型的DDL操作,可能会引起任务失败。 不支持源数据库进行恢复操作。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 DRS全量同步表结构时,列名不能是CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID、OID、GS_TUPLE_UID、TABLEBUCKETID,这些GaussDB禁止的字段,否则会导致建表失败。 增量同步阶段: 不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 如果设置session变量character_set_client为binary,可能导致乱码。 增量同步过程中支持DDL操作。默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,RENAME_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,ALTER_COLUMN,DROP_INDEX,RENAME_INDEX,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步过程中,不支持DELETE和UPDATE目标数据库主键类型为tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、clob、nclob、bytea、binary的表。 结束任务: 任务正常结束: 请确保任务结束前,不要断开源和目标数据库的网络连通性,并在结束任务时关注同步日志上报的状态,达到数据库完整同步效果。 任务强制结束: 强制结束将直接释放DRS资源。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 在MySQL中,同一个database(schema)下面的不同表可以存在相同的索引名或约束名。而目标数据库GaussDB中,同一个schema中索引和约束名是唯一的,且长度存在上限。为防止索引和约束名冲突,在全量同步中,DRS同步到目标表上的索引名称将变为此格式:哈希值+原索引名(可能被截断)+_key。其中哈希值由"原库名_原表名_原索引名"计算得到。同理,表上的原约束名将变为:哈希值+原约束名(可能被截断)+_key。 暂不支持级联单向同步,例如从实例A同步到实例B,再从实例B同步到实例C。 网络中断在30秒内恢复的,不影响实时同步,如果超过30秒,则会导致同步任务失败。 源库表同步至目标库后分布方式为哈希分布,暂不支持复制分布。 源库为RDS for MySQL实例时,不支持带有TDE特性并建立具有加密功能表。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。 源库和目标库均相同的任务不允许出现重复同步的情况,如:A任务和B任务同时将源库的同一张表的实时同步到目标库的同一张表中,可能导致数据不一致和同步失败。 GaussDB只能设置库级字符集,如果遇到MySQL中设置了表级、字段级字符集的场景,可能会因为字符长度问题导致创建表结构异常。 DRS全量同步表结构时,源库中char、varchar、nvarchar、enum、set字符类型长度在目标库会按照字节长自动扩大(因为目标库为字节长),扩大倍数和源库中列的字符集有关。如源库字符集为UTF8的按照字节长扩大3倍,为UTF8MB4的按照字节长扩大4倍。 不建议在数据库中使用非精确数值类型做主键,该特性影响DRS增量场景下对UPDATE、DELETE语句的同步,导致任务失败。 如果无主键表中包含大字段(tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、clob、nclob、bytea、binary),增量同步阶段存在大字段数据不一致的可能性。 由于浮点型数据是采用近似值存储,而不是作为精确值存储,此外操作系统平台和底层实现也对浮点型数据有影响,因此FLOAT,DOUBLE类型的数据是不精确的,所以在MySQL和GaussDB同步浮点型数据,存在一定差异的可能性,可参考MySQL的官方文档。 不支持两阶段事务。 由于MySQL与GaussDB针对零时间("0000-00-00 00:00:00")内置的处理方式不同,当进行内容对比时,如果源、目标数据库存在零时间,对比结果会显示数据不一致。 源数据库MySQL的表中如果存在定长的binary字段,MySQL驱动会在数据末尾按照长度补齐\0,可能导致同步到目标库GaussDB后出现数据不一致的情况。 源数据库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 源数据库同步的表如果有AUTO_INCREMENT属性,结束任务时,DRS会自动刷新同步表的序列整型列所对应的GaussDB自增列(sequence)起始值,刷新值为该列的最大值+10000。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。 源数据库不允许存在与目标库同名的无主键表。 使用限制 通用: 同步过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 全量同步阶段: 全量同步过程中,对MyISAM表执行修改操作时,可能造成数据不一致。 全量同步过程中不支持DDL操作。 增量同步阶段: 增量同步过程中支持部分DDL操作。 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,DROP_COLUMN,DROP_INDEX,ADD_INDEX,CREATE_INDEX,RENAME_INDEX,DROP_TABLE,TRUNCATE_TABLE,DROP_PARTITION,RENAME_COLUMN,DROP_PRIMARY_KEY,ADD_PRIMARY_KEY,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。 增量同步支持表的重命名,源表和目标表必须都在对象选择里。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤; 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。 全量和增量同步不支持隐藏列(INVISIBLE),隐藏列是GaussDB(for MySQL) 8.0.23开始支持的特性,例如: CREATE TABLE `test11` ( `id` int NOT NULL, `c1` int DEFAULT NULL /*!80023 INVISIBLE */, PRIMARY KEY (`id`)); 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。 源库和目标库是相同的GaussDB(for MySQL)实例时,不支持没有库映射的实时同步。 在创建DRS任务之前,如果源数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 不支持源数据库恢复到之前时间点的操作(PITR)。 不支持目标数据库恢复到全量同步时间段范围内的PITR操作。 不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 不支持强制清理binlog,否则会导致同步任务失败。 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。 任务创建后,目标库不能设置为只读。 使用了附加列功能,单表的列数超过500时,对该表添加附加列可能会超过列数上限,会导致任务失败。 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。 表4 注意事项 类型名称 使用和操作限制 源数据库限制 源物理分片数据库建议开启skip-name-resolve,减少连接超时的可能性。 源物理分片数据库不支持枚举类型和set集合类型的。 源库的timestamp列的默认值,需要在目标库的合理取值内,否则会导致同步失败。 使用限制 通用: 不允许源端DDM正在同步的表做改变拆分键的操作,也不允许将单表/广播表改为拆分表,拆分表改为单表/广播表。 全量同步阶段: 全量阶段基于索引实现上差异,只保留普通B-Tree索引,其他索引默认不同步。GaussDB(DWS)索引过多时会影响存储空间和入库性能,建议用户可根据业务需求按需建索引。 增量同步阶段: 不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 如果需要对源库需要同步的表结构进行修改,则用户必须在目标库同步修改表结构。 支持部分DDL语句,包括:ADD COLUMN、CREATE TABLE、MODIFY COLUMN、CREATE INDEX、DROP INDEX、RENAME INDEX。 对同一张表或列做DDL操作,需要在业务低峰期,并且时间间隔1分钟以上。 不支持源数据库进行恢复操作。 不支持DELETE和UPDATE目标数据库主键类型为binary,text,blob,clob的表。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。 其他限制 如果专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。 数据类型不兼容时,可能引起同步失败。 源数据库中存在主键重复的数据时,直接同步将导致目标库数据比源库少,请务必检查并订正数据后启动同步。 源库的表如果包含系统列_ddm_lock、_slot,该列下的数据在全量、增量同步过程中都会被过滤,导致数据丢失。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 在源端,同一个database(schema)下面的不同表可以存在相同的索引名或约束名。而目标端GaussDB(DWS)中,同一个schema中索引和约束名是唯一的,且长度存在上限。为防止索引和约束名冲突,DRS同步到目标表上的索引名称将变为此格式:哈希值+原索引名(可能被截断)+_key。其中哈希值由“原库名_原表名_原索引名”计算得到。同理,表上的原约束名将变为:哈希值+原约束名(可能被截断)+_key,或表名_原索引名。 任务创建后,源数据库不支持增加逻辑库或修改旧逻辑库关联新的RDS,否则会导致数据无法正常同步或任务失败。 任务再编辑时,对新添加的表,在再编辑变更过程中禁止大批量导数据,建议在业务低峰期进行再编辑操作。
  • DC直连VPC组网迁移流程 本章节介绍将DC直连VPC组网流程迁移至企业路由器ER的总体流程,流程说明如表1所示。 表1 迁移DC直连VPC组网流程说明 步骤 说明 步骤一:创建企业路由器并添加VPC连接 在和业务VPC相同的区域内,创建1个企业路由器er-X。 在企业路由器中添加“虚拟私有云(VPC)”连接,即将业务VPC接入企业路由器中,连接名称为er-attach-VPC-X。 检查ER路由表中的路由是否已自动添加。 在VPC路由表中,添加指向ER的大网段路由。 步骤二:在企业路由器中添加VGW连接 创建一个新的虚拟网关vgw-B,并添加至企业路由器中。 此处虚拟网关vgw-B将会用作虚拟网关vgw-A迁移后的资源。 删除虚拟网关vgw-A上的虚拟接口vif-A02。 删除虚拟接口vif-A02之前,务必在线下IDC侧网络设备上进行配置,确保网络流量不会通过虚拟接口vif-A02。 在虚拟网关vgw-B上创建虚拟接口vif-B02,此处虚拟接口vif-B02是虚拟接口vif-A02迁移后的资源。 在线下IDC侧网络设备上进行配置,使网络流量可以通过新的虚拟接口vif-B02。 步骤三:验证VPC通过ER和线下IDC之间的网络通信情况 在VPC路由表中,添加指向线下IDC侧任意一台服务器的路由,用于验证VPC和线下IDC之间的网络通信情况。 在需要和线下IDC通信的VPC子网内,创建1个E CS ,登录ECS执行ping命令验证。 验证完成后,删除迁移验证相关的路由和ECS。 步骤四:执行迁移操作 删除虚拟网关vgw-A上的虚拟接口vif-A01。 删除虚拟接口vif-A01之前,务必在线下IDC侧网络设备上进行配置,确保网络流量不会通过虚拟接口vif-A01。 在虚拟网关vgw-B上创建虚拟接口vif-B01,此处虚拟接口vif-B01是虚拟接口vif-A01迁移后的资源。 在线下IDC侧网络设备上进行配置,使网络流量可以通过新的虚拟接口vif-B01。 步骤五:删除原有虚拟网关 待迁移完成后,vpc-X和虚拟网关vgw-B均已接入企业路由器中并正常通信,再删除原有虚拟网关vgw-A。 父主题: 将DC直连VPC组网迁移至企业路由器
  • 应用场景 华为云未上线企业路由器ER之前,客户通常使用VPC对等连接连通同一个区域内的不同 虚拟私有云VPC 。对等连接适用于简单的组网,因为每连通两个VPC,就需要创建一个对等连接。那么对于复杂的组网,大量的对等连接将会导致组网结构非常繁复冗余,不利于网络扩容,同时增加运维成本。 而企业路由器作为一个云上高性能集中路由器,可以同时接入多个VPC,实现同区域VPC互通。企业路由器连接VPC构成中心辐射性组网,网络结构简单明了,方便扩容和运维。 如果您的组网当前使用VPC对等连接构建,并且需要连通的VPC数量较多,那么推荐您将网络迁移到企业路由器上。 关于企业路由器更详细的介绍,请参见企业路由器产品介绍。
  • 方案架构 VPC-A、VPC-B、VPC-C位于区域A,通过对等连接连通三个VPC的网络,为了提升网络可扩展性、降低运维成本,现在需要将这三个VPC的网络迁移至企业路由器上。 迁移共分为迁移前、迁移中、迁移完成三个阶段,迁移架构图如图1所示。具体说明如下: 迁移前,VPC-A、VPC-B、VPC-C,通过VPC对等连接连通网络。 迁移中,VPC-A、VPC-B、VPC-C将会同时接入对等连接和企业路由器中,通过大小网段确保对等连接和企业路由器的路由不冲突。 迁移完成后,VPC-A、VPC-B、VPC-C可以通过企业路由器实现网络互通,此时可以删除原有VPC对等连接资源。 图1 VPC对等连接迁移架构图
  • 约束与限制 如果您对等连接下的VPC属于不同的账号,那么迁移的时候,您可以使用企业路由器的共享功能,将不同账号下的VPC迁移至同一个企业路由器中构建组网。 由于网络组网的复杂程度不同,将VPC对等连接迁移至企业路由器时,可能会造成业务中断,请您提交工单联系华为云客服,评估迁移方案。 当业务VPC下存在共享型弹性负载均衡、 VPC终端节点 私网NAT网关 、分布式缓存服务、混合云DNS解析时,不建议直接将业务VPC接入ER。 了解企业路由器的约束与限制详细信息,请参见企业路由器约束与限制。
  • 修订记录 发布日期 修订记录 2024-06-20 第十一次发布。 本次变更说明如下: 在DC双链路负载混合云组网方案概述~DC双链路负载混合云组网构建步骤章节,增加通过企业路由器构建DC双链路负载混合云组网场景。 在DC/VPN双链路互备混合云组网方案概述~DC/VPN双链路互备混合云组网构建步骤章节,增加通过企业路由器构建DC/VPN双链路主备混合云组网场景。 2024-05-16 第十次发布。 本次变更说明如下: 在方案概述~企业路由器和全球接入网关混合云组网构建步骤章节,增加企业路由器和全球接入网关混合云组网场景。 2023-12-26 第九次发布。 本次变更说明如下: 在方案概述~DC双链路负载混合云组网构建步骤章节,增加DC双链路负载混合云组网场景。 2023-12-07 第八次发布。 本次变更说明如下: 在DC直连VPC组网迁移方案概述~DC直连VPC组网迁移实施步骤章节,增加DC直连VPC组网迁移场景。 2023-10-25 第七次发布。 本次变更说明如下: 在方案概述~验证跨区域网络的通信情况章节,增加云连接中心网络内容。 2023-06-01 第六次发布。 本次变更说明如下: 在方案概述~通过企业路由器和中转VPC构建组网实施步骤章节,新增中转VPC场景。 2023-01-12 第五次正式发布。 本次变更说明如下: 在方案概述~DC/VPN双链路互备混合云组网构建步骤章节,增加DC/VPN双链路互备混合云组网内容。 2022-12-12 第四次正式发布。 本次变更说明如下: 在方案概述和在中心网络内为跨区域连接配置带宽章节,增加全域互联带宽的说明。 2022-10-30 第三次正式发布。 本次变更说明如下: 新增VPC对等连接组网迁移方案概述~VPC对等连接组网迁移实施步骤章节,新增VPC对等连接迁移场景。 2022-05-31 第二次正式发布。 本次变更说明如下: 在方案概述章节,增加共享企业路由器相关说明。 2022-03-30 第一次正式发布。
共100000条