- 最新动态
- 服务公告
-
产品介绍
- 图解数据复制服务
- 什么是数据复制服务
- 支持的数据库
- 产品优势
- 功能特性
- 规格说明
- 产品架构和功能原理
-
数据类型映射关系
- 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为源实时灾备
- 备份迁移
- 录制回放
- 数据对比
-
预检查不通过项修复方法
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
本地PostgreSQL同步到RDS for PostgreSQL
数据复制服务(Data Replication Service,简称DRS)支持将本地PostgreSQL数据库的数据同步至云数据库RDS for PostgreSQL实例。通过DRS提供的实时同步任务,实现在数据库同步过程中业务和数据库不停机,业务中断时间最小化。
本章节主要介绍了通过DRS将本地PostgreSQL数据库同步至云数据库RDS for PostgreSQL的任务配置流程。支持以下网络类型:
- VPN(Virtual Private Network,虚拟专用网络)网络
- 公网网络
网络示意图


同步流程

同步建议(重要)
- 数据库同步与环境多样性和人为操作均有密切关系,为了确保同步的平顺,建议您在进行正式的数据库同步之前进行一次演练,可以帮助您提前发现问题并解决问题,如何最小化对数据库的影响请参考如下建议。
- 强烈建议您在启动任务时选择“稍后启动”功能,将启动时间设置在业务低峰期,相对静止的数据可以有效提升一次性同步成功率,避免同步对业务造成性能影响。
同步准备
- 权限准备:
当使用 DRS 将本地PostgreSQL数据库的数据同步到本云云数据库PostgreSQL实例时,在不同同步类型情况下,对源数据库和目标数据库的账号权限要求如表1所示:
表1 同步账号权限 同步类型
全量同步
全量+增量同步
源数据库
数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的select权限(用于同步用户的密码)。
数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的SELECT权限(用于同步用户的密码),无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。
说明:
- 无主键表的UPDATE、DELETE和TRUNCATE权限,仅用于对无主键表短暂加锁,以确保迁移后,目标库中无主键表数据与源库保持一致。
- REPLICATION连接权限的添加方法:
- 在源数据库的“pg_hba.conf”配置文件的所有配置前增加一行配置“host replication <src_user_name> <drs_instance_ip>/32 md5”;
- 在源库使用SUPERUSER用户执行语句“select pg_reload_conf();”生效,或重启数据库实例生效。
目标数据库
- 库级同步:需要具有CREATEDB权限。
- 表级同步:
- 如果需要同步库,需要具有CREATEDB权限。
- 如果需要同步模式,需要具有模式所在库的CONNECT权限、模式所在库上的CREATE权限。
- 如果需要同步模式下的对象,需要具有模式所在库的CONNECT权限、对象所在模式的USAGE权限、对象所在模式上的CREATE权限。
- 同步用户:需要具有CREATEROLE权限。
- 同步用户权限:同步用户的default privilege需要为系统默认值,否则可能导致目标库与源库的对象权限不一致。
说明:
同步事件触发器、文本搜索解析器、文本搜索模板时,不仅要求目标库版本为RDS for PostgreSQL 11.11及以上,还要求目标库连接用户为root用户或root用户的成员。
- 源数据库的权限设置:
需要确保源数据库PostgreSQL的账号具备表1的权限,若权限不足,需要在源数据库端开通高权限的账号。
- 目标数据库的权限设置:
云数据库RDS for PostgreSQL使用初始账号即可。
- 网络准备:
- 源数据库的网络设置:
本地PostgreSQL数据库实时同步至本云云数据库PostgreSQL的场景,一般可以使用VPN、专线网络和公网网络两种方式进行同步,您可以根据实际情况为本地PostgreSQL数据库开放公网访问或建立VPN访问。一般推荐使用公网网络进行同步,该方式下的数据同步过程较为方便和经济。
- 目标数据库的网络设置:
- 若通过VPN访问,请先开通华为VPN服务,确保源数据库PostgreSQL和目标端本云云数据库PostgreSQL的网络互通。
- 若通过公网网络访问,目标端不需要进行任何设置。
- 源数据库的网络设置:
- 安全规则准备:
- 源数据库的安全规则设置:
- 若通过公网网络进行同步,源数据库PostgreSQL需要将DRS同步实例的弹性公网IP添加到其网络白名单内,使源数据库与本云的网络互通。在设置网络白名单之前,需要获取DRS同行实例的弹性公网IP,具体方法如下:
- 若通过VPN网络进行同步,源库需要将DRS的私有IP添加到其网络白名单内,使源端与目标端的网络互通。
以上白名单是为了进行同步针对性设置的,同步结束后可以删除。
- 目标数据库安全规则设置:
目标数据库默认与DRS同步实例处在同一个VPC,网络是互通的,DRS可以直接写入数据到目标数据库,不需要进行任何设置。
- 源数据库的安全规则设置:
- 其他事项准备:
DRS仅支持同步PostgreSQL部分类型的DDL语句,具体支持范围请参考相关指导。请合理规划源数据库业务,不要在同步期间产生支持范围外的DDL操作。
同步步骤
- 创建同步任务。
- 登录管理控制台,在服务列表中选择“数据库 > 数据复制服务”,进入数据复制服务信息页面。
- 在“实时同步管理”页面,单击右上角“创建同步任务”,进入同步任务信息页面。
- 在“同步实例”页面,填选任务名称、描述和同步实例信息。
图5 同步实例信息
表2 任务和描述 参数
描述
区域
当前所在区域,可进行切换。为了降低访问时延、提高访问速度,请就近选择靠近您业务的区域。
项目
当前区域对应的项目,可进行切换。
任务名称
任务名称在4-50位之间,必须以字母开头,不区分大小写,可以包含字母、数字、中划线或下划线,不能包含其他的特殊字符。
描述
描述不能超过256位,且不能包含! = < > & ' " \ 特殊字符。
- 在“源库及目标库”信息页面,同步实例创建成功后,填选源库信息和目标库信息,建议您单击“源库和目标库”处的“测试连接”,分别测试并确定与源库和目标库连通后,勾选协议,单击“下一步”。
图6 源库及目标库信息
表4 源库信息 参数
描述
IP地址或域名
配置源数据库PostgreSQL实例的访问地址或域名。
端口
配置源数据库PostgreSQL实例的服务端口,可输入范围为1~65535间的整数。
数据库用户名
访问源数据库PostgreSQL的用户名。
数据库密码
访问源数据库PostgreSQL的用户名所对应的密码。
SSL安全连接
在选择公网网络进行同步任务时,为了提升数据在网络传输过程中的安全性,建议您开启SSL安全连接,对同步链路进行加密,如果开启,需要您上传CA证书。
表5 目标库信息 参数
描述
数据库实例名称
默认为创建同步任务时选择的已创建的RDS for PostgreSQL实例,不可进行修改。
数据库用户名
访问目标端RDS for PostgreSQL实例的用户名。
数据库密码
访问目标端RDS for PostgreSQL实例的用户名所对应的密码。
- 在“同步设置”页面,选择同步对象和同步用户。
图7 同步模式
表6 同步对象 参数
描述
流速模式
流速模式支持限速和不限速,默认为不限速。
增量阶段冲突策略
数据复制服务提供的实时同步功能使用了主键或唯一键冲突策略,这些策略可以由您自主选择,尽可能保证源数据库中有主键约束或唯一键约束的表同步到目标数据库是符合预期的。
冲突策略目前支持如下三种形式:
- 忽略
- 报错
- 覆盖
当数据发生冲突时,针对如下情况,建议选择“忽略”或者“覆盖”,否则建议选择“报错”:
- 目标数据库存在数据
- 多对一同步场景
- 目标数据库手动更新数据
对象同步范围
对象同步范围支持选择普通索引、增量DDL同步和全量阶段填充物化视图,您可以根据业务需求选择是否进行同步。
全量阶段填充物化视图:仅对源库已经填充的物化视图生效,该填充操作会影响全量同步性能,建议在全量同步完成后,手动在目标库填充。
同步对象
同步对象选择的粒度可以为库级或表级,您可以根据业务需求,选择同步整个数据库或者只同步部分表,单个任务只能选择实例中的一个数据库中的对象进行同步,支持库名映射。
- 库级同步:将源数据库中的所有对象全部同步至目标数据库。
- 表级同步:将自定义选择的表对象同步至目标数据库。
说明:
若选择表级同步时,由于选择的表可能与数据库的其他对象存在依赖关系,若所依赖的对象没有被同时选择且未存在于目标库中,则会导致任务失败。建议您在同步之前进行确认,或选择库级同步。
同步用户
数据库的同步过程中,同步用户需要进行单独处理。
同步用户一般分为两类:可同步的用户和不支持同步的用户。对于不支持同步的用户,在备注列的查看详情中会提示具体的原因,您可以根据业务需求选择是否同步用户和权限。
- 在“预检查”页面,进行同步任务预校验,校验是否可进行实时同步。
- 查看检查结果,如有不通过的检查项,需要修复不通过项后,单击“重新校验”按钮重新进行任务预校验。
预检查不通过项处理建议请参见《数据复制服务用户指南》中的“预检查不通过项修复方法”。
- 预检查完成后,且所有检查项结果均通过时,单击“下一步”。
图8 预检查
说明:
所有检查项结果均通过时,若存在请确认项,需要阅读并确认详情后才可以继续执行下一步操作。
- 查看检查结果,如有不通过的检查项,需要修复不通过项后,单击“重新校验”按钮重新进行任务预校验。
- 在“任务确认”页面,选择同步任务的启动时间,勾选协议,单击“启动任务”,提交同步任务。
说明:
- 同步任务的启动时间可以根据业务需求,设置为“立即启动”或“稍后启动”。
- 预计同步任务启动后,会对源数据库和目标数据库的性能产生影响,建议选择业务低峰期,合理设置同步任务的启动时间。
- 同步任务提交后,开始启动同步任务,您可以返回“实时同步管理”页面,查看同步任务状态。
- 任务管理。
同步任务启动后,会经历全量同步和增量同步两个阶段,对于不同阶段的同步任务,您可以进行任务管理。
- 全量同步
查看同步进度:全量同步中的任务,您可单击任务名称,在“同步进度”页签下,查看全量同步进度,您可以查看结构、数据、索引同步的进度,也查看具体同步对象的同步进度。当全量同步进度显示为100%,表示全量同步已经完成。
- 增量同步
- 查看时延监控:全量同步完成后,开始进行增量同步。对于增量同步中的任务,您可单击任务名称,在“同步进度”页签下,查看增量同步同步时延,当时延为0s时,说明源数据库和目标数据库的数据是实时同步的。您也可以使用“同步对比”页签进行一致性对比。
图9 查看时延监控
- 查看同步对比:为了尽可能减少业务的影响和业务中断时间,增量同步中的任务,您可单击任务名称,在“同步对比”页签下创建对比任务。
具体的同步对比操作及注意事项请参考《数据复制服务用户指南》中“对比同步项”章节。
- 查看时延监控:全量同步完成后,开始进行增量同步。对于增量同步中的任务,您可单击任务名称,在“同步进度”页签下,查看增量同步同步时延,当时延为0s时,说明源数据库和目标数据库的数据是实时同步的。您也可以使用“同步对比”页签进行一致性对比。
- 全量同步
- 割接建议。
建议您选择一个业务低峰期,开始正式系统割接流程。割接前,请您确认至少在业务低峰期有过一次完整的数据对比。可以结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
- 先中断业务(如果业务负载非常轻,也可以尝试不中断业务)。
- 在源数据库端执行如下语句,并观察在1-5分钟内若无任何新会话执行SQL ,则可认为业务已经完全停止。
select * from pg_stat_activity;
说明:
上述语句查询到的进程列表中,包括DRS同步实例的连接,您需要确认除DRS同步实例的连接外无任何新会话执行SQL,即可认为业务已经完全停止。
- 通过DRS同步任务监控页面进行观察同步时延,保持实时同步时延为0,并稳定保持一段时间;同时,您可以使用数据级对比功能,进行割接前的最后一次数据级对比,耗时可参考之前的对比记录。
- 如果时间允许,则选择全部对比。
- 如果时间不允许,则推荐对比活跃表,关键业务表,第二步对比多次存在差异的表等。
- 确定系统割接时机,业务系统指向本云数据库,业务对外恢复使用,同步完成。
- 同步结束。
- 结束同步任务:业务系统和数据库切换至本云后,为了防止源数据库的操作继续同步到目标数据库,造成数据覆盖问题,此时您可选择结束同步任务,该操作仅删除了同步实例,同步任务仍显示在任务列表中,您可以进行查看或删除。结束同步任务后,DRS将不再计费。
- 删除同步任务:对于已结束的同步任务,您可选择删除任务。该操作将一并删除同步任务,删除同步任务后,该任务将不会出现在任务列表中。