25-6-17-云计算复习8

好的!下面我为你准备了两道题,分别考察:

1. **VDL 收窄场景**(日志写入不均衡,导致 VDL 被限制)
2. **日志乱序写入场景**(检测你是否能正确判断连续一致的 CPL)

------

# ✅ 题 1:Aurora VDL 收窄题(5 分)

------

### 📘 场景说明:

主实例 P 写入以下日志:

```
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
```

规则:

- 奇数编号日志 → 属于 PG1
- 偶数编号日志 → 属于 PG2

Aurora 的写入成功条件是:**该日志被成功写入 PG 的 6 个副本中至少 4 个副本**

------

### 📥 写入成功情况如下:

| LSN | 写入副本数 |
| ---- | ---------- |
| 2001 | ✅ 6 |
| 2002 | ✅ 6 |
| 2003 | ✅ 4 |
| 2004 | ✅ 4 |
| 2005 | ✅ 3 ❌ |
| 2006 | ✅ 4 |
| 2007 | ✅ 4 |
| 2008 | ✅ 1 ❌ |

------

## 💬 问题:

### **1. [2 分]**

请计算 PG1 的 CPL 值,并说明原因。

PG1存储奇数日志,最后一个奇数的写入日志是2007,因此是2007

### **2. [2 分]**

请计算 PG2 的 CPL 值,并说明原因。

PG2存储偶数日志,最后一个偶数的写入日志是2006,因此是2006

### **3. [1 分]**

请给出当前系统的 VDL 值,并说明原因。

是2006,因为PG1是2007,PG2是2006,VDL是PG1和PG2的CPL的最小值,因此是2006

------

# ✅ 题 2:Aurora 日志乱序写入题(5 分)

------

### 📘 场景说明:

主实例 P 写入以下日志(按编号顺序):

```
3001, 3002, 3003, 3004, 3005, 3006
```

- 奇数 → 属于 PG1
- 偶数 → 属于 PG2

现在由于网络延迟,日志写入副本的成功情况如下:

| LSN | 写入副本数 |
| ---- | ---------- |
| 3001 | ✅ 6 |
| 3002 | ✅ 6 |
| 3003 | ✅ 4 |
| 3004 | ✅ 2 ❌ |
| 3005 | ✅ 5 |
| 3006 | ✅ 4 |

------

## 💬 问题:

### **1. [2 分]**

请计算 PG1 的 CPL 值(注意乱序影响),并说明理由。

PG1存储奇数日志,最后一个奇数的写入日志是3005,因此是3005

### **2. [2 分]**

请计算 PG2 的 CPL 值,并说明理由。

PG2存储偶数日志,最后一个偶数的写入日志是3006,因此是3006

### **3. [1 分]**

请给出当前系统的 VDL 值,并说明你的推理。

是3005,因为是PG1和PG2的VDL的最小值

------

你可以选择先做题 1 或题 2,也可以两题一起做,我会逐题批改 ✅
👉 回复:“我来写题 1” 或 “我来写两题” 即可!

太好了!你已经掌握了 CPL 连续性的核心概念。现在我们来挑战一题 **带图的 CPL 连续写入可视化题**,帮助你更直观理解 Aurora 的写入过程和 CPL 的计算方式。

------

# ✅ Aurora CPL 连续图题(5 分)

------

### 📘 场景设定:

某 Aurora 数据库将 WAL(日志)切分为两个 PG:

- **PG1:奇数编号日志**
- **PG2:偶数编号日志**

每个 PG 的日志会被写入 6 个副本节点中,**写入成功的条件是:副本数 ≥ 4**

------

### 📊 日志写入表(图形化展现)

下图表示每条日志被写入副本的状态(✅ 表示写入成功,❌ 表示失败):

| 日志编号 | PG 归属 | 副本1 | 副本2 | 副本3 | 副本4 | 副本5 | 副本6 |
| -------- | ------- | ----- | ----- | ----- | ----- | ----- | ----- |
| 4001 | PG1 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 4002 | PG2 | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| 4003 | PG1 | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ |
| 4004 | PG2 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| 4005 | PG1 | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| 4006 | PG2 | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| 4007 | PG1 | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ |

------

## 💬 问题:

### **1. [2 分]**

请计算 PG1 的 CPL 值,并说明 CPL 是如何被中断或延续的。

根据表格,4001,4002,4003,4005,4007写入成功,而PG1存储的是奇数编号日志,因此对应的是4001,4003,4005,4007,因此连续成功的最新日志是4007,因此PG1的CPL是4007

------

### **2. [2 分]**

请计算 PG2 的 CPL 值,并解释为什么不能继续推进。

根据表格,4001,4002,4003,4005,4007写入成功,而PG2存储的是偶数编号日志,因此对应的是4002,因此连续成功的最新日志是4002,因此PG2的CPL是4002.不能推进的理由是,PG2没有更新的连续成功的日志,因为4002的下一个偶数日志4004写入失败了

------

### **3. [1 分]**

请给出当前系统的 VDL,并说明你的推理过程。

是4002,因为取的是PG1和PG2的最小值

------

你可以逐题回答,我会批改。
👉 回复:“我来写第 1 题” 或 “我来写全部题” 即可!

太棒了!现在我们来一道真正压轴的 **Aurora 综合题**,结合你之前学过的所有核心概念,包括:

- ✅ 日志副本写入
- ✅ CPL / VDL 连续性判断
- ✅ AZ(可用区)容灾
- ✅ VDL 收窄场景
- ✅ 写入 quorum(4/6)
- ✅ 跨 PG 数据一致性

------

# 🌟 Aurora 综合题:日志一致性 + 容灾 + VDL 分析(满分 10 分)

------

## 📘 场景设定:

你负责运维一个 Aurora 集群。该集群的数据库日志被划分为两个 Protection Group:

- **PG1(奇数日志)**
- **PG2(偶数日志)**

每个 PG 拥有 **6 个副本,分布在 3 个 AZ 中:AZ1, AZ2, AZ3**
每条日志写入成功的条件是:**写入 ≥4 个副本**

Aurora 会分别计算 PG1 和 PG2 的 **CPL**,再计算出系统的 **VDL = min(PG1_CPL, PG2_CPL)**

------

## 📥 日志编号与写入情况如下:

| 日志编号 | PG归属 | 副本写入成功数 | 所属 AZ 写入失败节点数 |
| -------- | ------ | -------------- | ---------------------- |
| 5001 | PG1 | ✅ 6 | 无 |
| 5002 | PG2 | ✅ 6 | 无 |
| 5003 | PG1 | ✅ 4 | AZ2: 1 副本失败 |
| 5004 | PG2 | ✅ 4 | AZ3: 2 副本失败 |
| 5005 | PG1 | ✅ 3 ❌ | AZ3: 3 副本失败 |
| 5006 | PG2 | ✅ 4 | AZ1: 2 副本失败 |
| 5007 | PG1 | ✅ 4 | AZ1: 2 副本失败 |
| 5008 | PG2 | ✅ 2 ❌ | AZ2: 4 副本失败 ❗️ |

> ⚠️ 注意:日志写入过程中,**AZ 故障不断出现**,影响了部分副本写入成功与否。

------

## 💬 问题(总分 10 分)

------

### **1. [3 分]**

请分别计算 **PG1 和 PG2 的 CPL 值**,并说明 CPL 被中断或推进的原因。

根据表格和题设,可知日志需要4个副本才能写入成功,根据表格,可以得出写入成功的日志编号是:5001,5002,5003,5004,5006,5007

由于PG1存储奇数日志,因此PG1的对应成功日志编号是:5001,5003,5007。由于5003的下一个日志5005写入失败了,因此5007不是最长连续最后写入日志,即CPL因为5005的失败写入而终端,因此最后的连续成功写入日志编号是5003,可得PG1的CPL值是5003.

由于PG2存储偶数日志,因此PG2的对应成功日志编号是:5002,5004,5006。因此5006是最长连续最后写入日志,可得PG2的CPL值是5006

------

### **2. [2 分]**

请计算当前的 **系统 VDL 值**,并说明 VDL 会不会因为某个 PG 写入延迟而收窄。

目前的值是PG1和PG2的CPL最小值,是5003。

VDL会因为某个PG写入延迟而收窄。根据AZ故障不断出现的题设,我们可知在5003时故障了1个副本,5004时故障了2个副本,5006时也故障了2个副本。因此,有可能第三个副本的写入故障实际上是在5007写入之后才出现的,因为更新的日期5007显示写入成功了4个副本,2个副本失败,并且5005的一个失败副本可能并没有实际损坏而实际上是写入延迟。如果上述情况出现,那么随着时间的增加5005的一个失败副本会写入成功,因此PG1的对应成功日志编号将变为是:5001,5003,5005,5007,此时VDL会变成5006。

------

### **3. [3 分]**

假设此时 **AZ3 整区全部故障宕机**,请判断:

- PG1 和 PG2 是否还能继续写入?
- 系统是否能继续对外暴露数据(即维持当前 VDL)?
- 请说明原因。

PG1 和 PG2 是否还能继续写入:取决于损坏情况。由于AZ3整区故障,根据Aurora分配规则,每个区域应该不超过2个节点,并且需要4个节点写入成功。因此,合理的节点分配应该是每个AZ两个副本。如果在AZ3整区故障的情况下AZ1和AZ2仍旧有不小于4个写入成功的日志,那么就能继续写入。但是根据上述分析,我们可知继续写入的可能性较小,因为题目中提到在AZ不断的故障,再加上AZ3的整区故障,写入的成功性将变低。

系统是否能继续对外暴露数据(即维持当前 VDL):考虑目前的VDL5003,其中5003提到在AZ2有一个副本失败,由于AZ3全部故障,因此会增加2个失败副本,使得成功的副本变成3个,导致5003写入失败,因此VDL会随着5003变得不可用而变小,因此无法维持当前VDL。

------

### **4. [2 分]**

如果你是运维工程师,请给出两个优化建议,使得系统在多 AZ 灾难下能更稳定地保持 VDL 推进能力。

1.增加AZ分布,减少AZ故障偶发性对全局造成的影响。例如,可以将6个副本分布在6个AZ中,这样如果AZ的故障偶发,需要3个AZ同时故障才能使其写入失败,这样在假设AZ小概率失败的前提下确保了写入成功率。

2.增加两个R日志R1,R2,分布在AZ中,R1和R2会复制所有经过P的消息日志。这样如果相关消息确实因为AZ故障,我们可以从R日志中恢复它们

------

你可以逐题或全部回答,我会逐题批改 ✅
👉 回复:“我来写第 1 题” 或 “我来写全部题” 即可开始挑战!

~  ~  The   End  ~  ~


 赏 
感谢您的支持,我会继续努力哒!
支付宝收款码
tips
文章二维码 分类标签:归档TypechoAutoUpload
文章标题:25-6-17-云计算复习8
文章链接:https://www.fangshaonian.cn/archives/96/
最后编辑:2025 年 11 月 10 日 18:31 By 方少年
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
(*) 6 + 8 =
快来做第一个评论的人吧~