首批通过分布式安全可靠测评,为关键业务系统打造
创建和更新心跳表
更新时间:2026-04-14 15:40:37
本文为您介绍 MySQL 数据库和 PostgreSQL 数据库作为源端进行数据迁移时,如何创建和更新心跳表。
背景信息
您在新建 MySQL 或 PostgreSQL 数据源时,如果勾选了 增量同步时,允许 OMS 自动向该实例写入心跳数据,以解决源端在无业务写入场景下的高延时问题,并且填写的数据库用户具备创建表、写表的权限,OceanBase 迁移服务(OceanBase Migration Service,OMS)社区版会向对应的数据库中创建心跳表,并以 5 秒/次的频率更新心跳表。
如果您不需要 OMS 社区版自动创建并更新的心跳表,可以自行创建库表,并配置 crontab 任务,定时对源端数据库执行 UPDATE 操作。
前提条件
已赋予源端数据库账号创建数据库或者 Schema,以及读写心跳表的权限。
MySQL 数据库
赋予数据库用户创建表的权限
GRANT CREATE ON drc.heartbeat TO '<user_name>';赋予数据库用户写表的权限
GRANT INSERT, UPDATE, DELETE ON drc.heartbeat TO '<user_name>';
PostgreSQL 数据库
赋予数据库用户创建表的权限
GRANT CREATE ON SCHEMA public TO '<user_name>';赋予数据库用户写表的权限
GRANT INSERT, UPDATE, DELETE ON oms_postgres_heartbeat TO '<user_name>';
MySQL 数据库创建和更新心跳表
创建心跳表
CREATE DATABASE IF NOT EXISTS drc; CREATE TABLE IF NOT EXISTS drc.heartbeat (`id` smallint(6) NOT NULL DEFAULT 1,`ts` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;插入数据
INSERT INTO drc.heartbeat VALUES (1,0) ON DUPLICATE KEY UPDATE ts=0;更新数据
UPDATE drc.heartbeat SET ts=%d WHERE id=1;
PostgreSQL 数据库创建和更新心跳表
创建心跳表
CREATE TABLE IF NOT EXISTS public.oms_postgres_heartbeat (id int NOT NULL DEFAULT 1, ts int DEFAULT NULL, PRIMARY KEY (id));插入数据
INSERT INTO public.oms_postgres_heartbeat VALUES (1,0) ON CONFLICT (id) DO UPDATE SET ts=0;更新数据
UPDATE public.oms_postgres_heartbeat SET ts=%d WHERE id=1;