跳转至

Vertica 集群操作系统更新最佳实践

原文:Updating the Operating System on Vertica Cluster Nodes

概述

Vertica 集群运行在 Linux 操作系统之上,操作系统版本升级或内核更新是基础设施运维中不可避免的任务。本文档总结了 Vertica 集群操作系统更新的最佳实践和操作步骤,帮助您在最小化停机时间的前提下安全完成升级。

操作系统更新前需要评估 Vertica 版本与目标操作系统的兼容性,请参考 Vertica 产品支持生命周期与版本兼容性

升级前备份 (Pre-Upgrade Backup)

在执行任何操作系统更新操作之前,必须对 Vertica 数据库进行完整备份。

备份步骤

  1. 确认集群健康状态
SELECT * FROM health_check;
SELECT node_name, node_state FROM nodes;

确保所有节点处于 UP 状态,且集群无异常告警。

  1. 执行完整备份
# 使用 vbr 工具进行全量备份
vbr --task backup --config-file full_backup.ini
  1. 备份编录
SELECT EXPORT_CATALOG('/path/backup/catalog_export.sql');
  1. 备份配置文件
cp /opt/vertica/config/admintools.conf /path/backup/
cp /etc/vertica/vertica.conf /path/backup/

验证备份

vbr --task listbackup --config-file full_backup.ini

确认备份完成后,记录备份文件的校验和,以便在恢复时验证完整性。

方法一:复刻集群法 (Copy Cluster Approach)

复刻集群法适用于需要最小化停机时间的场景,通过创建一个与原集群配置相同的新集群来完成升级。

操作步骤

  1. 搭建新集群:使用新的操作系统版本部署与原集群相同 Vertica 版本的集群
  2. 数据同步
    # 从原集群导出数据
    vbr --task copycluster --config-file copycluster.ini
    
  3. 切换流量:更新 DNS 或连接串,将应用流量切换到新集群
  4. 验证:确认新集群运行正常,数据完整性无误

适用场景

  • 允许一定量的硬件资源冗余
  • 需要严格控制升级窗口时间
  • 生产环境核心业务集群

方法二:停机升级 (Downtime Upgrade)

停机升级是最直接的升级方式,适用于可接受计划内停机窗口的环境。

操作步骤

  1. 停止 Vertica 服务
admintools -t stop_db -d database_name
  1. 执行操作系统更新
# 以 CentOS/RHEL 为例
sudo yum update -y
# 或
sudo yum upgrade kernel
  1. 重启节点并验证 OS 版本
uname -r
cat /etc/os-release
  1. 启动 Vertica 数据库
admintools -t start_db -d database_name
  1. 验证集群健康
SELECT * FROM health_check;

适用场景

  • 有明确的维护窗口
  • 测试环境或开发环境
  • 非关键业务集群

方法三:备份恢复法 (Backup Restore Approach)

备份恢复法适用于需要在升级 OS 后重建集群的场景,或需要同时进行 Vertica 版本升级的场景。

操作步骤

  1. 执行完整备份(见上文备份步骤)
  2. 卸载 Vertica
    sudo /opt/vertica/sbin/install_vertica --uninstall
    
  3. 升级操作系统(全新安装或原地升级均可)
  4. 安装 Vertica:在全新的操作系统上安装原版本 Vertica
  5. 恢复数据
    vbr --task restore --config-file full_backup.ini
    
  6. 验证恢复结果
    SELECT COUNT(*) FROM all_tables;
    SELECT health_check();
    

适用场景

  • 操作系统需要大版本升级(如 RHEL 7 升级到 RHEL 8)
  • 同步进行 Vertica 版本升级
  • 需要更换硬件或迁移到新环境

滚动升级法 (Rolling Upgrade Approach)

对于 Vertica 集群,如果操作系统只需要小版本更新(如内核补丁),可以采用滚动升级的方式,逐个节点进行更新,保持 Vertica 数据库持续运行。

操作步骤

  1. 将节点设置为备用
SELECT SET_SCALING_FACTOR(2);
-- 将目标节点标记为下线

或使用 admintools:

admintools -t db_remove_node -s hostname -d database_name
  1. 执行节点 OS 更新

    sudo yum update -y
    sudo reboot
    

  2. 节点回归集群

admintools -t db_add_node -s hostname -d database_name
  1. 确认节点恢复
SELECT node_name, node_state FROM nodes;
  1. 重复操作:逐个处理集群中所有节点

注意事项

  • 滚动升级期间 K-Safety 会临时降低,确保集群在操作期间有足够的节点容错
  • 如果 K-Safety = 1(默认),集群至少需要 3 个节点才能安全执行滚动升级
  • 每个节点操作完成后,等待 Tuple Mover 完成数据重建,再操作下一个节点

升级后验证 (Post-Upgrade Verification)

无论采用哪种升级方法,升级完成后都应执行以下验证步骤:

  1. 操作系统版本
cat /etc/os-release
uname -r
  1. Vertica 版本
SELECT version();
  1. 集群健康
SELECT * FROM health_check;
SELECT node_name, node_state, node_address FROM nodes;
  1. 关键查询验证
-- 验证数据完整性
SELECT COUNT(*) FROM <key_tables>;
-- 验证查询性能基线
SELECT * FROM <benchmark_query>;
  1. 应用连接测试:确认应用端可以通过 JDBC/ODBC 正常连接和查询

扩展阅读