数据传输服务 警告项检查

如下参数需要按照要求配置,否则校验时系统会发出警告,警告不影响迁移任务的进行,但是会对业务造成一定的影响,请用户评估后自行决定是否修改。1. 建议目标库 max_allowed_packet 的取值大于源库。

相关产品
数据传输服务 产品页,含版本规格、价格与购买入口。

·业务影响:目标库的 max_allowed_packet 参数设置小于源库,会导致目标库数据无法写入,从而造成全量迁移失败。

·处理建议:修改目标库的 max_allowed_packet 参数,大于源库取值。

2. 建议目标库的 max_allowed_packet 设置大于1GB。

·业务影响:max_allowed_packet 设置太大,会使用更多内存导致丢包,无法捕捉异常大事务包 SQL;设置太小,可能会导致程序报错,备份失败,也会导致频繁的收发网络包,影响系统性能。

·处理建议:参考如下命令修改 max_allowed_packet 参数。

set global max_allowed_packet = 1024;

3. 建议源库和目标库的字符集保持一致。

·业务影响:源库和目标库的字符集不一致可能会导致乱码。

·处理建议:参考如下命令将源库和目标库字符集修改为一致。

set character_set_server = 'utf8';

4. 建议源库和目标库的 sql_mode 取值要保持一致,否则会出现同步结果异常。

如果出现不一致,请参考如下方式修改为一致。

SET GLOBAL sql_mode = '新的SQL模式';

5. 建议使用2 CPU,4000 MB Mem 以上规格的实例。

6. 如果仅执行全量数据迁移,请勿在迁移过程中向源实例中写入新的数据,否则会导致源和目标数据不一致。针对有数据写入的场景,为实时保持数据一致性,建议选择全量 + 增量数据迁移。

7. 有锁导出时:源实例需要使用 Flush Table With Read Lock 短暂加锁,其中的 MyISAM 表会锁定到全量数据导出完成。当前等待加锁超时时间设置为60秒, 该时间内无法获取锁将导致任务失败。

8. 无锁导出时:仅对没有主键的表会加读锁,其他不加锁。

9. 对于既没有主键、也没有非空唯一键的表,有数据重复的风险,建议用户对迁移的表设置主键,或者非空唯一键。

10. 对于 TDSQL MySQL 的数据迁移,当源数据库实例为分布式数据库时,需要提前在目标库建立分表,否则这些表被迁移后都将是单表。

11. 目标库为 MySQL/MariaDB/Percona/TDSQL-C MySQL/TDSQL Boundless 时,需要检查源库和目标库 explicit_defaults_for_timestamp 的设置。源库为 OFF,或者源和目标都为 ON 时,任务警告,提醒用户任务运行期间不要随便修改该参数。

12. 在全量导出库表结构时检查表的 COLUMN_DEFAULT,IS_NULLABLE 属性,如果源库表的 COLUMN_DEFAULT 为 NULL, IS_NULLABLE 为 NOT NULL,则该表结构不进行迁移/同步,避免数据同步到目标库后,MySQL 系统可能会自动为 TIMESTAMP 的数据类型添加默认参数“CURRENT_TIMESTAMP”。

13. MySQL 8.0版本开始支持线程池功能(Thread Pool),如果目标库开启了线程池功能(MySQL 的配置文件中,thread_handling 参数没有设置为 one-thread-per-connection 表示开启线程池功能),则需要目标库的 thread_pool_size 参数大于等于16,以提升并发写入性能,小于16该检查项会报警告,提醒用户可能导致的写入性能问题。

赞 (0)
上一篇 4天前
下一篇 4天前