【 TiDB 使用环境】TiUP 搭建的测试集群
【 TiDB 版本】v6.1.0
【遇到的问题:问题现象及影响】
之前使用的是 YugabyteDB,有提供一个 log-dump 工具,可以直接查看系统中每个表的 WAL 日志。
例如,我创建了这样一张表
CREATE TABLE txn1 (k INT PRIMARY KEY, v INT);
会打印出这样的内容,来指示表属性。
Header:
major_version: 1
minor_version: 0
unused_tablet_id: "a4d569a98bf3489eab7c822ddf29e580"
sequence_number: 1
schema {
columns {
id: 0
name: "k"
type {
main: INT32
}
is_key: true
is_hash_key: true
is_nullable: false
is_static: false
is_counter: false
sorting_type: 0
order: 1
pg_type_oid: 23
}
columns {
id: 1
name: "v"
type {
main: INT32
}
is_key: false
is_nullable: true
is_static: false
is_counter: false
sorting_type: 0
order: 2
pg_type_oid: 23
}
table_properties {
contain_counters: false
is_transactional: true
consistency_level: STRONG
use_mangled_column_name: false
is_ysql_catalog_table: false
retain_delete_markers: false
partitioning_version: 1
}
colocated_table_id {
}
pgschema_name: "public"
}
schema_version: 0
而如果我执行一段事务
BEGIN;
UPDATE txn1 SET v=400 WHERE k=3;
COMMIT;
将会有这样对应的内容,包括
- 事务 ID
- 事务写操作 key-value pairs 信息
- 事务开始时间戳
- 事务提交时间戳
Entry:
type: REPLICATE
replicate {
id {
term: 1
index: 6
}
hybrid_time: 6854731322153586688
op_type: WRITE_OP
write {
unused_tablet_id: ""
write_batch {
write_pairs {
key: "G\374\240H\200\000\000\003!!K\201"
value: "H\000\000\001\220"
}
transaction {
transaction_id: "0:Q\220\231q@\246\222\247Z\370\'\221;\347"
isolation: SNAPSHOT_ISOLATION
status_tablet: "d8d35f601a36483ba4e6746c25e94e90"
priority: 4621407376379158149
start_hybrid_time: 6854731233537978368
locality: GLOBAL
}
DEPRECATED_may_have_metadata: true
table_schema_version {
schema_version: 0
}
}
client_id1: 13782638009204925153
client_id2: 992683026222397848
request_id: 11
min_running_request_id: 11
batch_idx: 0
}
committed_op_id {
term: 1
index: 5
}
monotonic_counter: 0
}
Entry:
type: REPLICATE
replicate {
id {
term: 1
index: 7
}
hybrid_time: 6854731334443716608
op_type: UPDATE_TRANSACTION_OP
committed_op_id {
term: 1
index: 6
}
monotonic_counter: 0
transaction_state {
transaction_id: "0:Q\220\231q@\246\222\247Z\370\'\221;\347"
status: APPLYING
tablets: "d8d35f601a36483ba4e6746c25e94e90"
commit_hybrid_time: 6854731334443175936
sealed: false
aborted {
}
}
}
YugabyteDB 和 TiDB 底层都是基于 RocksDB 做的存储,也都是支持分布式事务的数据库,我想请问一下 TiDB 生态中有单独的,显式分析 WAL 日志的工具吗?最近 TiCDC 在社区中做宣传,查了一些相关资料,TiCDC 上下游用的是 kv change log 来做的,这部分是属于 WAL 日志的一部分还是 raft log 的一部分还是第三者呢?
尽管 TiCDC 似乎是个答案,但是也是需要部署的,不方便直接对日志进行分析。
刚接触 TiDB 不久,如果有比较粗浅的认知错误,还请见谅,谢谢~