网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

DRS预检查项一览表

更新时间:2025-01-26 GMT+08:00
分享

DRS迁移过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保迁移各个阶段的平顺,DRS在任务正式启动前,会对任务源数据库、目标数据库中的参数、对象等信息进行自动化的扫描和检测,帮助您提高数据迁移的成功率,常见的预检查项清单如下所示。

概览

根据迁移任务的源数据库类型,查看预检查信息:

MySQL->MySQL

表1 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT。

  • 全量+增量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

  • 用户迁移时,当源数据库为非阿里云数据库时,账户需要有mysql.user的SELECT权限,源数据库为阿里云数据库,则账户需要同时具有mysql.user和mysql.user_view的SELECT权限。

详见MySQL权限授权方法

目标数据库权限

  • 提供的目标数据库账号必须拥有如下权限:

    SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。

  • 用户迁移时,需要有mysql库的SELECT、INSERT、UPDATE、DELETE权限。

详见MySQL权限授权方法

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

迁移版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库建议开启skip-name-resolve,减少连接超时的可能性。

-

源数据库log_slave_updates参数需设置为开启状态,否则会导致迁移失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致迁移失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在迁移数据量大或迁移大字段情况下,源库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

DRS在迁移数据量大或迁移大字段情况下,目标库的max_allowed_packet参数值过小导致目标库数据无法写入造成全量迁移失败。

详见检查目标库的max_allowed_packet参数

sql_mode取值检查

迁移的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致迁移失败。

详见源数据库是否存在不允许使用的sql_mode值

增量迁移类

Binlog开启

增量迁移时,源数据库的Binlog日志必须打开,且Binlog日志格式必须为Row格式。

详见源数据库binlog日志是否开启

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致迁移失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量迁移时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

session变量设置

增量迁移时,如果设置session变量character_set_client为binary,可能导致乱码。

-

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例实例状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

事务隔离级别

目标库和源库事务隔离级别需要一致。

详见事务隔离级别一致性校验

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致

详见数据库参数group_concat_max_len一致性检查

server_uuid参数

目标库和源库server_uuid参数不能相同。

详见SERVER_UUID的一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

迁移对象类

选择对象检查

  • 支持数据库、表、用户、视图、索引、约束、函数、存储过程、触发器(trigger)和事件(event)的迁移。
  • 仅支持MyISAM和InnoDB表的迁移。
  • 不支持系统库的迁移以及事件状态的迁移。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。

详见迁移对象未选择外键依赖的表

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库。

详见目标数据库是否存在和源数据库同名的数据库

表名规范检查

  • 源数据库中的库名、表名、视图名不能包含:'<>`/\"以及非ASCII字符。
  • 源数据库中的库名不允许以ib_logfile开头,不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。

-

加密表检查

当源库存在加密的表,需要确认目标库是否支持。如果目标库不支持,存在任务失败等风险。

详见源库加密表检查

MySQL->DDM

表2 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT。

  • 全量+增量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

  • 目标中间件账户需要具备以下基本权限:CREATE、DROP、ALTER、 INDEX、 INSERT、DELETE、 UPDATE、 SELECT, 同时必须具备扩展权限:全表SELECT权限。
  • 目标中间件账户必须具备对所迁移数据库的权限。

详见DDM权限授权方法

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

DDM实例版本。

详见支持的数据库

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库建议开启skip-name-resolve,减少连接超时的可能性。

-

源数据库log_slave_updates参数需设置为开启状态,否则会导致迁移失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致迁移失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在迁移数据量大或迁移大字段情况下,源库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

DRS在迁移数据量大或迁移大字段情况下,目标库的max_allowed_packet参数值过小导致目标库数据无法写入造成全量迁移失败。

详见检查目标库的max_allowed_packet参数

sql_mode取值检查

迁移的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致迁移失败。

详见源数据库是否存在不允许使用的sql_mode值

增量迁移类

Binlog开启

增量迁移时,源数据库的Binlog日志必须打开,且Binlog日志格式必须为Row格式。

详见源数据库binlog日志是否开启

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致迁移失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量迁移时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

session变量设置

增量迁移时,如果设置session变量character_set_client为binary,可能导致乱码。

-

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例实例状态必须正常。

-

参数auto_increment校验

目标数据库存在表的auto_increment值至少不能小于源库表的auto_increment值。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

事务隔离级别

目标库和源库事务隔离级别需要一致。

详见事务隔离级别一致性校验

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致

详见数据库参数group_concat_max_len一致性检查

server_uuid参数

目标库和源库server_uuid参数不能相同。

详见SERVER_UUID的一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

表结构

  • 用户需要在目标库根据源端逻辑库的表结构,自行在目标库创建对应的表结构及索引。未在目标库创建的对象,视为用户不选择这个对象进行迁移。
  • 用户在目标库创建的表结构, 必须与源库的表结构完全一致。

-

迁移对象类

选择对象检查

  • 目前只支持迁移源库的数据,不支持迁移源库表结构及其他数据库对象。
  • 仅支持MyISAM和InnoDB表的迁移。
  • 不支持系统库的迁移以及事件状态的迁移。
  • 源数据库为MySQL 8.0版本时,不支持迁移带有函数索引的表。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。

详见迁移对象未选择外键依赖的表

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

表名规范检查

  • 源数据库中的库名、表名不能包含:'<>`/\"以及非ASCII字符。
  • 源数据库中的库名不允许以ib_logfile开头,不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。

-

加密表检查

当源库存在加密的表,需要确认目标库是否支持。如果目标库不支持,存在任务失败等风险。

详见源库加密表检查

MySQL->TaurusDB

表3 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT。

  • 全量+增量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

  • 用户迁移时,当源数据库为非阿里云数据库时,账户需要有mysql.user的SELECT权限,源数据库为阿里云数据库,则账户需要同时具有mysql.user和mysql.user_view的SELECT权限。

详见MySQL权限授权方法

目标数据库权限

  • 提供的目标数据库账号必须拥有如下权限:

    SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。

  • 用户迁移时,需要有mysql库的SELECT、INSERT、UPDATE、DELETE权限。

详见MySQL权限授权方法

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持TaurusDB 8.0版本

详见支持的数据库

迁移版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库建议开启skip-name-resolve,减少连接超时的可能性。

-

源数据库log_slave_updates参数需设置为开启状态,否则会导致迁移失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致迁移失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在迁移数据量大或迁移大字段情况下,源库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

DRS在迁移数据量大或迁移大字段情况下,目标库的max_allowed_packet参数值过小导致目标库数据无法写入造成全量迁移失败。

详见检查目标库的max_allowed_packet参数

sql_mode取值检查

迁移的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致迁移失败。

详见源数据库是否存在不允许使用的sql_mode值

增量迁移类

Binlog开启

增量迁移时,源数据库的Binlog日志必须打开,且Binlog日志格式必须为Row格式。

详见源数据库binlog日志是否开启

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致迁移失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量迁移时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

session变量设置

增量迁移时,如果设置session变量character_set_client为binary,可能导致乱码。

-

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例实例状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

事务隔离级别

目标库和源库事务隔离级别需要一致。

详见事务隔离级别一致性校验

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致

详见数据库参数group_concat_max_len一致性检查

server_uuid参数

目标库和源库server_uuid参数不能相同。

详见SERVER_UUID的一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

迁移对象类

选择对象检查

  • 支持数据库、表、用户、视图、索引、约束、函数、存储过程、触发器(trigger)和事件(event)的迁移。
  • 仅支持MyISAM和InnoDB表的迁移。
  • 不支持系统库的迁移以及事件状态的迁移。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。

详见迁移对象未选择外键依赖的表

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库。

详见目标数据库是否存在和源数据库同名的数据库

表名规范检查

  • 源数据库中的库名、表名、视图名不能包含:'<>`/\"以及非ASCII字符。
  • 源数据库中的库名不允许以ib_logfile开头,不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。

-

加密表检查

当源库存在加密的表,需要确认目标库是否支持。如果目标库不支持,存在任务失败等风险。

详见源库加密表检查

MySQL分库分表->DDM

表4 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT。

  • 全量+增量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

  • 目标中间件账户需要具备以下基本权限:CREATE、DROP、ALTER、 INDEX、 INSERT、DELETE、 UPDATE、 SELECT, 同时必须具备扩展权限:全表SELECT权限。
  • 目标中间件账户必须具备对所迁移数据库的权限。

详见DDM权限授权方法

版本类

源数据库版本

DDM实例版本。

详见支持的数据库

目标数据库版本

DDM实例版本。

详见支持的数据库

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库建议开启skip-name-resolve,减少连接超时的可能性。

-

源数据库log_slave_updates参数需设置为开启状态,否则会导致迁移失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致迁移失败。

详见binlog_row_image参数是否为full

增量迁移类

Binlog开启

增量迁移时,源数据库的Binlog日志必须打开,且Binlog日志格式必须为Row格式。

详见源数据库binlog日志是否开启

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致迁移失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量迁移时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例实例状态必须正常。

-

参数auto_increment校验

目标数据库存在表的auto_increment值至少不能小于源库表的auto_increment值。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

表结构

  • 用户需要在目标库根据源端逻辑库的表结构,自行在目标库创建对应的表结构及索引。未在目标库创建的对象,视为用户不选择这个对象进行迁移。
  • 用户在目标库创建的表结构, 必须与源库的表结构完全一致。

-

迁移对象类

选择对象检查

  • 目前只支持迁移源库的数据,不支持迁移源库表结构及其他数据库对象。
  • 仅支持MyISAM和InnoDB表的迁移。
  • 不支持系统库的迁移以及事件状态的迁移。
  • 源数据库为MySQL 8.0版本时,不支持迁移带有函数索引的表。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。

详见迁移对象未选择外键依赖的表

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

目标库对象检查

目标库若已存在数据,DRS在增量迁移过程中源库相同主键的数据将覆盖目标库已存在的数据,因此在迁移前需要用户自行判断数据是否需要清除,建议用户在迁移前自行清空目标库。

-

表名规范检查

  • 源数据库中的库名、表名不能包含:'<>`/\"以及非ASCII字符。
  • 源数据库中的库名不允许以ib_logfile开头,不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。

-

MongoDB->DDS

表5 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量迁移需要具备如下最小权限:
    • 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。
    • 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限。
    • 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限,有config库的read权限。
    • 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。
  • 全量+增量迁移需要具备如下最小权限:
    • 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。
    • 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。
    • 集群:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限,连接源数据库分片节点的用户需要有admin库的readAnyDatabase权限,有local库的read权限。
    • 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。

详见MongonDB授权方法

目标数据库权限

连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。

对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。

详见DDS授权方法

版本类

源数据库版本

支持3.2、3.4、3.6、4.0、4.2、4.4版本

详见支持的数据库

目标数据库版本

支持3.4、4.0、4.2、4.4版本

详见支持的数据库

迁移版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

增量迁移类

Oplog开启

增量迁移时,源数据库的Oplog日志必须打开。

-

Oplog保留时长

在磁盘空间允许的情况下,建议源数据库Oplog保存时间越长越好,建议为3天。

-

Balancer关闭

如果迁移任务是源数据集群的增量,则源数据必须关闭Balancer。

详见如何关闭集合均衡器Balancer

孤儿文档检查

如果是源数据为集群的全量+增量迁移任务,则源数据库必须关闭Balancer并清理孤儿文档。

详见分片集群MongoDB迁移前清除孤儿文档

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

集群到集群的全量迁移,如果源数据库的集群没有开启分片,则需要保证目标数据库主shard节点的磁盘空间大于源数据库数据大小。

状态检查

目标数据库实例实例状态必须正常。

-

chunk数目检查

检查目标数据库的最大chunk数目是否足以支撑源库数据的分片分裂,当chunk个数达到目标库的最大支撑数目时,chunk不再分裂,会影响写入性能。

详见目标库最大支持chunk数目检查

一致性检查

固定集合检查

检查源库和目标库数据库固定集合是否一致,若不一致,则导致迁移失败。

详见源库和目标库数据库固定集合一致性检查

迁移对象类

关联对象检查

相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。

-

角色依赖检查

在进行用户迁移时,若所选迁移的用户与某些角色存在依赖关系,需要同时选择迁移该用户及所依赖的角色,否则会导致迁移失败。

详见源数据库角色依赖检查

账号依赖检查

在进行用户迁移时,若所选迁移的用户与某些角色存在依赖关系,需要同时选择迁移该用户及所依赖的角色,否则会导致迁移失败。

详见源数据库账号依赖检查

同名检查

目标数据库不能存在与源数据库同名的数据库下的同名非空集合。

详见目标数据库是否存在与源数据库同名的数据库下的同名非空集合

目标数据库不能存在和源数据库同名数据库下的同名视图。

详见目标数据库是否存在和源数据库同名数据库下的同名视图

名称检查

源数据库的库名不能包含/\."$和空格,集合名和视图名中不能包含$字符或以system.开头。

-

复合哈希索引检查

  • 源库为4.4版本集群时,不支持复合哈希索引,不支持复合哈希分片键。
  • 源库为4.4版本副本集时,不支持复合哈希索引。

详见源库集合复合哈希索引检查

复合哈希分片键检查

详见源库集合复合哈希分片键检查

索引检查

源库若存在没有索引(_id)的集合,可能导致迁移失败。

详见源数据库索引(_id)检查

TTL索引检查

TTL索引会因为源数据库和目标库数据的时区,时钟不一致导致迁移后数据不一致。

详见源数据库集合TTL索引检查

索引个数检查

索引的个数会影响整个迁移的时间,检查源数据库是否存在索引个数大于10的集合,若存在会影响迁移速度。

详见源数据库集合索引个数检查

MongoDB->GeminiDB Mongo

表6 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量迁移需要具备如下最小权限:
    • 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。
    • 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限。
    • 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限,有config库的read权限。
    • 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。
  • 全量+增量迁移需要具备如下最小权限:
    • 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。
    • 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。
    • 集群:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限,连接源数据库分片节点的用户需要有admin库的readAnyDatabase权限,有local库的read权限。
    • 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。

详见MongonDB授权方法

目标数据库权限

连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。

对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。

详见MongonDB授权方法

版本类

源数据库版本

支持3.2、3.4、4.0、4.2版本

详见支持的数据库

目标数据库版本

支持3.4、4.0版本

详见支持的数据库

迁移版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

增量迁移类

Oplog开启

增量迁移时,源数据库的Oplog日志必须打开。

-

Oplog保留时长

在磁盘空间允许的情况下,建议源数据库Oplog保存时间越长越好,建议为3天。

-

Balancer关闭

如果迁移任务是源数据集群的增量,则源数据必须关闭Balancer。

详见如何关闭集合均衡器Balancer

孤儿文档检查

如果是源数据为集群的全量+增量迁移任务,则源数据库必须关闭Balancer并清理孤儿文档。

详见分片集群MongoDB迁移前清除孤儿文档

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

集群到集群的全量迁移,如果源数据库的集群没有开启分片,则需要保证目标数据库主shard节点的磁盘空间大于源数据库数据大小。

状态检查

目标数据库实例实例状态必须正常。

-

chunk数目检查

检查目标数据库的最大chunk数目是否足以支撑源库数据的分片分裂,当chunk个数达到目标库的最大支撑数目时,chunk不再分裂,会影响写入性能。

详见目标库最大支持chunk数目检查

一致性检查

固定集合检查

检查源库和目标库数据库固定集合是否一致,若不一致,则导致迁移失败。

详见源库和目标库数据库固定集合一致性检查

迁移对象类

关联对象检查

相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。

-

角色依赖检查

在进行用户迁移时,若所选迁移的用户与某些角色存在依赖关系,需要同时选择迁移该用户及所依赖的角色,否则会导致迁移失败。

详见源数据库角色依赖检查

账号依赖检查

在进行用户迁移时,若所选迁移的用户与某些角色存在依赖关系,需要同时选择迁移该用户及所依赖的角色,否则会导致迁移失败。

详见源数据库账号依赖检查

同名检查

目标数据库不能存在与源数据库同名的数据库下的同名非空集合。

详见目标数据库是否存在与源数据库同名的数据库下的同名非空集合

目标数据库不能存在和源数据库同名数据库下的同名视图。

详见目标数据库是否存在和源数据库同名数据库下的同名视图

名称检查

源数据库的库名不能包含/\."$和空格,集合名和视图名中不能包含$字符或以system.开头。

-

索引检查

源库若存在没有索引(_id)的集合,可能导致迁移失败。

详见源数据库索引(_id)检查

TTL索引检查

TTL索引会因为源数据库和目标库数据的时区,时钟不一致导致迁移后数据不一致。

详见源数据库集合TTL索引检查

索引个数检查

索引的个数会影响整个迁移的时间,检查源数据库是否存在索引个数大于10的集合,若存在会影响迁移速度。

详见源数据库集合索引个数检查

DDS->MongoDB

表7 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量迁移需要具备如下最小权限:
    • 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。
    • 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限。
    • 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限,有config库的read权限。
  • 全量+增量迁移需要具备如下最小权限:
    • 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。
    • 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。
    • 集群:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限,连接源数据库分片节点的用户需要有admin库的readAnyDatabase权限,有local库的read权限。

详见DDS授权方法

目标数据库权限

连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。

对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。

详见MongonDB授权方法

版本类

源数据库版本

支持3.2、3.4、3.6、4.0、4.2、4.4版本

详见支持的数据库

目标数据库版本

支持3.2、3.6、3.4、4.0、4.2、4.4版本

详见支持的数据库

迁移版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

增量迁移类

Oplog开启

增量迁移时,源数据库的Oplog日志必须打开。

-

Oplog保留时长

在磁盘空间允许的情况下,建议源数据库Oplog保存时间越长越好,建议为3天。

-

Balancer关闭

如果迁移任务是源数据集群的增量,则源数据必须关闭Balancer。

详见如何关闭集合均衡器Balancer

孤儿文档检查

如果是源数据为集群的全量+增量迁移任务,则源数据库必须关闭Balancer并清理孤儿文档。

详见分片集群MongoDB迁移前清除孤儿文档

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例实例状态必须正常。

-

chunk数目检查

检查目标数据库的最大chunk数目是否足以支撑源库数据的分片分裂,当chunk个数达到目标库的最大支撑数目时,chunk不再分裂,会影响写入性能。

详见目标库最大支持chunk数目检查

一致性检查

固定集合检查

检查源库和目标库数据库固定集合是否一致,若不一致,则导致迁移失败。

详见源库和目标库数据库固定集合一致性检查

迁移对象类

关联对象检查

相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。

-

同名检查

目标数据库不能存在与源数据库同名的数据库下的同名非空集合。

详见目标数据库是否存在与源数据库同名的数据库下的同名非空集合

目标数据库不能存在和源数据库同名数据库下的同名视图。

详见目标数据库是否存在和源数据库同名数据库下的同名视图

名称检查

源数据库的库名不能包含/\."$和空格,集合名和视图名中不能包含$字符或以system.开头。

-

索引个数检查

索引的个数会影响整个迁移的时间,检查源数据库是否存在索引个数大于10的集合,若存在会影响迁移速度。

详见源数据库集合索引个数检查

文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容