数据库风险评估说明
目前支持风险评估的数据库类型包括:MySQL、PostgreSQL、MongoDB和SQL Server。本节主要介绍数据库风险评估的检查项类别,以及评估过程中关键检查项信息的详细说明。
MySQL
下表详细说明了在对MySQL数据库进行风险评估时,各检查项的检查内容及其目的。
| 检查项 | 所需字段 | 检查项目的 |
|---|---|---|
| 源库版本 | 源库版本 | 查询源库版本,与DRS支持版本比较。 |
| 源库形态 | 源库是否为主备库 | 源库为备库时无法进行增量迁移。 |
| Binlog保留时长 | Binlog保留时长 | Binlog保留时间较短,可能会导致迁移失败,建议不低于3天。 |
| Binlog格式 | Binlog格式 | 增量迁移时,源库的Binlog必须打开,且Binlog格式必须为ROW。 |
| 源库最大允许传输包的大小 | 源库最大允许传输包的大小 | DRS在迁移数据量大或迁移大字段情况下,源库最大允许传输包的大小小于16777216Byte可能会导致任务失败。 |
| 无主键表 | 未设置主键的业务表 | 若源库中存在无主键表,由于该类表缺乏行的唯一性标识,无法进行内容对比;此外,在网络不稳定的情况下,迁移过程中可能出现目标库与源库数据不一致的问题。建议先将无主键表修改为主键表,再进行数据迁移。 |
| 数据类型 | 数据类型 | 检查源库中是否存在DRS数据对比不支持的数据类型,如TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT。 |
| 主键数据类型 | 主键数据类型 | 检查源库中是否存在DRS数据对比不支持的主键数据类型,如TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、FLOAT、TIMESTAMP、DATE、DATETIME、BINARY、VARBINARY。 |
| 大数据表 | 表大小 | 检查表数据量是否超出100GB或数据行数是否超过1000万行。 |
| Lob类型表 | 包含大文本(longtext/mediumtext)或大二进制(longblob/mediumblob)类型字段的表 | Lob类型迁移可能发生OOM。 |
PostgreSQL
下表详细说明了在对PostgreSQL数据库进行风险评估时,各检查项的检查内容及其目的。
| 检查项 | 所需字段 | 检查项目的 |
|---|---|---|
| 源库版本 | 源库版本 | 查询源库版本,与DRS支持版本比较。 |
| 源库形态 | 源库是否为主备库 | 源库为备库时无法进行增量迁移。 |
| 可创建的最大复制槽数量 | 可创建的最大复制槽数量 | 源库可创建的最大复制槽数量必须大于当前已使用的复制槽数量,否则可能导致同步失败。 |
| 可同时运行WAL发送进程的最大数 | 可同时运行WAL发送进程的最大数 | 源库可同时运行WAL发送进程的最大数必须大于当前已使用的发送进程数量,否则可能导致同步失败。 |
| wal_level设置 | WAL日志级别 | 源库的WAL日志级别必须设置为logical。若未设置为logical,将无法对源库的增量日志进行逻辑解码,进而无法实现增量同步。 |
| 无主键表 | 未设置主键的业务表 | 若源库中存在无主键表,由于该类表缺乏行的唯一性标识,无法进行内容对比;此外,在网络不稳定的情况下,迁移过程中可能出现目标库与源库数据不一致的问题。建议先将无主键表修改为主键表,再进行数据迁移。 |
| 无日志表 | 无日志表 | DRS不支持同步无日志表的DML。 |
| 主键数据类型 | 主键数据类型 | 检查源库中是否存在DRS数据对比不支持的主键数据类型,如REAL、DOUBLE PRECISION、MONEY、TEXT、BYTEA、TIMESTAMP WITHOUT TIME ZONE、TIMESTAMP WITH TIME ZONE、DATE、TIME WITHOUT TIME ZONE、TIME WITH TIME ZONE、INTERVAL、BOOLEAN、ENUMERATED TYPES、POINT、LINE、LSEG、BOX、PATH、POLYGON、CIRCLE、CIDR、INET、MACADDR、MACADDR8、BIT、BIT VARYING、TSVECTOR、TSQUERY、XML、JSON、ARRAY、COMPOSITE TYPES、INT4RANGE、INT8RANGE、NUMRANGE、TSRANGE、TSTZRANGE、DATERANGE等。 |
| 大数据表 | 表大小 | 检查表数据量是否超出100GB或数据行数是否超过1000万行。 |
| Lob类型表 | 包含大文本(longtext/mediumtext)或大二进制(longblob/mediumblob)类型字段的表 | Lob类型迁移可能发生OOM。 |
SQLServer
下表详细说明了在对SQLServer数据库进行风险评估时,各检查项的检查内容及其目的。
| 检查项 | 所需字段 | 检查项目的 |
|---|---|---|
| 源库版本 | 源库版本 | 查询源库版本,与DRS支持版本比较。 |
| CDC开启 | 源库是否启动CDC | 以SQLServer为源的增量同步基于SQLServer提供的CDC功能实现。若SQLServer源库的CDC功能发生异常(例如被关闭、事务日志已满等情况),增量同步将受到影响。 |
| CDC数据保留时间检查 | 源数据库CDC数据保留时间 | 源数据库CDC数据保留时间不足1天,会导致增量同步异常。请修改为1440分钟(1 天)或以上,建议4320分钟(3天)。 |
| 无主键表 | 未设置主键的业务表 | 若源库中存在无主键表,由于该类表缺乏行的唯一性标识,无法进行内容对比;此外,在网络不稳定的情况下,迁移过程中可能出现目标库与源库数据不一致的问题。建议先将无主键表修改为主键表,再进行数据迁移。 |
| 数据类型 | 数据类型 | 检查源库中是否存在DRS数据对比不支持的数据类型,如TEXT、NTEXT、IMAGE、BINARY、VARBINARY、HIERARCHYID、XML、TIMESTAMP。 |
| 主键数据类型 | 主键数据类型 | 检查源库中是否存在DRS数据对比不支持的主键数据类型,如FLOAT、REAL、DATE、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、TEXT、NTEXT、IMAGE、BINARY、VARBINARY、HIERARCHYID、XML、BIT。 |
| 大数据表 | 表大小 | 检查表数据量是否超出100GB或数据行数是否超过1000万行。 |
| Lob类型表 | 包含大文本(longtext/mediumtext)或大二进制(longblob/mediumblob)类型字段的表 | Lob类型迁移可能发生OOM。 |
MongoDB
下表详细说明了在对MongoDB数据库进行风险评估时,各检查项的检查内容及其目的。
| 检查项 | 所需字段 | 检查项目的 |
|---|---|---|
| 源库版本 | 源库版本 | 查询源库版本,与DRS支持版本比较。 |
| 集合负载均衡器Balancer(只针对分片集群) | 集合负载均衡器Balancer是否开启 | 如果迁移任务为源数据集群的增量迁移,则必须关闭源数据集群的Balancer。 |
| Oplog日志开启(只针对副本集) | Oplog日志是否开启 | 增量迁移时,源数据库的Oplog日志必须打开。 |
| 集合索引个数检查 | 集合索引个数 | MongoDB迁移过程中,索引数量会影响整体迁移时间。DRS会检查源数据库中是否存在索引数量超过10的集合,若存在则会影响迁移速度,请确认是否需要迁移所有索引。 |
| 集合id索引检查 | 无id索引的集合列表 | 源库若存在没有索引(_id)的集合,可能导致迁移失败。 |
| 集合TTL索引检查 | 包含TTL索引的集合 | TTL索引可能因源数据库与目标数据库的时区、时钟不一致,导致迁移后数据不一致。 |
| 集合名称检查 | 名称包含非法字符的集合 | 遍历源库中的集合,检查其名称是否符合规范,源数据库中的集合名或视图名不能包含'、<、>。 |