本文介绍了如何使用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 位点接近,则说明列存的数据和主实例基本一致。
常见问题
没有 COLUMNAR_LATENCY 行数据。
答:说明没有列存节点,或者列存服务从未同步过数据。
CDC 行的 binlog 位点为什么和 COLUMNAR 行的数据始终有略微差距?
答:空闲情况下,没有 DML 更新,CDC 节点(日志节点)每隔 30s 才会连续生成三个 TSO 事件,保证位点推进,所以列存节点监听 binlog 事件,同步的时候每隔一段时间只会取第一个 TSO 事件触发提交,所以会有略微差距。
COLUMNAR_LATENCY 行的 LATENCY 列值能否代表列存与主实例的延迟?
答:COLUMNAR 行的 LATENCY 列值统计的是CDC最新TSO与列存最后一次提交 binlog 事件的 TSO 的时间间隔,只能当作一定参考,例如空闲情况下每隔 30s 才会有新的 binlog 事件,LATENCY 可能会接近30s,实际是由于binlog中没有新增数据,延迟理论上为0,这是因为列存节点是攒批提交的,所以心跳间隔比较大。
如何查看 PolarDB-X 主实例的最新 binlog 位点和 binlog 事件内容?
答:可通过
SHOW BINARY LOGS
查看 Binlog 日志文件列表,可通过SHOW BINLOG EVENTS
查看Binlog 文件中的具体事件信息。