跳到主要内容
版本:1.2

事件数据模型

greptime_private.events 有以下公共列。

含义
type事件类型,例如 create_tableregion_migration
timestamp记录该行的时间。
payload与事件类型相关的 JSON 数据。
event_context有上下文时,用于描述事件触发原因的 JSON。

Procedure 事件列

Procedure 事件还有以下列:

含义
procedure_idProcedure 的唯一 ID。
procedure_state记录事件时的 Procedure 状态。取值为 RunningDoneRetryingPrepareRollbackRollingBackFailedPoisoned
procedure_triggerProcedure 事件触发信息,采用 JSON 格式。type 可为 SubmittedRecoveredChildSubmittedRetryingRollingBackSucceededFailedPoisoned
procedure_errorProcedure 出错时的 Debug 格式错误信息;其他情况为空字符串。

触发类型为 Submitted 的事件状态通常为 Running。Procedure 成功完成后,完成记录的状态为 Done,触发类型为 Succeeded。完成记录根据 Procedure 完成时的状态生成,因此字段可能 与提交时的记录不同。事件会异步写入,写入失败不会影响 Procedure 的执行结果。

event_context 只写入 Submitted 记录。存在该字段时,其中稳定的 reason 值可以是 manualauto_createauto_alterauto_repartitionauto_rebalanceregion_failoverscheduled_gcunknown。例如,通过 MySQL 提交的事件可能包含 {"protocol":"mysql","reason":"manual"}

SubmittedSucceeded 外,Procedure 还可能在适用时产生以下触发类型。 并非每个 Procedure 都会产生所有触发类型,记录顺序也不保证与下表一致:

type含义和字段
Recovered根 Procedure 从持久化状态恢复。
ChildSubmitted尝试提交子 Procedure。procedure_trigger 包含子 Procedure 的 procedure_id 和提交 outcomeAcceptedAlreadyAcceptedManagerStoppedSpawnFailed)。
Retrying正在重试 Procedure 的执行或回滚。procedure_trigger 包含重试 phaseExecuteRollback)和 attempt
RollingBack开始回滚 Procedure。
FailedProcedure 到达失败终态。请检查 procedure_error 中的失败详情。
PoisonedProcedure 无法继续。请检查 procedure_error 中的失败详情。

查询 JSON 字段

详细信息请参阅 JSON 函数。在事件查询中, json_to_string 将 JSON 值转换为可读文本,json_get_string 按路径提取值, json_path_match 计算 JSON 谓词,json_is_null 检查值是否为 JSON null。如需检查 SQL NULL,应单独使用 IS NULL

例如,以下查询从包含 event_contextcreate_table 行中提取相关字段:

SELECT procedure_state,
json_get_string(procedure_trigger, 'type') AS trigger_type,
json_path_match(procedure_trigger, '$.type == "Submitted"') AS is_submitted,
json_get_string(event_context, 'reason') AS reason
FROM greptime_private.events
WHERE type = 'create_table'
AND timestamp >= now() - INTERVAL '1' hour
AND schema_name = '<database_name>'
AND table_name = '<table_name>'
AND event_context IS NOT NULL
ORDER BY timestamp;
+-----------------+--------------+--------------+--------+
| procedure_state | trigger_type | is_submitted | reason |
+-----------------+--------------+--------------+--------+
| Running | Submitted | 1 | manual |
+-----------------+--------------+--------------+--------+

JSON null 和 SQL NULL

create_table 示例以及 DDL/repartition Procedure 完成后产生的事件中,终态 payload 可能是 JSON null,而不是 SQL NULL

SELECT procedure_state, json_to_string(payload) AS payload,
payload IS NULL AS payload_is_sql_null,
json_is_null(payload) AS payload_is_json_null,
json_get_string(procedure_trigger, 'type') AS trigger_type
FROM greptime_private.events
WHERE type = 'create_table'
AND timestamp >= now() - INTERVAL '1' hour
AND schema_name = '<database_name>'
AND table_name = '<table_name>'
ORDER BY timestamp;
+-----------------+------------------------------------------------------------+---------------------+----------------------+--------------+
| procedure_state | payload | payload_is_sql_null | payload_is_json_null | trigger_type |
+-----------------+------------------------------------------------------------+---------------------+----------------------+--------------+
| Running | {"create_if_not_exists":false,"engine":"mito","version":1} | 0 | 0 | Submitted |
| Done | null | 0 | 1 | Succeeded |
+-----------------+------------------------------------------------------------+---------------------+----------------------+--------------+

Procedure 事件的专用列

以下列只会在对应事件类型中填充;不适用时为 SQL NULL

  • 数据库、表和视图事件: catalog_nameschema_name 以及适用的表或视图名称和 ID 列用于标识对象。Flow 事件使用 catalog_nameflow_name;其 schema_name 为 SQL NULLphysical_table_id 仅适用于 create_logical_tablesalter_logical_tables。详见 DDL 事件
  • Region 迁移: region_idregion_number 标识 Region; region_migration_trigger_reasonregion_migration_src_node_idregion_migration_src_peer_addrregion_migration_dst_node_idregion_migration_dst_peer_addr 记录迁移原因、源端和目标端。
  • Repartition: catalog_nameschema_nametable_nametable_id 标识受影响的表。 parent_procedure_id 关联父 Procedure,repartition_group_id 标识分组操作。 source_region_idsource_region_numbersource_partition_exprtarget_region_idtarget_region_numbertarget_partition_expr 描述源和目标 Region 及其分区表达式。
  • 批量 GC: region_idregion_numbergc_report 记录处理的 Region 及 GC 结果。
  • WAL 清理: topic_nameprunable_entry_idlatest_offset 分别表示 topic、 请求的清理边界和排他的最新 offset。