
# 数据库风险评估说明
目前支持风险评估的数据库类型包括：**MySQL** 、**PostgreSQL** 、**MongoDB** 和**SQL Server**。本节主要介绍数据库风险评估的检查项类别，以及评估过程中关键检查项信息的详细说明。
#### MySQL
下表详细说明了在对MySQL数据库进行风险评估时，各检查项的检查内容及其目的。
图1MySQL数据库风险评估   
![](https://support.huaweicloud.com/mgc_faq/zh-cn_image_0000002592929414.png "点击放大")
表1MySQL风险评估检查项说明 
| **检查项**      | **所需字段**                                                   | **检查项目的**                                                                                                                                       |
|:---|:---|:---|
| 源库版本         | 源库版本                                                       | 查询源库版本，与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数据库进行风险评估时，各检查项的检查内容及其目的。
图2PostgreSQLL数据库风险评估   
![](https://support.huaweicloud.com/mgc_faq/zh-cn_image_0000002623208849.png "点击放大")
表2PostgreSQL风险评估检查项说明 
| **检查项**          | **所需字段**                                                   | **检查项目的**                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|
| 源库版本             | 源库版本                                                       | 查询源库版本，与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数据库进行风险评估时，各检查项的检查内容及其目的。
图3SQLServer数据库风险评估   
![](https://support.huaweicloud.com/mgc_faq/zh-cn_image_0000002592769784.png "点击放大")
表3SQLServer风险评估检查项说明 
| **检查项**     | **所需字段**                                                   | **检查项目的**                                                                                                                                           |
|:---|:---|:---|
| 源库版本        | 源库版本                                                       | 查询源库版本，与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数据库进行风险评估时，各检查项的检查内容及其目的。
图4MongoDB数据库风险评估   
![](https://support.huaweicloud.com/mgc_faq/zh-cn_image_0000002592937906.png "点击放大")
表4MongoDB风险评估检查项说明 
| **检查项**                  | **所需字段**            | **检查项目的**                                                                        |
|:---|:---|:---|
| 源库版本                     | 源库版本                | 查询源库版本，与DRS支持版本比较。                                                               |
| 集合负载均衡器Balancer（只针对分片集群） | 集合负载均衡器Balancer是否开启 | 如果迁移任务为源数据集群的增量迁移，则必须关闭源数据集群的Balancer。                                           |
| Oplog日志开启（只针对副本集）        | Oplog日志是否开启         | 增量迁移时，源数据库的Oplog日志必须打开。                                                          |
| 集合索引个数检查                 | 集合索引个数              | MongoDB迁移过程中，索引数量会影响整体迁移时间。DRS会检查源数据库中是否存在索引数量超过10的集合，若存在则会影响迁移速度，请确认是否需要迁移所有索引。 |
| 集合id索引检查                 | 无id索引的集合列表          | 源库若存在没有索引（_id）的集合，可能导致迁移失败。                                                      |
| 集合TTL索引检查                | 包含TTL索引的集合          | TTL索引可能因源数据库与目标数据库的时区、时钟不一致，导致迁移后数据不一致。                                          |
| 集合名称检查                   | 名称包含非法字符的集合         | 遍历源库中的集合，检查其名称是否符合规范，源数据库中的集合名或视图名不能包含'、\<、\>。                                   |
   
