这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
升级后
完成群集上 Vertica 服务器软件包的升级后,仍有许多任务。
必需任务
可选任务
1 - 使用预聚合数据重新构建分区投影
如果您在早期版本(10.0.x 之前的版本)中已使用预聚合数据创建投影(例如,LAP 和 TopK 投影),并且已使用 GROUP BY 子句对锚表进行了分区,则它们的 ROS 容器很容易被各种 DML 和 ILM 操作损坏。在这种情况下,必须重新构建投影:
-
在数据库上运行元函数 REFRESH。如果 REFRESH 检测到投影存在问题,将返回故障消息。例如:
=> SELECT REFRESH();
REFRESH
-----------------------------------------------------------------------------------------------------
Refresh completed with the following outcomes:
Projection Name: [Anchor Table] [Status] [ Refresh Method] [Error Count]
"public"."store_sales_udt_sum": [store_sales] [failed: Drop and recreate projection] [] [1]
"public"."product_sales_largest": [store_sales] [failed: Drop and recreate projection] [] [1]
"public"."store_sales_recent": [store_sales] [failed: Drop and recreate projection] [] [1]
(1 row)
Vertica 还会将消息记录到 vertica.log
:
2020-07-07 11:28:41.618 Init Session:ox7fabbbfff700-aoo000000oosbs [Txnl <INFO> Be in Txn: aoooooooooo5b5 'Refresh: Evaluating which projection to refresh'
2020-07-07 11:28:41.640 Init Session:ex7fabbbfff7oe-aooooeeeeoosbs [Refresh] <INFO> Storage issues detected, unable to refresh projection 'store_sales_recent'. Drop and recreate this projection, then refresh.
2020-07-07 11:28:41.641 Init Session:Ox7fabbbfff700-aooooeooooosbs [Refresh] <INFO> Storage issues detected, unable to refresh projection 'product_sales_largest'. Drop and recreate this projection, then refresh.
2020-07-07 11:28:41.641 Init Session:Ox7fabbbfff700-aeoeeeaeeeosbs [Refresh] <INFO> Storage issues detected, unable to refresh projection 'store_sales_udt_sum'. Drop and recreate this projection, then refresh.
-
使用 EXPORT_OBJECTS 或 EXPORT_TABLES 导出这些投影的 DDL。
-
丢弃这些投影,然后按照导出的 DDL 中的定义重新创建它们。
-
运行 REFRESH。Vertica 将使用新的存储容器重新构建这些投影。
2 - 验证编录内存消耗
Vertica 9.2 及更高版本显著降低了数据库编录消耗的内存量。升级后,检查每个节点上的编录内存消耗情况,以验证升级后重构的编录是否正确。如果给定编录的内存消耗与早期数据库中的内存消耗一样大或更大,请重新启动主机节点。
已知问题
某些操作可能会显著增加编录内存消耗。例如:
要重构数据库编录并减少其内存占用,请重新启动数据库。
3 - 重新安装软件包
在大多数情况下,当您在运行升级脚本后首次重新启动数据库时,Vertica 会自动重新安装所有默认软件包。但是,一个或多个软件包有时可能会无法正确重新安装。
要验证 Vertica 是否已成功重新安装所有软件包:
-
在升级后重新安装数据库。
-
输入正确的密码。
如果任何软件包未能重新安装,Vertica 会发出一条消息,指明未安装的软件包。在这种情况下,请使用选项 --force-reinstall
运行 admintools 命令 install_package
:
$ admintools -t install_package -d db-name -p password -P pkg-spec --force-reinstall
选项
示例
强制重新安装默认软件包:
$ admintools -t install_package -d VMart -p 'password' -P default --force-reinstall
强制重新安装一个软件包,flextable
:
$ admintools -t install_package -d VMart -p 'password' -P flextable --force-reinstall
4 - 将捆绑包元数据写入编录
Vertica 在内部将物理表数据与捆绑包内容的元数据一起存储在捆绑包中。查询优化器使用捆绑包元数据来查找和提取给定查询所需的数据。
Vertica 将捆绑包元数据存储在数据库编录中。这在 Eon 模式中特别有用:优化器可以在本地编录中找到此元数据,而不是从远程 (S3) 存储中提取它。这最大限度地减少了 S3 读取,并促进了更快的查询计划和整体执行。
Vertica 在以下两种情况下将捆绑包元数据写入编录:
-
更改表内容的任何 DML 操作,例如 INSERT
、UPDATE
或 COPY
。Vertica 将捆绑包元数据写入新的或已更改的表数据的编录中。DML 操作对现有表数据的捆绑包元数据没有影响。
-
对现有数据,作为 Vertica 元函数
DO_TM_TASK
的实参调用函数 UPDATE_STORAGE_CATALOG
。您可以将编录更新操作的范围缩小到特定的投影或表。如果未指定范围,则该操作将应用于整个数据库。
重要
在升级到 Vertica 9.2.1 及任何更高版本后,您只需对现有数据调用一次 UPDATE_STORAGE_CATALOG
。所有新数据或更新数据的捆绑包元数据始终自动写入编录。
例如,以下 DO_TM_TASK
调用将捆绑包元数据写入表 store.store_sales_fact
中的所有投影上:
=> SELECT DO_TM_TASK ('update_storage_catalog', 'store.store_sales_fact');
do_tm_task
-------------------------------------------------------------------------------
Task: update_storage_catalog
(Table: store.store_sales_fact) (Projection: store.store_sales_fact_b0)
(Table: store.store_sales_fact) (Projection: store.store_sales_fact_b1)
(1 row)
验证捆绑包元数据
您可以查询系统表
STORAGE_BUNDLE_INFO_STATISTICS
以确定哪些投影在数据库编录中具有无效捆绑包元数据。例如,以下查询的结果显示,数据库编录中的投影 inventory_fact_b0
和 inventory_fact_b1
元数据无效:
=> SELECT node_name, projection_name, total_ros_count, ros_without_bundle_info_count
FROM v_monitor.storage_bundle_info_statistics where ros_without_bundle_info_count > 0
ORDER BY projection_name, node_name;
node_name | projection_name | total_ros_count | ros_without_bundle_info_count
------------------+-------------------+-----------------+-------------------------------
v_vmart_node0001 | inventory_fact_b0 | 1 | 1
v_vmart_node0002 | inventory_fact_b0 | 1 | 1
v_vmart_node0003 | inventory_fact_b0 | 1 | 1
v_vmart_node0001 | inventory_fact_b1 | 1 | 1
v_vmart_node0002 | inventory_fact_b1 | 1 | 1
v_vmart_node0003 | inventory_fact_b1 | 1 | 1
(6 rows)
最佳实践
仅建议 Eon 用户使用 UPDATE_STORAGE_CATALOG
更新数据库编录。企业用户不太可能从该更新中看到明显的性能改进。
调用 UPDATE_STORAGE_CATALOG
可能会产生相当大的开销,因为更新过程通常需要大量代价高昂的 S3 读取。Vertica 建议不要对整个数据库运行此操作,而是考虑采用增量方法:
5 - 升级流式数据传输调度程序实用程序
如果您已将 Vertica 与流式数据传输应用程序(例如 Apache Kafka)集成在一起,则必须在更新 Vertica 后更新流式数据传输调度程序实用程序。
在命令提示符下输入以下命令:
/opt/vertica/packages/kafka/bin/vkconfig scheduler --upgrade --upgrade-to-schema schema_name
多次运行升级任务没有效果。
有关调度程序实用程序的详细信息,请参考调度程序工具选项。