版本升级#

升级过程对服务的影响:

  • 如果创建的表是单副本,那么在升级过程中是不可以读写的

  • 如果创建的表是多副本,落在升级节点的读请求会有短暂的失败,对写请求会有少量的数据丢失。如果不能容忍短暂的读失败,那么在停止每一个tablet节点前执行下offlineendpoint。如果不能容忍少量写丢失,需要在升级过程中停掉写操作。

1. 升级nameserver#

  • 停止nameserver

    sh bin/start.sh stop nameserver
    
  • 备份旧版本bin和conf目录

  • 下载新版本bin和conf

  • 对比配置文件diff并修改必要的配置,如endpoint、zk_cluster等

  • 启动nameserver

    sh bin/start.sh start nameserver
    
  • 对剩余nameserver重复以上步骤

2. 升级tablet#

  • 停止tablet

    sh bin/start.sh stop tablet
    
  • 备份旧版本bin和conf目录

  • 下载新版本bin和conf

  • 对比配置文件diff并修改必要的配置,如endpoint、zk_cluster等

  • 启动tablet

    sh bin/start.sh start tablet
    
  • 如果auto_failover关闭时得连上ns client执行如下操作恢复数据。其中命令后面的endpoint为重启节点的endpoint

    • offlineendpoint endpoint

    • recoverendpoint endpoint

$ ./bin/openmldb --zk_cluster=172.27.128.31:8090,172.27.128.32:8090,172.27.128.33:8090 --zk_root_path=/openmldb_cluster --role=ns_client
> offlineendpoint 172.27.128.32:8541
offline endpoint ok
> recoverendpoint 172.27.128.32:8541
recover endpoint ok

升级结果确认#

  • showopstatus命令查看所有操作是否为kDone, 如果有kFailed的任务查看日志排查原因

  • showtable查看所有分片状态是否为yes

一个tablet节点升级完成后,对其他tablet重复上述步骤。(必须等到数据同步完才能升级下一个节点)

所有节点升级完成后恢复写操作, 执行showtable命令查看主从offset是否增加

3. 升级java client#

  • 更新pom文件中java client版本号

  • 更新依赖包