关于前滚(roll forward)和回滚(roll back)

本文详细解释了Oracle数据库中rollforward和rollback的概念及其工作原理。rollforward用于将已提交但未同步到数据文件的更改应用到数据库,而rollback则撤销未提交的更改,确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于前滚(roll forward)和回滚(roll back) 2009-07-27 21:07:53

分类: Oracle

1:roll forward  :   将已经写入redo log file 中但是没有写入datafile中的提交与未提交的数据写入数据文件 。 属于实例恢复,一般在数据库开启的时候进行。

2:rollback :          在数据库开启之后,oracle会查找redo log file中记录的commit maker ,根据undo block中的内容将它回滚到一致的状态。

在一个事务发生的时候, Oracle会先将对应的redo 写到log buffer, 再生成相应的undo, 将undo 的redo写到redo log buffer,再对当前的数据块做变更,redo log buffer在一定的条件下写到redo log file,在用户commit的时候, 系统会将当前log buffer中的所有的redo entry都写到redo log file中, 不管是不是当前事务产生的redo, 同时会将当前commit的commit marker也写到redo log file中.

对应与上面的情况, commit已经发出, 可能正在写redo log, 当时commit marker还没写,这样在做instance recovery的时候会将这些redo log先forward到buffer cache中, datablock 与undo block都forward到buffer cache中, 再检查没有commit的事务, 将这些事务rollback, 我们上面的第一个问题, 因为对应的commit marker没有写到redo log file中, 这样对应的事务就是没有commit的事务, 系统会根据undo block中的内容将其回滚到一个一致的状态

### Kubernetes 中滚动更新回滚的实现方法 滚动更新是一种逐步替换旧版本 Pod 的机制,确保在更新过程中服务不中断。Kubernetes 通过 Deployment 控制器来实现滚动更新,允许用户定义更新策略,例如每次更新的副本数量。在滚动更新过程中,Kubernetes 会逐步创建新版本的 Pod,并在确认新 Pod 正常运行后终止旧 Pod。这种机制确保了应用程序的高可用性连续性[^3]。 回滚是 Kubernetes 提供的一种版本恢复机制,当新版本出现问题时,可以恢复到之前稳定运行的版本。Kubernetes 会在每次更新时记录 Deployment 的配置变更,并将其保存为修订版本(revision)。用户可以通过查看历史修订版本来决定回滚的目标版本,并使用命令执行回滚操作[^4]。 #### 实现滚动更新的命令示例 滚动更新可以通过 `kubectl set image` 命令实现,例如: ```bash kubectl set image deployment/my-deployment nginx=nginx:1.21 ``` 此命令会触发 Deployment 的滚动更新流程,逐步替换旧版本的 Pod。 #### 查看滚动更新状态 可以使用以下命令查看滚动更新的进度状态: ```bash kubectl rollout status deployment/my-deployment ``` #### 回滚操作示例 回滚可以通过 `kubectl rollout undo` 命令实现,例如: ```bash kubectl rollout undo deployment/my-deployment ``` 如果需要回滚到特定的修订版本,可以先使用以下命令查看历史修订版本: ```bash kubectl rollout history deployment/my-deployment ``` 然后使用以下命令回滚到指定的版本: ```bash kubectl rollout undo deployment/my-deployment --to-revision=2 ``` #### Deployment 配置示例 以下是一个 Deployment 的 YAML 配置示例,展示了如何定义滚动更新策略: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 3 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: nginx image: nginx:1.20 ports: - containerPort: 80 ``` 在该配置中,`strategy` 字段定义了滚动更新策略,`maxSurge` 表示最多可以创建的超出期望副本数的 Pod 数量,`maxUnavailable` 表示在更新过程中最多允许不可用的 Pod 数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值