南大通用GBase 8a什么情况下升级后无法不丢数据的回退

GBase 8a升级是很常见的操作,但如果升级后,用户的数据发生变动的内容,是新版本才有的,就不能无损回退到原有版本了。

如果你升级前做了完整 的备份,包括程序和数据,那么肯定能回退,这个场景不在本文讨论范围内。

前提

不丢数据的回退。如果允许丢数据,那么无需考虑。

场景1,V8升级V9,元数据被合并了

在V8版本里,表的元数据(metadata目录下),每个列也是单独保存的,而在V9版本里,合并成了1个文件。

对于V8升级上来的表,如果发生了dml/ddl等操作,则该表的元数据会合并,否则会保持原有状态。这带来个问题,就是如果从V8生就到V9,且数据有了变动,将【无法回退】到V8了,因为数据格式不再兼容。

场景2:tabieId从32位升级到了64位版本,新建了表

早期的GBase只支持32位的表编号,实际也就2亿个。新版本已经改成支持64位。如果升级的版本正好是32,目标版本是支持64,则一旦升级,所有新建的表,有可能超过了32位的上限,此时回退,会导致这些表无法正常访问。老版本是不能识别64位的表ID的。

目前已知的就这两个情况。