在 CentOS 上升级 ZooKeeper 版本,一般步骤如下(以二进制包方式安装为例,最常见):
echo stat | nc 127.0.0.1 2181
# 或
zkServer.sh version
ps -ef | grep zookeeper
which zkServer.sh
通常目录类似:
/opt/zookeeper
/usr/local/zookeeper
cp -r /opt/zookeeper /opt/zookeeper_bak
cp -r /data/zookeeper /data/zookeeper_bak
/data/zookeeper是dataDir,以你zoo.cfg为准
cat /opt/zookeeper/conf/zoo.cfg
以 3.9.2 为例(可换成你需要的版本):
cd /opt
wget https://downloads.apache.org/zookeeper/zookeeper-3.9.2/apache-zookeeper-3.9.2-bin.tar.gz
tar -zxvf apache-zookeeper-3.9.2-bin.tar.gz
mv apache-zookeeper-3.9.2-bin zookeeper-new
⚠️ 一定要用 -bin 包(已编译)
/opt/zookeeper/bin/zkServer.sh stop
确认已停止:
ps -ef | grep zookeeper
mv /opt/zookeeper /opt/zookeeper-old
ln -s /opt/zookeeper-new /opt/zookeeper
好处:回滚方便
rm /opt/zookeeper
ln -s /opt/zookeeper-old /opt/zookeeper
只复制 bin、lib:
cp -r zookeeper-new/bin /opt/zookeeper/
cp -r zookeeper-new/lib /opt/zookeeper/
cp /opt/zookeeper-old/conf/zoo.cfg /opt/zookeeper/conf/
重点看:
dataDirdataLogDirtickTimeinitLimitsyncLimit大版本升级(如 3.4 → 3.8)建议看官方升级文档
/opt/zookeeper/bin/zkServer.sh start
查看日志:
tail -f /opt/zookeeper/logs/zookeeper.log
验证版本:
echo stat | nc 127.0.0.1 2181
如果是 ZooKeeper 集群:
ZooKeeper 3.8+ 需要 JDK 8+
java -version
不要手动删除 version-2 目录
# 停止
zkServer.sh stop
# 备份
cp -r zookeeper zookeeper_bak
# 下载解压
tar -zxvf apache-zookeeper-x.x.x-bin.tar.gz
# 替换
mv zookeeper zookeeper-old
ln -s zookeeper-new zookeeper
# 启动
zkServer.sh start
如果你能提供:
我可以给你 更精确的升级方案(包括 systemd 方式)。