PolarDB集群的数据备份是指在某个时间点上对集群的全量数据进行备份,生成一个备份集(快照)。该备份过程采用ROW(Redirect-on-Write)快照机制,直接存储在PolarDB集群的分布式存储系统上。在保存备份时,数据并未被真正复制。而当数据块发生修改时,系统会将历史版本的数据块保留给快照,同时生成一个新的数据块被原数据引用(Redirect)。本文将详细介绍创建备份、删除备份以及在数据库内删除数据时数据块的变化过程。
创建一级备份
在创建一级备份时,该备份集仅引用PolarDB集群内的数据块,实际上并不占用存储空间。而是当数据块发生修改时,将历史版本的数据块转移到备份集中。
示例
假设某PolarDB集群在09:00、10:00和11:00分别创建了数据备份。在创建数据备份之后,集群内数据经历了新增和修改的操作。对此,该集群数据备份的原理说明如下:
时间 | 动作 | 说明 |
时间 | 动作 | 说明 |
09:00 | 创建备份1 | 集群内存在三个数据块A、B、C。此时创建备份1,该备份集引用了集群中的数据块A、B、C,因此实际并不占用存储空间。 |
09:00~10:00 |
| 新增和修改操作时,集群会分配新的数据块分别保存A1、B1、D。原来的数据块A、B会转移到备份1中。 |
10:00 | 创建备份2 | 集群内存在四个数据块A1、B1、C、D。此时创建备份2,该备份集引用了集群中的数据块A1、B1、C、D,因此实际并不占用存储空间。 |
10:00~11:00 |
| 新增和修改操作时,集群会分配新的数据块分别保存C1、E。原来的数据块C会转移到备份2中。 |
11:00 | 创建备份3 | 集群内存在五个数据块A1、B1、C1、D、E。此时创建备份3,该备份集引用了集群中的数据块A1、B1、C1、D、E,因此实际并不占用存储空间。 |
下一个数据备份前 |
| 修改操作时,集群会分配新的数据块分别保存A2、E1。原来的数据块A1、E会转移到备份3中。 |
此后依此类推。 |
删除一级备份
在删除一个备份集时,与该备份集共享的数据块会被转移至相应的数据备份集中,而无用的数据块则会被直接释放。
示例
假设某PolarDB集群存在三个数据备份:备份1、备份2和备份3,其包含的数据块示例如下:
备份1:包含数据块A、B、C
数据块A、B为自有数据块
数据块C则来源于备份2
备份2:包含数据块A1、B1、C、D
数据块C为自有数据块
数据块A1则来源于备份3
数据块B1、D来源于主版本
备份3:包含数据块A1、B1、C1、D、E
数据块A1、E为自有数据块
数据块B1、C1、D来源于主版本
当前示例数据来源于创建备份示例。
主版本为PolarDB集群内当前的数据版本,包含最新的所有数据块。
那么删除数据备份的原理说明如下:
在删除备份1时,数据块A和B被直接释放。
在删除备份3时,数据块A1被备份2所需,因此被转移至备份2中,数据块E被直接释放。
在删除备份2时,数据块A1、C被直接释放。
删除数据库内数据
在PolarDB集群内删除数据表时,主版本将释放对应表所包含的数据块,并将这些数据块保留至备份集中。
主版本为PolarDB集群内当前的数据版本,包含最新的所有数据块。
示例
假设某PolarDB集群有一个备份1,包含数据块A、B、C、D、E,均来源于主版本。
在某个时刻,PolarDB集群释放了数据块B、C、D、E。此时,数据库块B、C、D、E将被转移至备份1,因此会出现在主版本数据清理后存储空间大小上涨的情况。
当备份1过期后,数据块B、C、D、E才会被真正释放,此时存储空间将减少。
- 本页导读 (1)
- 创建一级备份
- 示例
- 删除一级备份
- 示例
- 删除数据库内数据
- 示例