SQL命令 SAVEPOINT 在事务中标记一个点。 大纲 SAVEPOINT pointname 参数 pointname - 保存点的名称,指定为标识符。...描述 SAVEPOINT语句标记事务中的一个点。建立保存点使能够执行事务回滚到保存点,撤消在此期间完成的所有工作并释放在此期间获得的所有锁。...当指定具有重复点名的SAVEPOINT语句时, IRIS会递增事务级别计数器,就像点名是唯一的一样。但是,最近的点名称会覆盖保存点名称表中所有先前重复的值。...但是,如果再次指定回滚到同名的保存点点名,则会生成SQLCODE-375错误,并显示%msg:Cannot Rollback to Unestabled SavePoint‘name’,整个事务将回滚,...使用保存点 嵌入式SQL、动态SQL、ODBC和JDBC支持SAVEPOINT语句。
一、背景 什么是 savepoint,为什么要使用 savepoint ?...on yarn 如何使用 savepoint触发 savepoint 保留到 hdfs, 在重新调度作业时,提供给用户选择即可。...和 YARN 应用程序 ID :yarnAppId 的作业的 Savepoint,并返回创建的 Savepoint 的路径。...从 Savepoint 恢复 #$ bin/flink run -s :savepointPath [:runArgs]这将提交作业并指定要从中恢复的 Savepoint 。...#$ bin/flink savepoint -d :savepointPath这将删除存储在 :savepointPath 中的 Savepoint。
介绍 Hudi提供了savepoint机制,即可对instant进行备份,当后续出现提交错误时,便可rollback至指定savepoint,这对于线上系统至为重要,而savepoint由hudi-CLI...分析 2.1 创建savepoint 创建savepoint的入口为 HoodieWriteClient#savepoint,其核心代码如下 public boolean savepoint(String...创建savepoint的最终结果就是在元数据目录下创建了一个*.savepoint的文件。...2.2 回滚savepoint 在创建完savepoint之后,便可回滚至指定的savepoint,其入口为 HoodieWriteClient#rollbackToSavepoint,其核心代码如下...总结 Hudi提供了savepoint机制可对某一instant进行备份,然后可通过rollback回滚至指定的savepoint,但值得注意的是回滚只能从大的savepoint开始回滚,即存在多个savepoint
所以,当出现rollback to savepoint出现这个错误时,第一步是检查autocommit模式是否有开启。 select @@autocommit; 1则代表开启,0则代表未开启。
server 层的 savepoint 结构是一个 SAVEPOINT 类型的对象,主要属性如下: prev:指向 server 层的 savepoint 链表中,上一次创建的 SAVEPOINT 对象...name:savepoint 的名字。 mdl_savepoint:创建这个 savepoint 之前,事务加了哪些 MDL 锁。...删除同名 savepoint 如果在用户线程的 m_savepoints 链表中找到了和本次创建的 savepoint 同名的 savepoint,需要先删除 m_savepoints 链表中的同名 savepoint...保存 savepoint 处理完查找、删除同名 savepoint 之后,server 层就正式开始创建 savepoint 了,这个过程分为 3 步。...如果 m_savepoints 链表中存在和本次创建的 savepoint 同名的 savepoint, 创建新的 savepoint 之前,server 层会从链表中删除这个同名的 savepoint
Savepoint:状态管理的灵活指挥官如果说Checkpoint是Flink自动运行的"心跳监测仪",那么Savepoint则是运维人员手中的"手术刀"。...核心价值与工作原理Savepoint与Checkpoint虽同为状态快照,但存在本质差异:触发方式:Checkpoint由系统自动调度,Savepoint需手动触发(通过bin/flink savepoint...某金融客户实测显示,处理TB级状态时,Savepoint恢复比全量重算快17倍。高级技巧与避坑指南元数据版本控制Savepoint包含作业拓扑指纹,当算子链结构变化时可能触发不兼容错误。...vs Savepoint:如何选择?...未来演进方向Flink社区正推动Savepoint的智能化升级:自动版本适配:通过Schema Registry实现状态自动转换增量Savepoint:仅保存两次Savepoint间的变化云原生存储:与
查找 savepoint 每个用户线程都有一个 m_savepoints 链表,用户每创建一个 savepoint,它的对象都会追加到链表末尾。...每个 savepoint 对象的 prev 属性都指向在它之前创建的那个 savepoint 对象,多个 savepoint 对象通过 prev 属性连接成链表。...回滚到某个 savepoint 的过程中,binlog 回滚就是把创建该 savepoint 之后执行 SQL 产生的 binlog 日志都丢弃。...删除 savepoint 执行完 binlog 和 InnoDB 的回滚操作之后,还需要删除该 savepoint 之后创建的其它 savepoint。...总结 回滚到某个 savepoint,首先要从 m_savepoints 链表中找到这个 savepoint。
面试中还可能追问:“为什么Savepoint不能替代Checkpoint?”——因为Savepoint的手动特性无法满足实时容错的需求,且频繁手动创建Savepoint会带来显著性能开销。...Savepoint:需要升级Flink作业版本时,先手动创建Savepoint,然后停止旧作业,从Savepoint启动新版本作业。...Savepoint。...删除Savepoint:释放存储资源 定期删除旧Savepoint是维护存储效率的最佳实践。...bin/flink savepoint $JOB_ID $SAVEPOINT_DIR # 删除7天前的Savepoint find $SAVEPOINT_DIR -name "savepoint-*"
Flink从1.13版本开始支持在SQL Client从savepoint恢复作业。...flink-savepoint介绍 接下来我们从Flink SQL Client构建一个mysql cdc数据经kafka入hudi数据湖的例子。...Savepoint completed....Path: hdfs://hadoop:9000/flink-1.13-savepoint/savepoint-0128b1-8970a7371adbCopy 从savepoint恢复任务:(在Flink...SQL Client执行) SET execution.savepoint.path=hdfs://hadoop:9000/flink-1.13-savepoint/savepoint-0128b1
配置 SavePoint 策略 SavePoint 策略选择最近一次。 任务提交 因为作业是第一次运行,之前没有做过savepoint,所以作业是一个新的程序,消费两条数据。...,并停止作业 SavePoint 触发 只触发一次 SavePoint SavePoint 暂停 触发一次 SavePoint,并暂停作业 SavePoint 停止 触发一次 SavePoint,并停止作业...SavePoint 停止作业 点击 '智能停止' 或者 'Savepoint停止',触发一次Savepoint,并停止作业。...运维中心查看作业 SavePoint 记录 等作业停止后,在作业快照 Savepoint 栏中,查看到刚刚成功保存的Savepoint 记录。...数据库中查看 SavePoint 信息 在dlink数据库中,也可以查看到保存的Savepoint元数据。
而savepoint的侧重点是“维护”,即Flink作业需要在人工干预下手动重启、升级、迁移或A/B测试时,先将状态整体写入可靠存储,维护完毕之后再从savepoint恢复现场。...savepoint是“通过checkpoint机制”创建的,所以savepoint本质上是特殊的checkpoint。...checkpoint面向Flink Runtime本身,由Flink的各个TaskManager定时触发快照并自动清理,一般不需要用户干预;savepoint面向用户,完全根据用户的需要触发与清理。...savepoint则以二进制形式存储所有状态数据和元数据,执行起来比较慢而且“贵”,但是能够保证portability,如并行度改变或代码升级之后,仍然能正常恢复。...savepoint并不会连续自动触发,所以savepoint没有必要支持增量。 ---- 两阶段提交 本文首发公众号:import_bigdata,大数据技术与架构。
Savepoint的目的是手动备份数据,以便进行调试、迁移、迭代等,是一种协助开发者的支持功能。...综合这两方面的因素,Flink提供了Savepoint的机制,允许开发者调试开发有状态的作业。...相比而下,Savepoint机制主要考虑的是:第一,刻意备份,第二,支持修改状态数据或业务逻辑。Savepoint相关操作是有计划的、人为的。开发者要手动触发、管理和删除Savepoint。...可见,Savepoint的数据备份和恢复都有更高的时间和人力成本,Savepoint数据也必须有一定的可移植性,能够适应数据或逻辑上的改动。...具体而言,Savepoint的潜在应用场景有: 我们可以给同一份作业设置不同的并行度,来找到最佳的并行度设置,每次可以从Savepoint中加载原来的状态数据。
Flink Savepoint 3.1 Flink Savepoint 原理 Flink Savepoint 作为实时任务的全局镜像,其在底层使用的代码和Checkpoint的代码是一样的,因为Savepoint...3.2 Flink Savepoint 触发方式 Flink Savepoint 触发方式目前有三种: 使用 flink savepoint 命令触发 Savepoint,其是在程序运行期间触发 savepoint...Savepoint 时,会有一个问题,可能存在触发 Savepoint 失败。...由于 Savepoint 是程序的全局状态,对于某些状态很大的实时任务,当我们触发 Savepoint,可能会对运行着的实时任务产生影响,个人建议如果对于状态过大的实时任务,触发 Savepoint 的时间...当我们从 Savepoint 进行恢复时,需要检查这次 Savepoint 目录文件是否可用。
---- Savepoint Savepoint介绍 Savepoint:保存点,类似于以前玩游戏的时候,遇到难关了/遇到boss了,赶紧手动存个档,然后接着玩,如果失败了,赶紧从上次的存档中恢复,然后接着玩...那么这时候需要执行一次Savepoint也就是执行一次手动的Checkpoint/也就是手动的发一个barrier栅栏,那么这样的话,程序的所有状态都会被执行快照并保存, 当维护/扩容完毕之后,可以从上一次...Savepoint的目录中进行恢复! ...Savepoint VS Checkpoint Savepoint演示 # 启动yarn session /export/server/flink/bin/yarn-session.sh.../savepoint/savepoint-702b87-0a11b997fa70 --class cn.itcast.checkpoint.CheckpointDemo01 /root/ckp.jar
而savepoint的侧重点是“维护”,即Flink作业需要在人工干预下手动重启、升级、迁移或A/B测试时,先将状态整体写入可靠存储,维护完毕之后再从savepoint恢复现场。...savepoint是“通过checkpoint机制”创建的,所以savepoint本质上是特殊的checkpoint。...checkpoint面向Flink Runtime本身,由Flink的各个TaskManager定时触发快照并自动清理,一般不需要用户干预;savepoint面向用户,完全根据用户的需要触发与清理。...savepoint则以二进制形式存储所有状态数据和元数据,执行起来比较慢而且“贵”,但是能够保证portability,如并行度改变或代码升级之后,仍然能正常恢复。...savepoint并不会连续自动触发,所以savepoint没有必要支持增量。
四、Savepoint:这才是Flink真正的“时间机器”Checkpoint是自动挡Savepoint是手动挡+倒车影像1️⃣Savepoint不是备份,是“可控未来”我以前也以为Savepoint就是个...如果你没有Savepoint:停任务清状态重跑数据全乱如果你有Savepoint:展开代码语言:BashAI代码解释flinksavepointhdfs:///flink/savepoints.../改代码→指定Savepoint→重启数据无感,业务无知,老板无感知。...3️⃣新版本对Savepoint的几个“人性化改进”支持非对齐Checkpoint的Savepoint支持状态schema演进对RocksDB状态恢复速度更友好这点对长期跑的任务来说,价值非常高。...状态后端、Savepoint这些东西:平时不显山露水出事的时候,能救命
Savepoint学习完Checkpoint之后,我们再来了解下另一种快照——Savepoint。Savepoint是依据checkpoint机制创建的一致性镜像。...有了这个前提条件之后,我们就可以使用命令来操作Savepoint了。...Checkpoint与Savepoint区别这是面试最常见的问题之一,有了checkpoint,为什么还需要savepoint?或者说两者之间有什么区别?...Savepoint主要用于有计划的手动运维,例如升级Flink版本。它的创建、删除操作都需要用户手动执行。下面是官方文档给出的Checkpoint和Savepoint支持的操作。...操作标准Savepoint原生Savepoint对齐Checkpoint非对齐Checkpoint更换状态后端✓xxxStateProcessorAPI(写)✓xxxStateProcessorAPI(
my_savepoint1; INSERT INTO table1 VALUES (2); -- s2 SAVEPOINT my_savepoint2; INSERT...INTO table1 VALUES (3); -- rollback to s2 ROLLBACK TO SAVEPOINT my_savepoint2; SELECT *...; -- rollback to s1 ROLLBACK TO SAVEPOINT my_savepoint1; SELECT * FROM table1;...-- shows only row 1 COMMIT; 1.1 执行SAVEPOINT my_savepoint; 在执行时,由ProcessUtility模块执行DefineSavepoint完成DDL...1.2 执行ROLLBACK TO SAVEPOINT my_savepoint; 【DDL】:标记事务块状态。
什么是Savepoint和Checkpoint Savepoint 是一项可让我们为整个流应用程序生成”某个时间”点快照的能力。...保存点包含两个主要元素: 首先,Savepoint 包括一个包含(通常是很大的)二进制文件的目录,该二进制文件表示在 Savepoint和Checkpoint 生成镜像时流应用程序的整个状态 一个(相对较小的...Savepoint和Checkpoint的3个不同点 Savepoint 和 Checkpoint 是 Apache Flink 作为流处理框架所特有的两个功能。...相反,Savepoint 的主要目标是充当手动备份之后重启、恢复暂停作业的方法。 2.2 实现 Checkpoint 和 Savepoint 在实现上也有不同。Checkpoint 的设计轻量并快速。...相反,Savepoint 是由用户手动创建和管理的(即,调度、创建、删除)。 3. 何时使用 Savepoint ?
Flink 为作业的容错提供 Checkpoint 和 Savepoint 两种机制。...图片Savepoint 是一种特殊的 Checkpoint,实际上它们的存储格式也是一致的,它们主要的不同在于定位。...Checkpoint 是为 Flink runtime 准备的,Savepoint 是为 Flink 用户准备的。...Savepoint 是全量的,不支持增量的。...而 Savepoint 并不会连续地触发,而且比起效率,Savepoint 更关注的是可移植性和版本兼容性。