Bug 反馈
清晰准确地描述您发现的问题,提供任何可能复现问题的步骤有助于研发同学及时处理问题
【 TiDB 版本】
V6.5.0
【 Bug 的影响】
dm无法增量同步
【可能的问题复现步骤】
- 源mysql数据库配置为: binlog-do-db=db1,db_to_sync
- dm只同步db_to_sync这个库
- dm只能全量同步db_to_sync这个库, 无法增量, 且不报错
- 源mysql数据库配置为: binlog-do-db=db_to_sync
- 此时可以增量同步了
【看到的非预期行为】
无法增量同步, 且日志不报错
【期望看到的行为】
mysql.ini 配置为binlog-do-db=db1,db_to_sync, 在需要同步的库前面有其他不需要的库的时候, 也能增量同步
【相关组件及具体版本】
V6.5.0
【其他背景信息或者截图】
如集群拓扑,系统和内核版本,应用 app 信息等;如果问题跟 SQL 有关,请提供 SQL 语句和相关表的 Schema 信息;如果节点日志存在关键报错,请提供相关节点的日志内容或文件;如果一些业务敏感信息不便提供,请留下联系方式,我们与您私下沟通。
xfworld
(魔幻之翼)
3
mysql binlog 的配置还有账号权限,都够么?
vi source1.yaml
source-id: “mysql-207”
enable-gtid: false
from:
host: “10.0.0.207”
port: 3306
user: “root”
password: “xxx”
vi source2.yaml
source-id: “mysql-208”
enable-gtid: false
from:
host: “10.0.0.208”
port: 3306
user: “root”
password: “xxx”
vi task.yaml
# 2个分库的mysql表(库名表名一致) 合并到tidb
name: "mysql_merge_to_center"
task-mode: all
shard-mode: "pessimistic"
meta-schema: "dm_meta"
ignore-checking-items: ["auto_increment_ID"]
target-database:
host: 10.x.x.x
port: 4000
user: "root"
password: "xxxxx"
mysql-instances:
-
source-id: "mysql-207"
block-allow-list: "listA"
-
source-id: "mysql-208"
block-allow-list: "listA"
block-allow-list:
listA:
do-dbs: ["db_to_sync"]
do-tables:
- db-name: "db_to_sync"
tbl-name: "table1"
有猫万事足
6
https://docs.pingcap.com/zh/tidb/stable/dm-task-configuration-guide#配置需要数据源表到目标-tidb-表的映射
如果不需要将数据源表路由到不同名的目标 TiDB 表,可以跳过该项配置。分库分表合并迁移的场景必须配置该规则。
你是个分库分表合并迁移的场景,然而完全没有配置路由规则。
从行为上必然导致207,208这两个mysql实例里面的数据相互覆盖,你下游的表也要做改造的,否则大概率造成两个mysql实例上的主键冲突,导入的时候默认开了safe-mode,数据也会是相互覆盖的。
所以你当然会觉得一会好了一会不好,和你上游的 binlog-do-db一点关系没有。
同步上游的db_to_sync库里面的table1到下游同名的库,同名的表。
routes:
route-rule-1:
schema-pattern: "db_to_sync"
table-pattern: "table1"
target-schema: "db_to_sync"
target-table: "table1"
route-rule-2:
schema-pattern: "db_to_sync"
target-schema: "db_to_sync"
mysql-instances:
- source-id: "mysql-207"
block-allow-list: "listA"
route-rules: ["route-rule-1","route-rule-2"]
- source-id: "mysql-208"
block-allow-list: "listA"
route-rules: ["route-rule-1","route-rule-2"]
你这样配置完了以后,务必记得在你下游表的主键里面添加分片键。另外一定要注意下游表的写入热点问题。
不然配置对了,表的主键冲突相互覆盖结果也不会正确。有写入热点,导入也慢。tikv负载也不均衡。
并非一会好,一会不好, 是一直不行. 源表的主键已经做了处理, 确保不会冲突.
不做路由的原因是: 1. 源表的主键不会冲突(workid); 2. 所有的库名表名完全一致
1 个赞
有猫万事足
8
tiup dmctl list-member
tiup dmctl query-status mysql_merge_to_center
你在中控机上执行一下这2个命令,我看看结果,如果没有设置DM_MASTER_ADDR环境变量,可能还要加 --master-addr dm-master-ip:8261
redgame
(Ti D Ber Pa Amoi Ul)
9
检查DM的日志文件,查找是否有相关的错误或警告信息