You need to enable JavaScript to run this app.
文档中心
数据库传输服务

数据库传输服务

复制全文
下载 pdf
故障排查
开启毫秒级延迟监控时为什么需要有心跳表
复制全文
下载 pdf
开启毫秒级延迟监控时为什么需要有心跳表
在创建数据同步或数据订阅任务并开启毫秒级延迟监控功能后,可能会因源端数据库账号不存在、心跳库不存在或心跳表不存在等情况,导致预检查不通过无法创建任务。本文介绍开启毫秒级延迟监控预检查不通过时的解决方案。
背景信息
由于数据库传输服务 DTS 在进行端到端的数据传输时,端到端全链路的延迟无法直接测量,必须借助时间锚点进行量化,而心跳表是提供这些精准时间锚点的唯一可靠载体,因此在进行数据库传输开启毫秒级延迟监控时,需要依赖心跳表。
注意事项
当前仅支持在创建以下数据传输任务时开启毫秒级延迟监控:
  • 同步:MySQL 同步至 MySQL、MongoDB 同步至 MongoDB
  • 订阅:PostgreSQL 订阅到 Kafka、PostgreSQL 订阅到 RocketMQ、AIDAP 订阅到 RocketMQ
解决方案
报错类型一:权限不足
MySQL 数据库类型
PostgreSQL 数据库类型
MongoDB 数据库类型
  1. 授予源端数据库账号具备创建库和表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限
  1. 连接源端实例。详细操作,请参见连接实例。确认源端实例中是否存在心跳库 _volc_dts 和心跳表 heartbeat。
  1. 执行以下命令确认是否存在心跳库 _volc_dts。
  • SHOW DATABASES LIKE '_volc_dts';
  • 若存在心跳库,则需确认是否存在心跳表。
  1. 请执行以下命令查询是否存在心跳表 heartbeat。
  • USE _volc_dts;
    SHOW TABLES LIKE 'heartbeat';
  1. 若不存在心跳表,请执行以下命令创建心跳表。
  • CREATE TABLE IF NOT EXISTS heartbeat (
    id VARCHAR(64) NOT NULL COMMENT '固定心跳标识,主键',
    ts DATETIME(3) NOT NULL COMMENT '毫秒级时间戳(DATETIME(3)保留3位毫秒)',
    status TINYINT NOT NULL DEFAULT 1 COMMENT '心跳状态:1=正常,0=异常',
    PRIMARY KEY (id) USING BTREE
    ) ENGINE=InnoDB
    COMMENT='E2E毫秒级延迟监控心跳表(Volc DTS专用)';
  1. 执行以下命令,插入固定标识的心跳记录,首次初始化心跳表。
  • REPLACE INTO heartbeat (id, ts) VALUES ('heartbeat', NOW(3));
  • 若不存在心跳库,则需创建心跳库和心跳表。
  1. 执行以下命令,创建心跳库。
  • CREATE DATABASE IF NOT EXISTS _volc_dts
    COMMENT 'E2E毫秒级延迟监控心跳库';
  1. 执行以下命令,切换到心跳库。
  • USE _volc_dts;
  1. 执行以下命令创建心跳表。
  • CREATE TABLE IF NOT EXISTS heartbeat (
    id VARCHAR(64) NOT NULL COMMENT '固定心跳标识,主键',
    ts DATETIME(3) NOT NULL COMMENT '毫秒级时间戳(DATETIME(3)保留3位毫秒)',
    status TINYINT NOT NULL DEFAULT 1 COMMENT '心跳状态:1=正常,0=异常',
    PRIMARY KEY (id) USING BTREE
    ) ENGINE=InnoDB
    COMMENT='E2E毫秒级延迟监控心跳表(Volc DTS专用)';
  1. 执行以下命令,插入固定标识的心跳记录,首次初始化心跳表。
  • REPLACE INTO heartbeat (id, ts) VALUES ('heartbeat', NOW(3));
报错类型二:没有心跳库
MySQL 数据库类型
PostgreSQL 数据库类型
MongoDB 数据库类型
  1. 授予源端数据库账号具备创建库和表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限
  1. 连接源端实例。详细操作,请参见连接实例
  1. 执行以下命令,创建心跳库。
  • CREATE DATABASE IF NOT EXISTS _volc_dts
    COMMENT 'E2E毫秒级延迟监控心跳库';
  1. 执行以下命令,切换到心跳库。
  • USE _volc_dts;
  1. 执行以下命令创建心跳表。
  • CREATE TABLE IF NOT EXISTS heartbeat (
    id VARCHAR(64) NOT NULL COMMENT '固定心跳标识,主键',
    ts DATETIME(3) NOT NULL COMMENT '毫秒级时间戳(DATETIME(3)保留3位毫秒)',
    status TINYINT NOT NULL DEFAULT 1 COMMENT '心跳状态:1=正常,0=异常',
    PRIMARY KEY (id) USING BTREE
    ) ENGINE=InnoDB
    COMMENT='E2E毫秒级延迟监控心跳表(Volc DTS专用)';
  1. 执行以下命令,插入固定标识的心跳记录,首次初始化心跳表。
  • REPLACE INTO heartbeat (id ts) VALUES ('heartbeat', NOW(3));
报错类型三:没有心跳表
MySQL 数据库类型
PostgreSQL 数据库类型
MongoDB 数据库类型
  1. 授予源端数据库账号具备创建库表权限(推荐 SELECT、INSERT 和 UPDATE 权限)。关于如何为源端账号授权,请参见修改账号权限
  1. 连接源端实例。详细操作,请参见连接实例
  1. 执行以下命令,切换到心跳库。
USE _volc_dts;
  1. 执行以下命令创建心跳表。
CREATE TABLE IF NOT EXISTS heartbeat (
id VARCHAR(64) NOT NULL COMMENT '固定心跳标识,主键',
ts DATETIME(3) NOT NULL COMMENT '毫秒级时间戳(DATETIME(3)保留3位毫秒)',
status TINYINT NOT NULL DEFAULT 1 COMMENT '心跳状态:1=正常,0=异常',
PRIMARY KEY (id) USING BTREE
) ENGINE=InnoDB
COMMENT='E2E毫秒级延迟监控心跳表(Volc DTS专用)';
  1. 执行以下命令,插入固定标识的心跳记录,首次初始化心跳表。
REPLACE INTO heartbeat (id, ts) VALUES ('heartbeat', NOW(3));
报错类型四:Read only 相关报错
MySQL 数据库类型
PostgreSQL 数据库类型
您可能遇到以下两种关于 Ready only 相关报错提示,如下所示:
  • 报错类型一:read_only = ON 且账号无高权限
  • 错误提示:发现[源/目标]库系统变量 read_only = ON,且用户无 SUPERCONNECTION_ADMIN 权限,无法更新。
  • 原因:实例已启用全局只读模式,且普通账号没有修改数据的权限。
  • 解决方案:请使用高级权限账号连接源端实例,或关闭实例的全局只读模式,详细操作,请参见关闭全局只读
  • 报错类型二:其他只读变量为 ON
  • 错误提示:发现[源/目标]库系统变量 [super_read_only/innodb_read_only/transaction_read_only/tx_read_only]= ON,无法更新。
  • 原因:实例因运维保护、存储异常或会话设置等原因进入只读模式。
  • 解决方案:
  • 若为 super_read_onlyread_only:使用高权限账号关闭只读模式。详细操作,请参见关闭全局只读
  • 若为 innodb_read_only:需检查磁盘权限或实例状态,通常需重启实例。详细操作,请参见重启实例
  • 若为会话级变量(如 transaction_read_only):重建连接实例即可。
最近更新时间:2026.08.06 16:18:03
这个页面对您有帮助吗?
有用
有用
无用
无用