本文主要说明在 OceanBase 数据 V2.x 和 V3.x 版本中,如果发生机器宕机后,再执行 DDL 的影响。
主要围绕以下几个场景进行介绍:
场景 1:DDL 表的分区所在的 OBServer 宕机。
场景 2:租户内非 DDL 表的分区的 OBServer 宕机。
场景 3:集群内其他机器宕机。
宕机对 DDL 的影响
| 功能分类 | 具体DDL操作 | 场景1 | 场景2 | 场景3 |
|---|---|---|---|---|
| 索引操作 | 添加索引 | 影响 | 不影响 | 不影响 |
| 索引操作 | 删除索引 | 不影响 | 不影响 | 不影响 |
| 索引操作 | 重命名索引 | 不影响 | 不影响 | 不影响 |
| 列操作 | 添加列 | 不影响 | 不影响 | 不影响 |
| 列操作 | 删除列 | 影响 | 影响 | 影响 |
| 列操作 | 重命名列 | 不影响 | 不影响 | 不影响 |
| 列操作 | 重排列 | 不影响 | 不影响 | 不影响 |
| 列操作 | 设置列默认值 | 不影响 | 不影响 | 不影响 |
| 列操作 | 修改列类型 | 不影响 | 不影响 | 不影响 |
| 列操作 | 设置列约束为 NULL | 不影响 | 不影响 | 不影响 |
| 列操作 | 设置列约束为 NOT NULL | 不影响 | 不影响 | 不影响 |
| 生成列操作 | 添加 virtual 生成列 | 不影响 | 不影响 | 不影响 |
| 生成列操作 | 删除 virtual 生成列 | 不影响 | 不影响 | 不影响 |
| 生成列操作 | 添加 stored 的生成列 | 不影响 | 不影响 | 不影响 |
| 生成列操作 | 删除 stored 的生成列 | 不影响 | 不影响 | 不影响 |
| 外键操作 | 添加外键 | 不影响 | 不影响 | 不影响 |
| 外键操作 | 删除外键 | 不影响 | 不影响 | 不影响 |
| 表操作 | 创建表 | 影响 (ob_create_table_strict_mode = off 可以避免) | 影响 | 不影响 |
| 表操作 | 删除表 | 不影响 | 不影响 | 不影响 |
| 表操作 | 修改行格式 | 不影响 | 不影响 | 不影响 |
| 表操作 | 修改块大小 | 不影响 | 不影响 | 不影响 |
| 表操作 | 重命名表 | 不影响 | 不影响 | 不影响 |
| 表操作 | 修改压缩算法 | 不影响 | 不影响 | 不影响 |
| 表操作 | 优化表空间 | 不影响 | 不影响 | 不影响 |
| 分区操作 | 添加分区 | 不影响 | 不影响 | 不影响 |
| 分区操作 | 删除分区 | update index 影响 | 不影响 | 不影响 |
| 分区操作 | Truncate 分区 | update index 影响 | 不影响 | 不影响 |
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。