SHOW COLUMNAR OFFSET

本文介绍了如何使用SHOW COLUMNAR OFFSET语句查看列存同步位点。

注意事项

实例版本需为5.4.19-16989811及以上

语法

SHOW COLUMNAR OFFSET

示例

SHOW COLUMNAR OFFSET;
+--------------------+---------------+-----------+---------------------+-------------------------+-------------+
| TYPE               | BinlogFile    | Position  | TSO                 | TIME                    | LATENCY(ms) |
+--------------------+---------------+-----------+---------------------+-------------------------+-------------+
| CDC                | binlog.000010 | 223718750 | 7185913700627251264 | 2024-04-16 16:15:34.050 | 218         |
| COLUMNAR_LATENCY   | binlog.000010 | 223718418 | 7185913684139442240 | 2024-04-16 16:15:30.119 | 3931        |
| CN_MIN_LATENCY     | binlog.000010 | 223718418 | 7185913684139442240 | 2024-04-16 16:15:30.119 | 3931        |
| CN_MAX_LATENCY     | binlog.000010 | 223714434 | 7185912425433006144 | 2024-04-16 16:10:30.020 | 304030      |
| CN_PURGE_WATERMARK | binlog.000010 | 223713604 | 7185912174181613632 | 2024-04-16 16:09:30.117 | 363933      |
+--------------------+---------------+-----------+---------------------+-------------------------+-------------+

返回结果说明:

列名

说明

TYPE

该行数据所属类型。

BinlogFile

当前最新的Binlog文件。

Position

当前最新的Binlog文件位点。

TSO

时间戳,Binlog中每一个事务都包含TSO,用于区分每一个事务。

TIME

TSO对应的实际时间。

INTERVAL(ms)

时间间隔。

  • 类型为 CDC 的行,BinlogFile 和 Position 代表主实例的最新位点,TSO是cdc同步到DN的binlog位点的tso,TIME是该 TSO 的实际时间,LATENCY延时记录的是CDC节点收集多个DN生成全局一致binlog的延迟;

  • 类型为 COLUMNAR_LATENCY 的行,BinlogFile 和 Position 代表列存节点已同步到的 Binlog 位点,TSO 是同步位点的时间戳,TIME 是申请该 TSO 的实际时间,LATENCY则记录的是 "CDC的TIME" 减去 "TSO 实际时间" 得到的间隔。

  • 类型为CN_MIN_LATENCY的行,记录的是CN(计算节点)的最小延迟。

  • 类型为CN_MAX_LATENCY的行,记录的是CN(计算节点)的最大延迟。

  • 类型为CN_PURGE_WATERMARK的行,记录的是CN(计算节点)已经purge的水位线。

  • 一般 CDC 行和 COLUMNAR_LATENCY 行的 BinlogFile 和 Position 位点接近,则说明列存的数据和主实例基本一致。

常见问题

  1. 没有 COLUMNAR_LATENCY 行数据。

    答:说明没有列存节点,或者列存服务从未同步过数据。

  1. CDC 行的 binlog 位点为什么和 COLUMNAR 行的数据始终有略微差距?

    答:空闲情况下,没有 DML 更新,CDC 节点(日志节点)每隔 30s 才会连续生成三个 TSO 事件,保证位点推进,所以列存节点监听 binlog 事件,同步的时候每隔一段时间只会取第一个 TSO 事件触发提交,所以会有略微差距。

  1. COLUMNAR_LATENCY 行的 LATENCY 列值能否代表列存与主实例的延迟?

    答:COLUMNAR 行的 LATENCY 列值统计的是CDC最新TSO与列存最后一次提交 binlog 事件的 TSO 的时间间隔,只能当作一定参考,例如空闲情况下每隔 30s 才会有新的 binlog 事件,LATENCY 可能会接近30s,实际是由于binlog中没有新增数据,延迟理论上为0,这是因为列存节点是攒批提交的,所以心跳间隔比较大。

  1. 如何查看 PolarDB-X 主实例的最新 binlog 位点和 binlog 事件内容?

    答:可通过SHOW BINARY LOGS查看 Binlog 日志文件列表,可通过SHOW BINLOG EVENTS查看Binlog 文件中的具体事件信息。