当发生网络或者备份介质的问题时,归档进度缓慢或者卡住会对 OceanBase 数据库的哪些操作产生影响。
归档要求每一条 observer 日志都被备份出去,因此会对其他业务产生影响,以达成将每条日志备份出去的目标。
日志归档对业务的影响主要由系统参数 backup_log_archive_option 来控制。
您可以通过如下语句调整 backup_log_archive_option 参数。
obclient> ALTER SYSTEM SET backup_log_archive_option = 'optional compression= enable';
- MANDATORY:备份优先,日志归档过慢可能会导致停写。
- OPTIONAL:写入优先,写入可能会导致日志归档断流。
- COMPRESSION:支持 ENABLE、DISABLE、LZ4_1.0、ZSTD_1.3.8,默认为 ENABLE,使用压缩算法 LZ4_1.0。
可能受到日志归档影响的业务有以下几种:
Clog 回收 Clog 不全必然会造成归档不连续,影响恢复能力。OceanBase 数据库的 Clog 日志是在日志盘使用量达到 80% 时开始回收。在开启归档的情况下,Clog 的日志回收还受制于
backup_log_archive_option参数的设置,当设置为mandatory时表示归档优先,即日志在归档之前不能回收。GC(垃圾回收)在执行
DROP、TRUNCATE TABLE等命令时,OceanBase 数据库只对schema进行了删除,但是sstable表空间需要依赖 GC 机制来进行物理删除。在开启归档的情况下,表/分区的 GC 还受制于backup_log_archive_option参数的设置。backup_log_archive_option = mandatory:表/分区的 GC 需要等归档完成。
backup_log_archive_option = optional:通过参数 gc_wait_archive 来控制归档对 GC 的影响。
- gc_wait_archive = true,GC 需要等待归档完成才能执行。
- gc_wait_archive = false,GC 最多等 30 分钟。
迁移复制
迁移复制是指分区副本由机器 A 迁移/复制到机器 B,为保证新迁移副本也可以做归档并且是跟原归档机器连续。在迁移复制过程中,需要将未归档日志完整拷贝到新机器,因此需要获取到归档进度。全局索引 全局索引类似于迁移复制,实际上是由于需要拷贝新副本导致,全局索引也需要参考归档进度,当归档状态为初始状态时,会卡住全局索引创建。删除列减列是归档对 V2.x OceanBase 独有影响,其他版本不存在。当归档进度获取不到或者归档进度为初始值时,可能会影响到减列 DDL。
适用版本
OceanBase 数据库 V2.x、V3.x 版本。