关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
| 参数 | 说明 |
|---|---|
domino.decoder_info() |
当前数据库解码器信息。 |
domino.decoder_info_all() |
全部数据库解码器信息。 |
domino.decoder_workers() |
查询 worker 的 pid,连接的数据库等。 |
domino.decoder_metric() |
查看 decoder 的性能计数器。 |
domino.job_info() |
查看流的调度性能计数器,以及报错信息。 |
domino.strategy_info() |
查看流的调度策略和状态。 |
domino.progress_info() |
用于查看流进度,以及 XLog 保留情况。 |
domino.ticker_info() |
查看 ticker 是否在运行(或者暂停)。 |
domino.ticker_metric() |
用于查看 ticker 是被什么条件触发的。 |
domino.read_tuples() |
用于查看 TLog 内容,debug 用。 |
使用示例
domino.decoder_workers() :查询 worker 的 pid,连接的数据库等。
=# select * from domino.decoder_workers();
segid | dbid | dbname | pid
-------+-------+--------+-------
0 | 18745 | haoyu | 20351
1 | 18745 | haoyu | 20353
2 | 18745 | haoyu | 20352
-1 | 18745 | haoyu | 20354
(4 rows)
domino.decoder_metric():查看decoder的性能计数器。
segid | dbid | dbname | bytes_in | xacts | spills | tuples_new | tuples_old | snapshots | latency_ms | loops | total_duration_ms | last_duration_ms
-------+-------+--------+----------+-------+--------+------------+------------+-----------+------------+-------+-------------------+------------------
0 | 18745 | haoyu | 36048 | 0 | 0 | 0 | 0 | 119 | 0 | 25851 | 26616 | 1
1 | 18745 | haoyu | 35872 | 0 | 0 | 0 | 0 | 119 | 0 | 26755 | 27517 | 1
2 | 18745 | haoyu | 36048 | 0 | 0 | 0 | 0 | 119 | 0 | 25814 | 26576 | 1
-1 | 18745 | haoyu | 36784 | 0 | 0 | 0 | 0 | 119 | 0 | 22781 | 23444 | 1
(4 rows)
domino.job_info():查看流的调度性能计数器,以及报错信息。
db | db_name | stream | stream_name | loops | tuples | total_slip_ms | last_slip_ms | last_lag_ms | total_duration_ms | last_duration_ms | last_run | held_until | has_error | error_message | error_detail | error_hint | error_context
-------+---------+--------+-------------+-------+--------+---------------+--------------+-------------+-------------------+------------------+-------------------------------+-------------------------------+-----------+---------------+--------------+------------+---------------
18745 | haoyu | 18792 | s1 | 4 | 0 | 6 | 2 | 1709 | 57 | 7 | 2025-05-23 14:14:26.249188+08 | 2025-05-23 14:14:27.242299+08 | f | | | |
(1 row)
domino.strategy_info():查看流的调度策略和状态
id | db | db_name | stream | stream_name | strategy | summary
----+-------+---------+--------+-------------+------------+------------------------------------------
0 | 18745 | haoyu | 18792 | s1 | roundrobin | held until 2025-05-23 14:14:56.279678+08
(1 row)
domino.progress_info():用于查看流进度,以及 XLog 保留情况。
segid | db | db_name | stream | stream_name | restart_lsn | flush_lsn | tsn | xmin | end_lsn | lag_size | pending_xid | pending_restart | pending_flush | pending_tsn | pending_xmin | wal_status | safe_wal_size
-------+-------+---------+--------+-------------+-------------+-----------+---------+------+-----------+----------+-------------+-----------------+---------------+-------------+--------------+------------+---------------
0 | 18745 | haoyu | 18792 | s1 | 0/C246788 | 0/C249420 | 0/1A160 | 645 | 0/C249CE0 | 2240 | 647 | 0/C246788 | 0/C249610 | 0/1A240 | 646 | reserved |
1 | 18745 | haoyu | 18792 | s1 | 0/C2466F0 | 0/C249388 | 0/1A160 | 645 | 0/C249C48 | 2240 | 647 | 0/C2466F0 | 0/C249578 | 0/1A240 | 646 | reserved |
2 | 18745 | haoyu | 18792 | s1 | 0/C246788 | 0/C249420 | 0/1A160 | 645 | 0/C249CE0 | 2240 | 647 | 0/C246788 | 0/C249610 | 0/1A240 | 646 | reserved |
(3 rows)
domino.ticker_info():查看 ticker 是否在运行(或者暂停)。
-- 返回值为 (invalid 未启动、running 运行中、paused 暂停)。
ticker_info
-------------
running
(1 row)
domino.ticker_metric():用于查看 ticker 是被什么条件触发的。
=# SELECT * FROM domino.ticker_metric();
segid | ticks_by_time | ticks_by_size | ticks_by_force
-------+---------------+---------------+----------------
0 | 18894 | 2 | 1
1 | 18894 | 2 | 1
2 | 18894 | 2 | 1
-1 | 0 | 0 | 0
(4 rows)
Domino 插件提供的两个视图:domino.decoder_info 和 domino.stream_info,用于监控逻辑解码器和数据流的状态。
decoder_info 显示每个 segment 上的逻辑解码器运行状态和指标信息。
字段说明
| 字段名 | 类型 | 含义 |
|---|---|---|
| segid | integer | segment 编号 |
| dbid | oid | 数据库 OID |
| dbname | text | 数据库名称 |
| restart_lsn | pg_lsn | 依赖的xlog起始位置(按此位置保留xlog) |
| confirmed_flush | pg_lsn | 依赖的xlog flush位置 |
| start_tsn | pg_lsn | 生产的最后一条tlog的起点tsn |
| end_tsn | pg_lsn | 生产的最后一条tlog的尾部tsn |
| prog_xmin | xid | 依赖的catalog/维表的xmin(按此xid保留表的数据) |
| pid | integer | 解码器进程 ID,为 0 表示未运行 |
| bytes_in | bigint | 消费xlog总数据量 |
| xacts | bigint | 消费事务总量 |
| spills | bigint | 溢出到磁盘的事务数 |
| tuples_new | bigint | 插入的行数 |
| tuples_old | bigint | 更新/删除的旧行数 |
| snapshots | bigint | 生成的快照数 |
| latency_ms | bigint | 上一轮解码延迟 |
| loops | bigint | 解码器执行轮数 |
| total_duration_ms | bigint | 累计运行耗时 |
| last_duration_ms | bigint | 上一轮运行耗时 |
查询示例
-- 查看解码延迟高的 segment
SELECT segid, dbid, dbname, dbname, latency_ms
FROM domino.decoder_info
WHERE latency_ms > 60 * 1000;
stream_info 展示每个逻辑流(stream)的整体进度、状态和调度信息。
字段说明
| 字段名 | 类型 | 含义 |
|---|---|---|
| segid | integer | segment 编号 |
| db | oid | 数据库 OID |
| db_name | text | 数据库名称 |
| stream | oid | 流的 OID |
| stream_name | text | 流名称 |
| restart_lsn | pg_lsn | 依赖的 xlog 起始位置(按此位置保留 xlog ) |
| flush_lsn | pg_lsn | 依赖的的 xlog flush 位置 |
| start_tsn | pg_lsn | 消费的最后一条 tlog 的起点 tsn |
| end_tsn | pg_lsn | 消费的最后一条 tlog 的起点 tsn |
| xmin | xid | 依赖的 catalog /维表的 xmin(按此 xid 保留表的数据) |
| end_lsn | pg_lsn | 此 segment 上最新的 lsn |
| lag_size | bigint | flush_lsn 距离 end_lsn 的大小 |
| pending_xid | xid | 尚未提交的的事务 ID |
| pending_restart | pg_lsn | 尚未提交的依赖的 xlog 起始位置(按此位置保留 xlog) |
| pending_flush | pg_lsn | 尚未提交的依赖的 xlog flush 位置 |
| pending_tsn | pg_lsn | 尚未提交的依赖的消费的最后一条 tlog 的起点 tsn |
| pending_xmin | xid | 尚未提交的依赖的 catalog /维表的 xmin(按此 xid 保留表的数据) |
| wal_status | text | WAL 状态描述,有如下几个值: reserved:未超出 max_wal_size 限制,不会被清理; extended:超出 max_wal_size,但被逻辑槽或者流保护,不会被清理; unreserved:超出槽和流的保护范围,将于下次 checkpoint 被清理; `removed:已经被清理 |
| safe_wal_size | bigint | 安全的最大 WAL 大小限制,超出此限制的 wal 会被清理 |
| loops | bigint | 执行轮数 |
| tuples | bigint | 已处理的行数 |
| total_slip_ms | bigint | 累计休眠时长(任务调度延迟) |
| last_slip_ms | bigint | 上一次休眠时长 |
| last_lag_ms | bigint | 流处理延迟(处理的最后一个 tick 事务到最新 tick 的时间差) |
| total_duration_ms | bigint | 总执行耗时 |
| last_duration_ms | bigint | 上次执行耗时 |
| last_run | timestamp with time zone | 上次运行时间 |
| held_until | timestamp with time zone | 下次被调度的时间(执行出错会休眠一分钟后再执行) |
| has_error | boolean | 是否有错误发生 |
| error_message | text | 错误信息 |
| error_detail | text | 错误详情 |
| error_hint | text | 错误提示 |
| error_context | text | 错误上下文 |
| slot_id | integer | 占用的 domino worker 槽 |
| strategy | text | 调度策略 |
| summary | text | 策略描述摘要 |
查询示例
-- 检查所有有错误的流
SELECT stream_name, error_message
FROM domino.stream_info
WHERE has_error;
-- 查看滞后较大的流
SELECT stream_name, pg_size_pretty(lag_size) AS lag
FROM domino.stream_info
WHERE lag_size > 64*1024*1024;
| 参数 | 说明 |
|---|---|
domino.start() |
一键启动。由于创建插件后,下次重启之前 v2 组件不会自动启动,需要手动启动。 |
domino.stop() |
一键停止。 |
domino.start_decoder() |
启动解码器。 |
domino.stop_decoder() |
关闭解码器。 |
domino.ticker_start() |
启动 ticker。 |
domino.ticker_stop() |
关闭 ticker。 |
domino.ticker_pause() |
暂停 ticker。 |
domino.ticker_resume() |
恢复 ticker。 |
domino.ticker_reset() |
重置 ticker。 |
domino.wait_tick() |
等待下一个 tick。 |
多用于故障排查。
| 参数 | 说明 |
|---|---|
domino.decoder_sync() |
等待 decoder 进度追上。 |
domino.progress_sync() |
等待流进度追上。 |
domino.pause_stream() |
暂停某个流。 |
domino.pause_all_streams() |
暂停全部流。 |
domino.resume_stream() |
恢复某个流。 |
domino.resume_all_streams() |
恢复全部流。 |
domino.switch_tlog() |
切换 TLog 文件(Segment)。 |