标识不受支持的投影

从 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 ]

参数

推荐用法

  1. 对安装的 Vertica 运行升级前脚本

  2. 评估脚本输出中是否存在不受支持的投影。

  3. 如果检测到不受支持的投影,请执行以下一项或多项操作:

    • 移除预联接和范围分段投影。

    • 使用不同的 SELECT 和 ORDER BY 子句修复所有投影:运行部署脚本,或手动修改不合规的投影,以便所有伙伴实例都有相同的选择列表和排序。

  4. 再次运行升级前脚本,以确认所有问题都已解决。如果是这样,Vertica 将返回以下消息:

    Congratulations! No unsafe projections detected
    

    否则,重复步骤 2-4。

部署脚本

如果升级前脚本检测到具有不同 SELECT 和 ORDER BY 子句的投影伙伴实例,它会生成一个用于执行以下任务的部署脚本:

  • 为不受支持的投影提供补救措施。

  • 对不具有最新状态的新投影和现有投影进行刷新。

补救措施因投影类型不同而异:

估计开销

  • 升级前脚本:根据数据库大小,需要运行一小时或更长时间。
  • 部署文件:对所有需要刷新的投影(包括所有替换投影)调用 Vertica 元函数 REFRESH

处理失败的升级

如果升级由于不受支持的投影而失败,则必须恢复到以前的 Vertica 安装:

  1. 对于群集上的每个主机,查找并移除 RPM 或 DEB 软件包。

  2. 重新安装早期版本的软件包。

  3. 启动重新安装的数据库并验证它是否正常运行。

  4. 对数据库执行完整备份

  5. 对安装的 Vertica 运行升级前脚本