标识不受支持的投影
从 9.1 版到 9.2 版,Vertica 已移除对以下投影的支持:
- 9.1 版:具有不同 SELECT 和 ORDER BY 子句的投影伙伴实例。所有投影伙伴实例必须以相同的顺序指定列。具有不合规伙伴实例的投影将被 Vertica 数据库认为不安全。
- 9.2 版:预联接和范围分段投影。如果表的唯一超投影属于这些投影类型之一,则该投影也被认为不安全。
如果您从 9.1 之前的 Vertica 版本升级,请运行由 Vertica 提供的升级前脚本,检查您的数据库中是否存在不受支持的投影。如果您升级 Vertica 9.1 或更高版本,则不需要运行此脚本。此脚本检查您当前的数据库并将其分析和建议发送到标准输出。如果此脚本识别到不受支持的投影,则会列出它们。如果此脚本找到具有不同 SELECT 和 ORDER BY 子句的投影伙伴实例,它还会生成一个部署脚本。此脚本会对这些投影进行补救,使其符合系统 K-safety 的要求。
重要
如果升级时遇到不受支持的投影,很可能会失败。然后,您必须恢复到以前的安装。升级前脚本下载
从以下位置下载升级前脚本 identify_unsupported_projections.sh
:
https://www.vertica.com/pre-upgrade-script/
升级前要求
-
Vertica 8.x 或更高版本
-
有足够的磁盘空间可用于存放生成的输出(磁盘空间因数据库大小不同而异,例如,如果编录大小 < 5GB,则为 4GB)。
-
已经为了处理脚本和 DDL 开销而增加了
SYSDATA
资源池的maxmemorysize
。 -
群集中的所有节点都已启动。
语法
在数据库运行时,在其服务器节点之一上执行升级前脚本:
./identify_unsupported_projections.sh
[ ‑U username ]
[ ‑w password ]
[ ‑p port ]
[ ‑d path ]
[ ‑s temp‑schema ]
参数
推荐用法
-
对安装的 Vertica 运行升级前脚本。
-
评估脚本输出中是否存在不受支持的投影。
-
如果检测到不受支持的投影,请执行以下一项或多项操作:
-
移除预联接和范围分段投影。
-
使用不同的 SELECT 和 ORDER BY 子句修复所有投影:运行部署脚本,或手动修改不合规的投影,以便所有伙伴实例都有相同的选择列表和排序。
-
-
再次运行升级前脚本,以确认所有问题都已解决。如果是这样,Vertica 将返回以下消息:
Congratulations! No unsafe projections detected
否则,重复步骤 2-4。
部署脚本
如果升级前脚本检测到具有不同 SELECT 和 ORDER BY 子句的投影伙伴实例,它会生成一个用于执行以下任务的部署脚本:
-
为不受支持的投影提供补救措施。
-
对不具有最新状态的新投影和现有投影进行刷新。
补救措施因投影类型不同而异:
注意
Vertica 始终在实时聚合投影伙伴实例的 SELECT 和 ORDER BY 子句中强制执行相同的列顺序,因此可以安全地忽略这些。估计开销
- 升级前脚本:根据数据库大小,需要运行一小时或更长时间。
- 部署文件:对所有需要刷新的投影(包括所有替换投影)调用 Vertica 元函数
REFRESH
。重要
无论表大小如何,刷新操作都应该相对较快。为了修补不受支持的投影,REFRESH
通过复制其源伙伴实例的存储容器来填充新的投影伙伴。
处理失败的升级
如果升级由于不受支持的投影而失败,则必须恢复到以前的 Vertica 安装: