- 最新动态
- 服务公告
-
产品介绍
- 图解数据复制服务
- 什么是数据复制服务
- 支持的数据库
- 产品优势
- 功能特性
- 规格说明
- 产品架构和功能原理
-
数据类型映射关系
- MySQL->PostgreSQL
- MySQL->GaussDB
- MySQL->Oracle
- MySQL->CSS/ES
- Oracle->MySQL
- Oracle->TaurusDB
- Oracle->GaussDB
- Oracle->DDM
- Oracle->GaussDB(DWS)
- Oracle->PostgreSQL
- TaurusDB->Oracle
- TaurusDB->CSS/ES
- GaussDB->MySQL
- GaussDB->GaussDB(DWS)
- GaussDB->Oracle
- DB2 for LUW->GaussDB
- DB2 for LUW->GaussDB(DWS)
- PostgreSQL->GaussDB
- PostgreSQL->GaussDB(DWS)
- TiDB->TaurusDB
- Microsoft SQL Server->GaussDB(DWS)
- Microsoft SQL Server->GaussDB
- Microsoft SQL Server->MySQL
- Microsoft SQL Server->TaurusDB
- Microsoft SQL Server->PostgreSQL
- 安全
- 权限管理
- 委托管理
- 委托管理(新)
- 约束与限制
- 访问数据复制服务
- 与其他服务关系
- 基本概念
- 计费说明
- 准备工作
- 快速入门
-
用户指南
- 实时迁移
- 备份迁移
-
实时同步
- 同步方案概览
- 数据同步拓扑介绍
-
入云
- 将MySQL同步到MySQL
- 将MySQL同步到PostgreSQL
- 将MySQL同步到GaussDB分布式版
- 将MySQL同步到GaussDB集中式版
- 将MySQL同步到GaussDB(DWS)
- 将MySQL同步到TaurusDB
- 将MySQL同步到MariaDB
- 将PostgreSQL同步到PostgreSQL
- 将PostgreSQL同步到GaussDB(DWS)
- 将PostgreSQL同步到GaussDB集中式版
- 将PostgreSQL同步到GaussDB分布式版
- 将Oracle同步到MySQL
- 将Oracle同步到TaurusDB
- 将Oracle同步到GaussDB集中式版
- 将Oracle同步到GaussDB分布式版
- 将Oracle同步到DDM
- 将Oracle同步到GaussDB(DWS)
- 将Oracle同步到PostgreSQL
- 将DDM同步到MySQL
- 将DDM同步到GaussDB(DWS)
- 将DDM同步到DDM
- 将DB2 for LUW同步到GaussDB集中式版
- 将DB2 for LUW同步到GaussDB分布式版
- 将DB2 for LUW同步到GaussDB(DWS)
- 将TiDB同步到TaurusDB
- 将Microsoft SQL Server同步到GaussDB(DWS)
- 将Microsoft SQL Server同步到GaussDB集中式版
- 将Microsoft SQL Server同步到GaussDB分布式版
- 将Microsoft SQL Server同步到Microsoft SQL Server
- 将Microsoft SQL Server同步到MySQL
- 将Microsoft SQL Server同步到TaurusDB
- 将Microsoft SQL Server同步到PostgreSQL
- 将MongoDB同步到DDS
- 将MariaDB同步到MariaDB
- 将MariaDB同步到MySQL
- 将MariaDB同步到TaurusDB
- 将TaurusDB同步到TaurusDB
- 将Cassandra同步到GeminiDB Cassandra
- 将Dynamo同步到GeminiDB Cassandra
- 将Dynamo同步到GeminiDB Dynamo
- 将AWS DocumentDB同步到DDS
- 将Redis 同步到GeminiDB Redis
- 将Redis集群同步到GeminiDB Redis
-
出云
- 将MySQL同步到MySQL
- 将MySQL同步到Kafka
- 将MySQL同步到CSS/ES
- 将MySQL同步到Oracle
- 将MySQL同步到MariaDB
- 将DDM同步到MySQL
- 将DDM同步到Oracle
- 将DDM同步到Kafka
- 将DDS同步到MongoDB
- 将DDS同步到Kafka
- 将PostgreSQL同步到PostgreSQL
- 将PostgreSQL同步到Kafka
- 将GaussDB分布式版同步到MySQL
- 将GaussDB分布式版同步到Oracle
- 将GaussDB分布式版同步到GaussDB(DWS)
- 将GaussDB分布式版同步到Kafka
- 将GaussDB分布式版同步到GaussDB分布式版
- 将GaussDB分布式版同步到GaussDB集中式版
- 将GaussDB分布式版同步到PostgreSQL
- 将GaussDB集中式版同步到MySQL
- 将GaussDB集中式版同步到Oracle
- 将GaussDB集中式版同步到GaussDB(DWS)
- 将GaussDB集中式版同步到Kafka
- 将GaussDB集中式版同步到GaussDB分布式版
- 将GaussDB集中式版同步到GaussDB集中式版
- 将GaussDB集中式版同步到PostgreSQL
- 将TaurusDB同步到MySQL
- 将TaurusDB同步到GaussDB(DWS)
- 将TaurusDB同步到Kafka
- 将TaurusDB同步到CSS/ES
- 将TaurusDB同步到Oracle
- 将MariaDB同步到MariaDB
- 将Microsoft SQL Server同步到Kafka
- 将GeminiDB Redis同步到Redis
- 将GeminiDB Redis同步到Redis集群
-
自建到自建
- 将MySQL同步到Kafka
- 将MySQL同步到CSS/ES
- 将MySQL同步到GaussDB集中式版
- 将MySQL同步到GaussDB分布式版
- 将Oracle同步到Kafka
- 将Oracle同步到GaussDB集中式版
- 将Oracle同步到GaussDB分布式版
- 将PostgreSQL同步到Kafka
- 将PostgreSQL同步到GaussDB集中式版
- 将PostgreSQL同步到GaussDB分布式版
- 将GaussDB集中式版同步到MySQL
- 将GaussDB集中式版同步到Oracle
- 将GaussDB集中式版同步到Kafka
- 将GaussDB集中式版同步到GaussDB分布式版
- 将GaussDB集中式版同步到GaussDB集中式版
- 将GaussDB集中式版同步到PostgreSQL
- 将GaussDB分布式版同步到MySQL
- 将GaussDB分布式版同步到Oracle
- 将GaussDB分布式版同步到Kafka
- 将GaussDB分布式版同步到GaussDB分布式版
- 将GaussDB分布式版同步到GaussDB集中式版
- 将GaussDB分布式版同步到PostgreSQL
- 将DB2 for LUW同步到GaussDB集中式版
- 将DB2 for LUW同步到GaussDB分布式版
- 将Microsoft SQL Server同步到Kafka
- 双向同步
- 任务管理
- 标签管理
- 连接诊断
- 查看异常数据
- 对接云审计服务
- 对接云监控服务
- 对接云日志服务
- 同步场景操作参考
- 附录
- 数据订阅
- 实时灾备
- 录制回放
- 校验任务
-
最佳实践
- 最佳实践汇总
- 实时迁移
- 备份迁移
- 实时同步
- 实时灾备
- 安全最佳实践
- 安全白皮书
-
API参考
- 使用前必读
- API概览
- 如何调用API
- 快速入门
- API v3(推荐)
-
API v3(不再推广)
-
公共接口管理
- 批量创建任务
- 批量测试连接
- 批量测试连接-集群模式
- 批量修改任务
- 批量数据库对象选择
- 批量预检查
- 批量查询预检查结果
- 批量设置任务限速
- 批量获取数据库参数
- 修改数据库参数
- 批量启动任务
- 批量续传/重试
- 批量暂停任务
- 批量结束任务或删除任务
- 批量修改源库/目标库密码
- 批量设置definer
- 创建对比任务
- 查询对比结果
- 查询租户任务列表
- 批量查询任务详情
- 批量查询任务状态
- 批量配置异常通知
- 查询可用的Node规格
- 查询数据级表对比任务列表
- 创建数据级表对比任务
- 取消对比任务
- 立即启动数据级表对比任务
- 查询行数对比总览
- 查询行数对比详情
- 查询内容对比总览
- 查询内容对比详情
- 查询内容对比差异
- 创建对象级对比任务
- 查询对象对比任务概览
- 查询对象对比任务详情
- 导出对比任务结果文件
- 下载对比任务结果文件
- 实时迁移管理
- 实时同步管理
- 实时灾备管理
-
公共接口管理
- API v5(公测中)
- 应用示例
- 权限策略和授权项
- 附录
- SDK参考
- 场景代码示例
-
常见问题
-
产品咨询
- 区域和可用区
- 什么是数据复制服务
- 数据复制服务是否支持关系型数据库的HA实例迁移
- 数据复制服务对源数据库有什么要求
- 数据复制服务对目标数据库有什么要求
- 数据复制服务是否采用了并发技术
- 数据复制服务是否采用了压缩技术
- DRS是否支持公有云和专属云间的数据库迁移
- 什么是配额
- DRS支持将DB2 for LUW迁移到PostgreSQL吗
- Microsoft SQL Server数据库能与本地数据库的数据实时同步吗
- 数据复制服务是否支持某个时间段的数据复制
- DRS支持断点续传吗
- 什么是单主/双主灾备
- 实时迁移、实时同步和实时灾备有什么区别
- MySQL迁移出现数据膨胀怎么办
- MySQL数据同步对源数据库和目标数据库有什么影响
- DRS需要源数据库停止业务吗
- 什么是SMN主题
- DRS任务的双AZ和单AZ有什么区别
- DRS是否支持只迁移表结构不迁移数据
- MySQL迁移、同步、灾备任务怎么迁移账号,是否支持修改密码
- 影响DRS任务速度的因素有哪些以及如何进行耗时预估
- DRS任务支持修改对象吗
- DRS是否支持同一实例不同库之间的同步
- 源或者目标数据库哪些操作,会影响DRS任务状态
- 数据订阅与MySQL到Kafka同步的区别
- 为什么DRS不支持部分他云只读实例的备库做源库
- DRS支持caching_sha2_password加密用户迁移吗
- 为什么迁移前后数据库磁盘空间使用量不一致
- DRS发送Kafka消息序列化方式是什么
- DRS可支持自建的MySQL数据库迁移吗?
- DRS会主动清空目标表数据吗?
- 入云,出云,自建有什么不同?
- DRS支持自建MySQL到自建MySQL的链路吗?
- DRS最小的传输粒度是什么?
- 在数据迁移过程中,对源库中目标库进行操作,会对DRS有什么影响?
- 网络及安全
- 权限管理
-
实时迁移
- 如何判断数据迁移任务可以停止
- MySQL迁移中Definer强制转化后如何维持原业务用户权限体系
- MySQL存储过程迁移上云后遇到调用权限的问题,如何解决
- 如何确保业务数据库的全部业务已经停止
- 迁移日志提示can not get agency token
- Oracle到MySQL迁移时,索引超长如何处理
- Oracle等异构数据库迁移到MySQL后的数据库排序规则为什么是utf8mb4_bin
- RDS for MySQL不支持MyISAM引擎表,迁移时MyISAM如何处理
- 低版本迁移至MySQL 8.0,应该注意哪些问题
- MongoDB数据库迁移过程中,源数据库出现内存溢出(OOM)是什么原因
- 如何关闭集合均衡器Balancer
- 如何批量导出、导入事件(event)和触发器(trigger)
- 源库参数lower_case_table_names=1时,为什么不允许迁移包含大写字母的库或者表
- 分片集群MongoDB迁移前清除孤儿文档
- MySQL账号迁移后权限显示多了反斜杠“\”
- 备份迁移
-
实时同步
- DRS支持直接同步不同schema的表到同一个schema吗
- DRS实时同步支持使用Online DDL工具吗
- DRS是否支持双向实时同步
- 源库Oracle为RAC集群时,为什么建议使用SCAN IP连接
- 源库Oracle补全日志检查方法
- 同步到GaussDB(DWS)的使用建议
- Oracle到GaussDB字符集兼容性说明
- 字符集不兼容导致数据乱码或者同步失败
- DRS增量同步怎样填启动位点
- MySQL或MariaDB不同版本之间的语法差异
- GaussDB远程连接配置方法
- GaussDB为源链路增量同步连接及端口说明
- DRS主键或者唯一键不一致导致数据不一致需要怎样处理
- 已经启动的任务,在配置中没有选DDL,需要重新支持,该怎么办?
- DRS同步任务支持MySQL8到MySQL5.7吗?
- DRS已经开始的同步任务如何增删表?
- GaussDB到Kafka导入对象文件支持表名映射和topic映射操作说明
- 数据订阅
- 实时灾备
- 数据对比
-
通用操作
- DRS界面信息重叠是什么原因
- 目标库读写设置是实例级还是库级
- MySQL源库设置了global binlog_format = ROW没有立即生效
- binlog_row_image参数设置为FULL没有立即生效
- 设置的密码不符合目标库的密码复杂度要求时,如何修改密码强度
- 如何设置MongoDB数据库分片集群的分片键
- 扩大带宽是否会对DRS正在进行中的任务产生影响
- 为什么MariaDB和SysDB下的数据不迁移或同步
- 多对一的场景约束及操作建议
- 一对多的场景约束及操作建议
- 数据复制服务的操作日志在哪里查看
- 为什么DRS发送提示信息的语言和页面不符
- 为什么DRS任务自动结束了
- DRS导出任务列表
- 已结束的任务还能重新启动吗
- 重置任务和重新创建任务有什么区别
- DRS支持一键反向功能吗
- 已经创建的SMN主题为什么选择不了
- 任务创建成功后是否支持修改SMN主题
- DDM为源链路源库分片数量和信息怎么填写
- 源端MySQL发生主备倒换,DRS任务会丢数据吗
- DRS对象选择时的全部迁移、表级迁移、库级迁移有什么区别
- 源库或目标库修改密码后如何操作
- 设置SMN主题策略,允许DRS发送消息通知
- DRS任务表数量太多导致任务超时怎么办
- DRS任务创建后支持修改源或目标数据库吗
- Api V5公测状态,是可用的吗?
- DRS进行暂停,结束任务,续传任务操作,需要多少时间?
- 计费相关
- 时延相关
-
产品咨询
-
故障排除
-
预检查不通过项修复方法
- 磁盘空间检查
-
数据库参数检查
- 源数据库binlog日志是否开启
- 源数据库binlog格式检查
- 源数据库expire_logs_days参数检查
- 源数据库和目标数据库的字符集是否一致
- 源数据库参数server_id是否符合增量迁移要求
- 源数据库和目标数据库表名大小写敏感性检查
- 源数据库中是否存在非ASCII字符的对象名称
- time_zone的一致性检查
- collation_server的一致性检查
- SERVER_UUID的一致性检查
- 数据库参数SERVER_ID的一致性检查
- 源数据库是否存在不允许使用的sql_mode值
- 数据库参数sql_mode的一致性检查
- 目标库sql_mode中no_engine值检查
- 数据库参数innodb_strict_mode一致性检查
- 校验源数据库参数max_wal_senders
- 源库参数WAL_LEVEL校验
- 源库参数MAX_REPLICATION_SLOTS校验
- 源数据库是否处于备机状态
- 源数据库参数log_slave_updates检查
- 源库与目标库的BLOCK_SIZE参数值是否相同
- binlog_row_image参数是否为FULL
- 事务隔离级别一致性校验
- 货币金额格式是否一致
- 源数据库中是否存在非ASCII字符的触发器名
- 源数据库集合索引个数检查
- 源数据库集合TTL索引检查
- 源库和目标库参数log_bin_trust_function_creators一致性校验
- 源库的GTID功能检查
- 目标库的GTID功能检查
- 目标库参数log_bin_trust_function_creators校验
- 异构数据库兼容性风险须知
- 检查目标库的max_allowed_packet参数
- 源数据库是否具有日志解析权限
- 源数据库ExpireLogsDays参数检查
- 源数据库字符集是否支持
- 源数据库表名和字段名长度检查
- 选择对象预检查
- 源库是否具有补充日志级别权限
- 源库对象名长度检查
- 目标库参数session_replication_role检查
- 数据库兼容类型检查
- 目标库排序字符集检查
- 索引名是否支持
- 表结构一致性检查
- 存在约束不验证添加前数据
- 目标库附加列检查
- 主备库是否开启隐式主键检查
- 源库表复制属性检查
- 源库指定名称的复制槽是否存在
- 实例类型是否匹配迁移模式
- 物理复制库检查
- 目标库大小写敏感检查
- 源库表是否开启了CDC
- 源库CDC数据保留时间是否足够
- 源库服务器计算机名是否一致
- 源库库名长度校验
- 同步对象名称校验
- 源数据库是否存在被禁用的聚集索引
- 源数据库实例是否为空
- 源数据库恢复模式检查
- 源数据库选择对象预检查
- 源库表类型校验
- 源数据库SQL Server代理运行状态检查
- 数据库参数group_concat_max_len一致性检查
- 源库表结构是否一致
- 字符集兼容性检查
- 源库存在长时间未提交的XA事务检查
- 目标数据库对象一致性检查
- 目标库同名库表检查
- 目标库用户(schema)及表是否已存在
- 源库迁移的索引列数量检查
- 源库索引列长度检查
- 源库Oracle与目标库中间件表结构(包括列数,主键索引)是否对齐
- 目标库是否存在同步对象
- 源数据库存在加密的数据库对象
- 源数据库表字段类型检查
- 主键列复制属性的校验
- 同步对象中是否存在包含longtext或longblob类型字段的表
- 映射数据库对象检查
- 源库是否为TaurusDB备库
- 映射到目标库中的type名是否合法
- 源库和目标库的字符集是否一致
- 源库是否已开启复制功能
- 源库最大数据库序号是否小于目标库最大数据库序号
- 源库间隔分区表检查
- 源库用户属于Oracle
- 源库输入DN数量校验
- 目标库对象一致性检查
- 源端存在不支持的外键引用操作
- 所选表是否包含延迟约束
- 源迁移库无主键表检查
- 是否禁用了外键或者同步的表在目标库上是否有外键
- 源库集合复合哈希索引检查
- 源库集合复合哈希分片键检查
- 源端表结构是否存在换行
- 同步对象中是否存在包含bytea、text类型字段的表
- 源库表结构是否存在虚拟列
- 检查源库的max_allowed_packet参数
- 源库补全日志级别检查
- Kafka Topic是否已创建
- 源库编码方式检查
- 数据库参数block_encryption_mode一致性检查
- 目标库区域类型及排序规则检查
- 源数据库列名检查
- 目标数据库schema及表对象一致性检查
- 源库加密表检查
- 源库中表的复制属性检查
- 源库分区表检查
- 源库存在不支持的生成列检查
- 源数据库参数ENABLE_SLOT_LOG校验
- 源库实例状态检查
- 目标库实例状态检查
- 数据库用户权限检查
- 数据库版本检查
- 网络情况
- 数据库对象检查
- 数据库配置项检查
- 冲突检查
- SSL连接检查
- 对象依赖关系检查
- 源数据库信息检查
- 预检查超时
-
失败案例
- 案例总览
-
MongoDB->DDS实时迁移
- 全量迁移失败报错,关键词“Prematurely reached end of stream”
- 全量迁移失败报错,关键词“not authorized on *** to execute command {***}”
- 全量迁移失败报错,关键词“GC overhead limit exceeded”
- 全量迁移失败报错,关键词“The background process is unavailable. Maybe it has been killed manually or by the operating system. Please restart the task if possible or wait for restarting by itself within 5 minutes.”
- 全量迁移失败报错,关键词“Timed out after 60000 ms while waiting to connect”
- 全量或增量迁移失败报错,关键词“Timed out after 60000 ms while waiting to connect”
- 全量或增量迁移失败报错,关键词“Invalid BSON field name ***”
- 增量迁移失败报错,关键词“Timed out after 60000 ms while waiting for a server that matches com.mongodb.client.internal”
- 增量迁移失败报错,关键词“Command failed with error *** (***):***. The full response is {***}”
-
MySQL->MySQL实时迁移和同步
- 全量阶段失败报错,关键词“Table *** doesn't exist”
- 全量阶段失败报错,关键词“The background process is unavailable”
- 全量阶段失败报错,关键词“Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server”
- 全量阶段失败报错,关键词“Error writing file *** (errno: 28 - No space left on device)”
- 全量阶段失败报错,关键词“The MySQL server is running with the --super-read-only option so it cannot execute this statement”
- 全量阶段失败报错,关键词“The table *** is full”
- 全量阶段失败报错,关键词“Unknown column *** in 'field list'”
- 全量阶段失败报错,关键词“Lock wait timeout exceeded; try restarting transaction”
- 全量阶段失败报错,关键词“Java heap space”
- 全量阶段失败报错,关键词“Table *** already exists”
- 全量阶段失败报错,关键词“temp table: *** not exist”
- 全量阶段失败报错,关键词“failed to create new session”
- 全量阶段失败报错,关键词“load table: *** failed”
- 全量阶段失败报错,关键词“extract table structure failed!”
- 全量阶段失败报错,关键词“read table=*** failed”
- 全量阶段失败报错,关键词“CANNOT UPDATE USER WITH NULL PASSWORD”
- 全量阶段失败报错,关键词“Access denied for user *** to database ***”
- 全量阶段失败报错,关键词“The MySQL server is running with the --super-read-only option so it cannot execute this statement”
- 全量阶段失败报错,关键词“Temporary file write failure.”
- 全量阶段失败报错,关键词“Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys”
- 全量阶段失败报错,关键词“Unknown database ***”
- 全量阶段失败报错,关键词“Access denied; you need (at least one of) the SUPER privilege(s) for this operation”
- 全量阶段失败报错,关键词“retry structures failed events”“Table *** doesn't exist”
- 全量阶段失败报错,关键词“ shard table=*** failed”
- 全量阶段失败报错,关键词“error when split table shard occur!”
- 全量阶段失败报错,关键词“Column name 'AUTO_PK_ROW_ID' is reserved.”
- 全量阶段失败报错,关键词“transfer account failed, can not find password from src DB”
- 全量阶段失败报错,关键词“Failed to add the foreign key constraint '***' to system tables”
- 全量阶段失败报错,关键词“Too many keys specified; max 64 keys allowed”
- 全量阶段失败报错,关键字“Unknown collation: 'utf8mb4_0900_ai_ci'”
- 全量阶段失败报错,关键字“exist some xa transactions for long times, may lack some data for this Job!.”
- 全量阶段失败报错,关键字“Invalid GIS data provided to function st_geometryfromtext'”
- 全量或增量阶段失败报错,关键词“Access denied for user ***”
- 全量或增量阶段失败报错,关键词“binlog is not existed”
- 全量或增量阶段失败报错,关键词“database log download failed”
- 全量或增量阶段失败报错,关键词“Can not read response from server”
- 全量或增量阶段失败报错,关键词“Communications link failure”
- 全量或增量阶段失败报错,关键词“EOF Packet received, master disconnected”
- 全量或增量阶段失败报错,关键词“Extract db create sql failed”
- 全量或增量阶段失败报错,关键词“load database structure failed in source database”
- 全量或增量阶段失败报错,关键词“load table: *** failed”
- 全量或增量阶段失败报错,关键词“Reached end of input stream”
- 全量或增量阶段失败报错,关键词“Read timed out”
- 全量或增量阶段失败报错,关键词“The background process is unavailable”
- 全量或增量阶段失败报错,关键词“Duplicate entry *** for key 'PRIMARY'”
- 全量或增量阶段失败报错,关键词“cause by: Index: ***, Size: ***”
- 全量或增量阶段失败报错,关键词“The offset and file name between src and parser is inconsistency”
- 全量或增量阶段失败报错,关键词“core process is not healthy or crashed”
- 全量或增量阶段失败报错,关键词“table info of table `***` from metadata miss”
- 全量或增量阶段失败报错,关键词“binlog parse fail, data dictionary may be not complete!”
- 全量或增量阶段失败报错,关键词“table *** record field size for insert/delete dml”
- 全量或增量阶段失败报错,关键词“service *** failed, cause by: Unable to connect to DBMS: ***”
- 全量或增量阶段失败报错, 关键词“The binlog fetch connection may be interrupted”
- 全量或增量阶段失败报错,关键词“Received error packet: errno - 1047, solstate - HY000 errmsg = Unknown command”
- 增量阶段失败报错,关键词“not equals to target db column count”
- 增量阶段失败报错,关键词“The MySQL server is running with the --super-read-only option”
- 增量阶段失败报错,关键词“you need (at least one of) the SUPER privilege(s) for this operation”
- 增量阶段失败报错,关键词“Can't DROP ***; check that column/key exists”
- 增量阶段失败报错,关键词“Can't find file: *** (errno: 2 - No such file or directory)”
- 增量阶段失败报错,关键词“Data truncation: Data too long for column”
- 增量阶段失败报错,关键词“Failed to read file header from”
- 增量阶段失败报错,关键词“Lock wait timeout exceeded”
- 增量阶段失败报错,关键词“Must seek before attempting to read next event”
- 增量阶段失败报错,关键词“Table *** already exists”
- 增量阶段失败报错,关键词“Table *** doesn't exist”
- 增量阶段失败报错,关键词“Table *** not found in database”
- 增量阶段失败报错,关键词“source has more columns than target”
- 增量阶段失败报错,关键词“Unknown storage engine”
- 增量阶段失败报错,关键词“Unknown table”
- 增量阶段失败报错,关键词“You have an error in your SQL syntax”
- 增量阶段失败报错,关键词“not illegal for mariaDb gtid position”
- 增量阶段失败报错,关键词“without PK execute failed”
- 增量阶段失败报错,关键词“Deadlock found when trying to get lock”
- 增量阶段失败报错,关键词“current serverUUID not equals to this session”
- 增量阶段失败报错,关键词“Slave has more GTIDs than the master has, using the master's SERVER_UUID.”
- 增量阶段失败报错,关键词“Operation not allowed when innodb_force_recovery > 0”
- 增量阶段失败报错,关键词“filter data in config condition filter error”
- MySQL->TaurusDB实时迁移和同步
- MySQL->CSS/ES实时同步
-
PostgreSQL->PostgreSQL实时同步
- 任务启动失败报错,关键词“Initialize logical replication stream failed, the source database may have a long transaction: ****.”
- 全量同步失败报错,关键词“function *** does not exist”
- 全量同步失败报错,关键词“relation *** does not exist”
- 全量同步失败报错,关键词“GC overhead limit exceeded”
- 全量同步失败报错,关键词“Java heap space”
- 全量同步失败报错,关键词“column *** of relation *** does not exist”
- 全量同步失败报错,关键词“column *** does not exist”
- 全量同步失败报错,关键词“type 'hstore' does not exist”
- 全量同步失败报错,关键词“type 'geometry' does not exist”
- 全量同步失败报错,关键词“Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections”
- 全量同步失败报错,关键词“invalid locale name”
- 全量同步失败报错,关键词“password must not equal user name”
- 全量同步失败报错,关键词“permission denied for schema ***”
- 全量或增量阶段失败报错,关键词“service *** failed, cause by: Unable to connect to DBMS: ***”
- 全量或增量阶段失败报错,关键词“Initialize logical replication stream failed, the source database may have a long transaction”
- 全量或增量阶段失败报错,关键词“memory required is *** MB, maintenance_work_mem is *** MB”
- 全量或增量阶段失败报错,关键词“temporary file size exceeds temp_file_limit”
- 增量同步失败报错,关键词“Table *** not found in target database”
- 增量同步失败报错,关键词“remaining connection slots are reserved”
- 增量同步失败报错,关键词“PL/pgSQL function *** line *** at SQL statement”
- 增量同步失败报错,关键词“The replication slot does not exist and the task is not started for the first time.”
-
Oracle为源实时同步
- 全量同步失败报错,关键词“has date/datetime: *** which is outside of dest allowed range”
- 全量或增量阶段失败报错,关键词“Got minus one from a read call”
- 增量同步失败报错,关键词“Source supplemental log level is PK/UI. Missing column data at delete+insert on ***”
- 增量同步失败报错,关键词“timeout when get next file log, maybe has been deleted, please check it.”
- 增量同步失败报错,关键词“Failed to construct kafka producer. ”
- 增量同步失败报错,关键词“Topic *** not present in metadata after 300000 ms”
- GaussDB为源实时同步
- MySQL为源实时灾备
- 备份迁移
- 录制回放
- 数据对比
-
预检查不通过项修复方法
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
数据对比(对比灾备项)
对比使用场景
对比灾备项可以对比业务数据库和灾备数据库的数据一致性,目前灾备对比功能支持以下几种对比方式:
- 对象级对比:支持对数据库、索引、表、视图、存储过程和函数等对象进行对比。
- 数据级对比分为行对比和内容对比。
- 行对比:对比同步的表的行数是否一致,只查询表的行数,对比速度较快,建议优先使用。
- 内容对比:对比同步的表内数据是否一致,需要查询每条数据进行对比,相较于行对比,内容对比较慢。
为了确保对比结果具有可参考性,请通过“稍后启动”功能在业务低峰期或者无业务期进行数据对比,业务运行期间由于数据的持续变化,仅适合对一些业务的低频率修改的冷数据进行对比。
- 用户对比:对源库和目标库的账号名称、权限进行对比。
在使用对比功能查看数据一致性时,建议优先使用行数对比,确定行数是否一致。如果出现行数不一致的情况,可以针对不一致的表,使用内容对比,来确定具体有哪些数据不一致。
灾备方向 |
数据流向 |
对象级对比 |
行对比 |
内容对比 |
动态内容对比 |
用户对比 |
---|---|---|---|---|---|---|
本云为备 |
MySQL->MySQL |
支持 |
支持 |
支持 |
支持 |
支持 |
本云为主 |
MySQL->MySQL |
支持 |
支持 |
支持 |
支持 |
支持 |
本云为备 |
MySQL->TaurusDB |
支持 |
支持 |
支持 |
支持 |
支持 |
本云为备 |
DDM实例->DDM实例 |
支持 |
支持 |
不支持 |
不支持 |
不支持 |
本云为主 |
DDM实例->DDM实例 |
支持 |
支持 |
不支持 |
不支持 |
不支持 |
本云为备 |
TaurusDB->TaurusDB |
支持 |
支持 |
支持 |
支持 |
支持 |
本云为主 |
TaurusDB->TaurusDB |
支持 |
支持 |
支持 |
支持 |
支持 |
双主灾备 |
MySQL->MySQL |
支持 |
支持 |
支持 |
不支持 |
支持 |
双主灾备 |
TaurusDB->TaurusDB |
支持 |
支持 |
支持 |
不支持 |
支持 |
约束限制
- 对比是大小写敏感的,如果业务数据库或灾备数据库一端为非大小写敏感,一端为大小写敏感,对比结果可能出现不一致的情况。
- 如果在对比时业务数据库进行DDL操作,为保证对比结果的准确性,需重新进行内容对比。
- 如果单独对灾备数据库进行数据修改操作,可能会导致对比结果不一致。
- 如果业务数据库字符类型存在编码异常的情况,通过DRS灾备或对比时会因数据库驱动转码转换为异常码点,最终可能导致内容对比一致,实际字节不一致。
- 内容对比功能目前只支持带有主键的表,对于不支持内容对比的表可以使用行数对比功能。所以数据级对比功能需要结合业务场景,选用行数对比或者内容对比。
- DRS进行内容比对期间不能暂停DRS任务,否则可能导致比对任务失败。
- 部分数据类型不支持内容对比,详情参考内容对比不支持哪些数据类型。
- 为避免占用资源,DRS对行对比的时长进行限制,超过限制时长,行对比任务自动停止。业务数据库是关系型数据库时,行对比限制时长为60分钟;业务数据库为非关系数据库,行对比限制时长为30分钟。
- 为避免占用资源,DRS任务的对比结果限制保留60天,60天后自动清除。
- 对于支持内容对比的灾备链路,如果创建任务时可以选择实例规格,那么仅支持大规格及以上规格进行内容对比。
- MySQL、TaurusDB为源链路,源数据库中的虚拟列不支持内容对比,对比时会过滤虚拟列。
对数据库影响
- 对象对比:会查询源库及目标库的系统表,占用10个左右的session的连接数,正常情况不会对数据库产生影响。但是如果对象数量巨大(比如几十万张表),可能会对数据库产生一定的查询压力。
- 行数对比:会查询源库及目标库的表行数,占用10个左右的session的连接数,正常的select count语句基本不会对数据库产生影响。但是如果表数据量巨大(亿级)会对数据库产生一定的查询压力,返回查询结果会比较慢。
- 内容对比:会查询源库及目标库的全部数据,涉及每个字段都会对比,所以会对数据库产生一定的查询压力,主要体现在IO上,查询速度受限于源库和目标库的IO和网络带宽。占用1-2个CPU,占用10个左右的session的连接数。
- 用户对比:会查询源库及目标库的账户和权限,基本不会对数据库产生影响。
对比耗时预估
- 对象对比:根据源库查询性能,一般会在几分钟内返回结果,如果对象数据量特别巨大,对比时长可能达到几十分钟。
- 行数对比:使用select count方式,查询速度跟数据库性能相关。
- 内容对比:在数据库没有压力并且网络正常的情况下,对比速度大概是5M/s。
- 用户对比:与对象对比同时返回结果,如果对象不多的情况下,基本会在几分钟就会返回结果。
前提条件
- 已登录数据复制服务控制台。
- 已启动灾备任务。
操作步骤
- 在“实时灾备管理”界面,选中指定灾备任务,单击任务名称,进入“基本信息”页签。
- 单击“灾备对比”页签,进入“灾备对比”信息页面,对业务数据库和灾备数据库的数据进行对比分析。
- 首先进行数据库对象完整性检查。
若需要查看对比项的对比结果详情,可单击指定对比项操作列的“详情”。
- 数据库对象检查完成后,进行灾备数据行数和内容对比。
在“数据级对比”页签,单击“创建对比任务”页面,选择“对比类型”、“对比方式”、“对比时间”和“对象选择”,单击“确定”,提交对比任务。
图2 创建对比任务- 对比类型:分为行数对比和内容对比。
- 对比方式:分为静态对比和动态对比两种。
- 静态对比:对源数据库和目标数据库进行一次全量内容对比,内容对比完成后对比任务结束,适用于无数据变化的非业务时间。
- 动态对比:先对源数据库和目标数据库进行一次全量内容对比,对比任务完成后进入增量对比阶段,实时比对源数据库和目标数据库的增量数据,适用于有数据变化的业务时间。
说明:
- 目前仅MySQL和TaurusDB引擎支持对比方式选择。
- 动态对比过程中不支持在业务数据库创建新表。如需创建,请先取消动态对比,待新表创建并灾备完成后,再重新启动动态对比。
- 对比时间:可设置为“立即启动”和“稍后启动”。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现符合实际情况的少量数据不一致对比结果,推荐结合对比定时功能,选择在业务低峰期进行对比,得到更为具有参考性的对比结果。
- 进行数据过滤:开启后,可根据配置的过滤条件进行对象比对。
说明:
目前实时灾备仅支持MySQL->MySQL设置数据过滤对比。
选择开启数据过滤后,需要为选择对比的表对象添加过滤条件。
在过滤条件区域,填写过滤条件后,单击“校验规则”。说明:
- 过滤表达式不支持使用某种数据库引擎特有的package、函数、变量、常量等写法,须使用通用SQL标准。
- 请直接输入SQL语句中WHERE之后的部分(不包含WHERE和分号,例如:sid > 3 and sname like "G %")。
- 过滤条件不支持使用隐式转换规则,请填写正确的数据类型条件。例如Oracle的c列是字符类型varchar2,过滤条件应该设置为 c > '10',而不是c > 10。
- 不支持对LOB字段设置过滤条件,如CLOB、BLOB、BYTEA等大字段类型。
- 建议不要对非精确类型字段设置过滤条件,如FLOAT、DECIMAL、DOUBLE等。
- 建议不要对带有特殊字符的字段设置过滤条件。
- 暂不支持对库名、shema名、表名大小写混用的对象进行过滤比对。
- 暂不支持单库超过5万张表情况下进行条件过滤。
校验通过后,单击“生成加工规则”,即可在加工规则表格中看到该规则。
检查无误后,单击“确定”,创建对比任务。
- 对象选择:可根据具体的业务场景选择需要进行对比的对象。
说明:
- 初始化中的任务无法进行数据级对比。
- 对比任务提交成功后,返回“数据级对比”页签,单击
刷新列表,可以查看到所选对比类型的对比结果。
图3 数据级对比结果 - 若需要查看对比类型详情,可单击指定对比类型操作列的“查看对比报表”,然后选择需要进行对比的数据库,单击操作列的“查看详情”,查看指定业务数据库和灾备数据库的对比结果详情。
图4 行数对比详情图5 内容对比详情
说明:
- 已取消的对比任务也支持查看对比报表。
- 行对比结果可按照“源库表行数”或“目标库表行数”,对当前页面显示的结果进行升序或者降序排列,方便进行筛选。
- 行对比差异显示为负数时,代表目标库表行数比源库表行数多;显示为正数时,代表源库表行数比目标库表行数多。
- 查看数据库账号和权限对比。单击“用户对比”页签,可查看数据库账号及权限的对比结果。
图6 用户对比
说明:
- 初始化阶段的任务无法进行用户对比。
- 首先进行数据库对象完整性检查。
数据修复(公测中)
当静态内容对比结果中存在不一致数据时,可在对比报表的明细页中选取不一致的表进行数据修复。数据修复结果为可在目标库执行的修复SQL。修复完成后可在对比报表的修复进度明细页查看不一致行的修复SQL生成详情,也可导出和下载针对本次对比所有已生成的不一致SQL,并结合实际情况在目标库手动执行修复SQL。数据修复具有如下约束。
- 数据修复功能仅支持白名单用户使用,当前仅支持MYSQL-MYSQL链路。
- 对于修复SQL为INSERT或UPDATE语句的场景,修复SQL中将展示不一致行的所有列内容,列值为对应列在源库的当前值。
- 历史的比对任务可能由于缺少修复信息而修复失败,需要重新比对后再进行修复。
- 每个灾备任务仅保留最新一次数据修复的修复进度明细信息页面。
- 单个不一致行的数据大小最大支持4M,超过时对应的修复SQL将生成失败。
- DRS生成的修复SQL中,时间类型字段的内容是基于UTC时间的,如果表中存在时间字段,目标库执行修复SQL前需先将会话时区设置为0时区。各数据库类型对应的会话时区设置SQL示例如下表。
- 请谨慎执行修复SQL中的DELETE语句。
数据库类型 |
时区设置SQL |
---|---|
MYSQL |
SET session time_zone='+00:00'; |