- 如果您说的数据库信息和上游信息指的是库表结构,那么这些信息会被记录在 dm 本地以及下游 tidb 中(作为 checkpoint);这些信息会用来解析 binlog,协调同步 DDL 等
- 如果您说的 key 是 DM 中标识行的 key:DM 会根据库表结构信息解析当前 binlog 的主键或者唯一键,并用行的 主键或者唯一键列作为这一行的唯一标识符,再根据 binlog 再生成 DML,最后让 TiDB 执行(比如,上游执行 update xxx set a=NEW_VAL where b=10,DM 在拿到这些改动行的 binlog 之后,根据改动信息再生成出 DML:update xxx set a=NEW_VAL where id=xxx …);因此,这里的 key 就只是普通的 unique key 或者 primary key,不会包含额外的信息。
- 如果您说的 key value 指的是 TiDB 的存储层,即 TiKV,存储的 key value:DM 并不会越过 TiDB 直接调用 TiKV 的接口。至于 TiKV 对这些插入、改动行的编码方式,和直接将上游 SQL 放到 TiDB 中执行是一样的(没有什么上游数据库信息,只有 TiDB 相关的信息)。
请问您是有什么需求需要在数据迁移之后从下游数据库拿到上游的一些库表信息吗?