TiDB日常运维手册
阅读原文时间:2023年07月08日阅读:3

1.处理dm不兼容DDL

迁移中断,执行跳过操作

tiup dm list
tiup dm display xxx-dm-prod
tiup dmctl --master-addr 10.0.xx.xx:8261
» query-status task-xxx-01
» binlog skip task-xxx-01
» query-status task-xxx-01

迁移中断,执行替代操作

报错:"Message": "cannot track DDL: ALTER TABLE `db1`.`tbl1` ADD COLUMN `new_col` INT UNIQUE KEY"
替代:
» binlog replace test "ALTER TABLE `db1`.`tbl1` ADD COLUMN `new_col` INT;ALTER TABLE `db1`.`tbl1` ADD UNIQUE(`new_col`)";

参考:https://docs.pingcap.com/zh/tidb/stable/handle-failed-ddl-statements

修改任务配置

因为 DM 集群会持久化保存任务配置,所以修改任务配置需要通过 stop-task、start-task 将修改后的配置更新到 DM 集群中,如果直接修改任务配置文件,
但是不重启任务,配置变更不会生效,DM 集群重启时仍然会读取之前保存的任务配置。
只要task-name不变,则还是沿用之前的dm-meta的元数据,如:{task-name}_syncer_checkpoint

这里以修改timezone为例,其任务配置修改步骤如下:

1.修改任务配置文件,将 timezone 设置为 Asia/Shanghai

2.通过 stop-task 命令停止任务:stop-task

3.通过 start-task 命令启动任务:start-task

4.在 DM v2.0.1 及其以后版本中,可通过 get-config 命令检查配置是否生效:get-config task

参考:https://docs.pingcap.com/zh/tidb-data-migration/v5.3/task-configuration-file

重置数据迁移任务

当数据迁移过程中发生异常且无法恢复时,需要重置数据迁移任务,对数据重新进行迁移:

1.使用 stop-task 停止异常的数据迁移任务。

2.清理下游已迁移的数据。

3.从下面两种方式中选择其中一种重启数据迁移任务:
1)修改任务配置文件以指定新的任务名,然后使用 start-task {task-config-file} 重启迁移任务。
2)使用 start-task --remove-meta {task-config-file} 重启数据迁移任务。

参考:https://docs.pingcap.com/zh/tidb/stable/dm-faq

2.设置GC

系统变量进行 GC 配置:

  • tidb_gc_enable
  • tidb_gc_run_interval
  • tidb_gc_life_time
  • tidb_gc_concurrency
  • tidb_gc_scan_lock_mode
  • tidb_gc_max_wait_time

tidb_gc_enable:这个变量用于控制是否启用 TiKV 的垃圾回收 (GC) 机制。默认是on;
tidb_gc_life_time:这个变量用于指定每次进行垃圾回收 (GC) 时保留数据的时限。
tidb_gc_max_wait_time :这个变量用于指定活跃事务阻碍 GC safe point 推进的最大时间
tidb_gc_run_interval:这个变量用于指定垃圾回收 (GC) 运行的时间间隔
tidb_gc_concurrency:这个变量用于指定 GC 在Resolve Locks(清理锁)步骤中线程的数量。默认值 -1 表示由 TiDB 自主判断运行 GC 要使用的线程的数量

GC in compaction Filter 机制
可以由TiKV配置文件中的以下开关控制:
[gc] enable-compaction-filter = true

该 GC 机制可通过在线配置变更开启:
show config where type = 'tikv' and name like '%enable-compaction-filter%';
+------+-------------------+-----------------------------+-------+
| Type | Instance | Name | Value |
+------+-------------------+-----------------------------+-------+
| tikv | 172.16.5.37:20163 | gc.enable-compaction-filter | false |
| tikv | 172.16.5.36:20163 | gc.enable-compaction-filter | false |
| tikv | 172.16.5.35:20163 | gc.enable-compaction-filter | false |
+------+-------------------+-----------------------------+-------+
set config tikv gc.enable-compaction-filter = true;
show config where type = 'tikv' and name like '%enable-compaction-filter%';
+------+-------------------+-----------------------------+-------+
| Type | Instance | Name | Value |
+------+-------------------+-----------------------------+-------+
| tikv | 172.16.5.37:20163 | gc.enable-compaction-filter | true |
| tikv | 172.16.5.36:20163 | gc.enable-compaction-filter | true |
| tikv | 172.16.5.35:20163 | gc.enable-compaction-filter | true |
+------+-------------------+-----------------------------+-------+