周边检查

最近更新时间:2024-01-17 17:22:31

我的收藏

检查详情

1. 建议源数据库环境变量参数 innodb_stats_on_metadata 设置为 OFF
2. 目标库为 MySQL/MariaDB/Percona/TDSQL-C MySQL/TDSQL TDStore 时,建议目标库 explicit_defaults_for_timestamp 设置为ON。如果目标库为 OFF,DTS 会尝试修改目标端上该参数设置为ON,仅在会话级别。
目标端为 MySQL 8.0版本,DTS 可以成功修改目标端上会话级别的参数为 ON
目标端为 MySQL 8.0以下的版本,或者其他数据库类型,DTS 无法修改成功,则初次校验任务不通过。用户可评估影响后跳过该参数检查,然后重新校验。
3. 目标端为腾讯云 MySQL 且为 RocksDB 引擎时,需要检查 rocksdb_skip_unique_check_tables 参数,推荐设置为 NULL,否则校验任务会失败。
如果设置为 .* ,表示所有表在插入或更新数据时将跳过唯一键检查;使用 DTS 进行传输任务,需要设置为 NULL,表示所有表在插入或更新数据时不会跳过唯一键检查。
当校验任务失败时,请 提交工单 申请,由腾讯云运维人员协助修改。

是否可跳过

出现校验不通过时,用户可评估影响后自行决定是否修改参数,如确认不需要修改,可跳过参数检查。
innodb_stats_on_metadata :可跳过校验。
explicit_defaults_for_timestamp:可跳过校验。

修复方法

修改 innodb_stats_on_metadata 参数

innodb_stats_on_metadata 参数开启时,每当查询 information_schema 元数据库里的表,Innodb 就会更新 information_schema.statistics 表,导致访问时间变长。关闭后可加快对于 schema 库表的访问。
MySQL 5.6.6 之前版本 innodb_stats_on_metadata 参数预设值为 ON,需要修改为 OFF。MySQL 5.6.6 及其以后的版本预设值为 OFF,不存在问题。
1. 登录源数据库。
2. 修改 innodb_stats_on_metadataOFF
set global innodb_stats_on_metadata = OFF;
3. 查看配置是否生效。
show global variables like '%innodb_stats_on_metadata%';
系统显示结果类似如下:
mysql> show global variables like '%innodb_stats_on_metadata%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_stats_on_metadata | OFF |
+--------------------------+-------+
1 row in set (0.00 sec)
4. 重新执行校验任务。

修改 explicit_defaults_for_timestamp 参数

参数说明
explicit_defaults_for_timestamp 用于控制 MySQL 如何处理 TIMESTAMP 列的默认值。取值说明如下:
OFF:MySQL 会将 TIMESTAMP 列的默认值设置为 CURRENT_TIMESTAMP。插入数据时,如果没有指定 TIMESTAMP 列的值,则该值会被设置为 CURRENT_TIMESTAMP。
ON:MySQL 不会自动将 TIMESTAMP 列的默认值设置为 CURRENT_TIMESTAMP。
参数影响
该参数为 MySQL 5.6.6之后的版本特性,DTS 在迁移/同步过程中,为了保证数据的一致性,建议目标端设置为 ON;如果目标端为 OFF 并且未按照提示修改参数,则选择同步含有 TIMESTAMP 列的数据后,可能会导致源和目标的表结构不一致。
如果评估后要修改参数,请参考如下命令。
说明:
该参数修改需要重置数据库上的所有连接才能生效,建议不要在 session 级别设置该参数,否则可能无法查询到参数状态。
set global explicit_defaults_for_timestamp = ON