- 文档首页
数据库传输服务
常见问题
故障排查
开启毫秒级延迟监控时为什么需要有心跳表
开启毫秒级延迟监控时为什么需要有心跳表
在创建数据同步或数据订阅任务并开启毫秒级延迟监控功能后,可能会因源端数据库账号不存在、心跳库不存在或心跳表不存在等情况,导致预检查不通过无法创建任务。本文介绍开启毫秒级延迟监控预检查不通过时的解决方案。
由于数据库传输服务 DTS 在进行端到端的数据传输时,端到端全链路的延迟无法直接测量,必须借助时间锚点进行量化,而心跳表是提供这些精准时间锚点的唯一可靠载体,因此在进行数据库传输开启毫秒级延迟监控时,需要依赖心跳表。
- 当前仅支持在创建以下数据传输任务时开启毫秒级延迟监控:
- 同步:MySQL 同步至 MySQL、MongoDB 同步至 MongoDB、PostgreSQL 同步至 PostgreSQL。
- 订阅:PostgreSQL 订阅到 Kafka、PostgreSQL 订阅到 RocketMQ、AIDAP 订阅到 RocketMQ。
- 源端节点必须为读写节点:毫秒级延迟监控需要持续向源端的 _volc_dts 库写入心跳数据。若源端为只读节点,将因无法写入而导致预检查失败。若必须使用只读节点,请在配置任务时不开启毫秒级延迟监控。
- 源端账号权限要求:除基础数据读取权限外,账号还必须具备 REPLICATION SLAVE、REPLICATION CLIENT、SELECT、INSERT 和 UPDATE 权限,以确保能正常读写心跳库。
MySQL 数据库类型
PostgreSQL 数据库类型
MongoDB 数据库类型
- 授予源端数据库账号具备创建库和表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限。
- 连接源端实例。详细操作,请参见连接实例。确认源端实例中是否存在心跳库 _volc_dts 和心跳表 heartbeat。
- 执行以下命令确认是否存在心跳库 _volc_dts。
- 请执行以下命令查询是否存在心跳表 heartbeat。
- 执行以下命令,插入固定标识的心跳记录,首次初始化心跳表。
- 执行以下命令,插入固定标识的心跳记录,首次初始化心跳表。
- 授予源端数据库账号具备创建库和表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限。
- 连接源端实例。详细操作,请参见连接实例。确认源端实例中是否存在心跳 Schema _volc_dts 和心跳表 heartbeat。
- 请执行以下命令查询是否存在心跳表 heartbeat。
- 若不存在心跳 Schema,则需创建心跳 Schema 和心跳表。
- 若源端实例中不存在心跳库,则需执行以下命令,创建心跳 Schema。
- 授予源端数据库账号具备创建库和表权限(推荐超级管理员账号或者 readWriteAnyDatabase 角色)。关于如何为源端账号授权,请参见修改账号权限。
- 连接源端实例。详细操作,请参见连接实例。确认源端实例中是否存在心跳库 _volc_dts 和心跳集合 heartbeat。
- 请执行以下命令查询是否存在心跳集合 heartbeat。
- 若不存在心跳集合,请执行以下命令,创建心跳集合。
- 若源端实例中不存在心跳库,则需执行以下命令,切换到心跳库
MySQL 数据库类型
PostgreSQL 数据库类型
MongoDB 数据库类型
- 授予源端数据库账号具备创建库和表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限。
- 执行以下命令,插入固定标识的心跳记录,首次初始化心跳表。
- 授予源端数据库账号具备创建库和表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限。
- 授予源端数据库账号具备创建库和表权限(推荐超级管理员账号或者 readWriteAnyDatabase 角色)。关于如何为源端账号授权,请参见修改账号权限。
MySQL 数据库类型
PostgreSQL 数据库类型
MongoDB 数据库类型
- 授予源端数据库账号具备创建库表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限。
- 执行以下命令,插入固定标识的心跳记录,首次初始化心跳表。
- 授予源端数据库账号具备创建表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限。
- 授予源端数据库账号具备创建表权限(推荐超级管理员账号或者 readWriteAnyDatabase 角色)。关于如何为源端账号授权,请参见修改账号权限。
MySQL 数据库类型
PostgreSQL 数据库类型
您可能遇到以下两种关于 Ready only 相关报错提示,如下所示:
- 报错类型一:read_only = ON 且账号无高权限
- 错误提示:发现[源/目标]库系统变量 read_only = ON,且用户无 SUPER 和 CONNECTION_ADMIN 权限,无法更新。
- 原因:实例已启用全局只读模式,且普通账号没有修改数据的权限。
- 解决方案:请使用高级权限账号连接源端实例,或关闭实例的全局只读模式,详细操作,请参见关闭全局只读。
- 错误提示:发现[源/目标]库系统变量 [super_read_only/innodb_read_only/transaction_read_only/tx_read_only]= ON,无法更新。
- 原因:实例因运维保护、存储异常或会话设置等原因进入只读模式。
- 若为 super_read_only 或 read_only:使用高权限账号关闭只读模式。详细操作,请参见关闭全局只读。
- 若为 innodb_read_only:需检查磁盘权限或实例状态,通常需重启实例。详细操作,请参见重启实例。
- 若为会话级变量(如 transaction_read_only):重建连接实例即可。
- 错误提示:发现[源/目标]库系统变量 default_transaction_read_only = ON,无法更新。
- 解决方案:关闭实例的全局只读模式,详细操作,请参见关闭全局只读。
最近更新时间:2026.11.05 19:28:44