跳到主要内容
最后于 更新

ALTER JOB

描述​

修改 Streaming Job 的运行属性、执行 SQL 或自动建表同步配置。只能修改 PAUSED 状态下的 Streaming Job,且每次至少需要提供一项实际变化。

语法​

ALTER JOB <job_name>
[
PROPERTIES (<job_property>[, ...])
]
[
<Insert_Command>
| FROM <source_type> (<source_property>[, ...])
TO DATABASE <target_db> (<target_property>[, ...])
]

必选参数​

1. <job_name>

修改任务的作业名称。

可选参数​

1. <job_property>

修改 Job 属性,例如 max_interval、compute_group、session.*,或使用 JSON offset 重置 CDC 位点。

2. <Insert_Command>

修改 TVF 模式任务执行的 INSERT SQL。ALTER JOB 中不使用 DO 关键字。

3. <source_property> 和 <target_property>

修改自动建表同步的数据源或目标端属性。数据源类型和目标数据库不能修改。

备注

自动建表同步不能修改 jdbc_url、database、schema、include_tables、exclude_tables、源端 offset、逐表映射参数、slot_name 或 publication_name。如需重置 CDC 位点,请使用 Job Property offset。

CDC Stream TVF 模式不能修改目标表、TVF 类型、type、jdbc_url、database、schema、table、snapshot_split_key、slot_name 或 publication_name;可通过修改 INSERT SQL 轮换账号密码、驱动或其他可修改参数。

暂停作业后可修改以下数据源参数:

参数适用模式生效范围
schema_change_behavior自动建表同步evolve 自动应用支持的列 DDL,检测到不支持变更时暂停;ignore 关闭结构同步。切回 evolve 不会补做之前跳过的变更。
snapshot_parallelism自动建表同步、CDC Stream TVF影响后续全量 Task 的 split 调度数量。MySQL/OceanBase 保留的 server_id 范围必须覆盖修改后的并行度。
snapshot_split_size自动建表同步、CDC Stream TVF只影响之后新生成的 split,已持久化的切片边界不变。

S3 作业的 s3.ingestion_mode、s3.event.source、s3.sqs.queue_url 创建后不可修改。ONE_TIME 和 NOTIFICATION 模式禁止修改 offset,所有 S3 模式均不能修改 S3 URI。详见 S3 导入。

权限控制​

执行此 SQL 命令的用户必须至少具有以下权限:

权限(Privilege)对象(Object)Job 类型(ExecuteType)说明(Notes)
LOAD_PRIV数据库(DB)Streaming支持 LOAD 权限执行此操作

示例​

  • 修改 my_job 的 session 变量

     ALTER JOB my_job
    PROPERTIES(
    "session.insert_max_filter_ratio"="0.5"
    );
  • 修改 my_job 的 SQL 语句

     ALTER JOB my_job
    INSERT INTO db1.tbl1
    SELECT * FROM S3
    (
    "uri" = "s3://bucket/*.csv",
    "s3.access_key" = "<s3_access_key>",
    "s3.secret_key" = "<s3_secret_key>",
    "s3.region" = "<s3_region>",
    "s3.endpoint" = "<s3_endpoint>",
    "format" = "<format>"
    );
  • 同时修改 my_job 的 Properties 和 SQL 语句

    ALTER JOB my_job
    PROPERTIES(
    "session.insert_max_filter_ratio"="0.5"
    )
    INSERT INTO db1.tbl1
    select * from S3(
    "uri" = "s3://bucket/*.csv",
    "s3.access_key" = "<s3_access_key>",
    "s3.secret_key" = "<s3_secret_key>",
    "s3.region" = "<s3_region>",
    "s3.endpoint" = "<s3_endpoint>",
    "format" = "<format>"
    );
  • 修改 S3 作业 my_job 同步的进度

    ALTER JOB my_job
PROPERTIES(
'offset' = '{"fileName":"regression/load/data/example_0.csv"}'
);
  • 将 MySQL CDC 作业重置到指定 Binlog 位点
ALTER JOB mysql_cdc_job
PROPERTIES (
"offset" = '{"file":"binlog.000001","pos":"154"}'
);
  • 将 PostgreSQL CDC 作业重置到指定 LSN
ALTER JOB pg_cdc_job
PROPERTIES (
"offset" = '{"lsn":"12345678"}'
);

CDC 作业只能在 PAUSED 状态下修改位点,且 offset 仅接受上述 JSON 精确位点,不接受 initial、snapshot、earliest 或 latest。

  • 暂停后切换 MySQL 自动建表同步的 Schema Change 行为,并调整后续快照调度
PAUSE JOB WHERE jobname = 'multi_table_sync';
ALTER JOB multi_table_sync
FROM MYSQL (
"schema_change_behavior" = "ignore",
"snapshot_parallelism" = "4",
"snapshot_split_size" = "81920",
"server_id" = "5400-5403"
)
TO DATABASE target_test_db;
RESUME JOB WHERE jobname = 'multi_table_sync';

预期结果:后续列变更不再自动修改目标表,新的快照调度使用修改后的并行度,新生成的 split 使用新的大小。该设置不会改变既有切片,也不能代替手动准备兼容的目标表结构。PostgreSQL 和 OceanBase 自动建表同步可使用对应的 FROM POSTGRES、FROM OCEANBASE 修改这三个参数。