当前的ActiveMQ在使用中经常触发已知BUG导致应用系统出现故障,需要升级已修复的最新版本。本文主要记录如何更新升级ActiveMQ到最新版本并且保留持久化数据,以下所有操作需要在全部主机节点上执行。 当前生产使用的ActiveMQ版本为5.17.2并有持久化数据若干,如下图所示:
解决方案
1.关闭当前ActiveMQ
我们首先要关闭所有节点上的ActiveMQ应用。
[root@yunweixia.com ~]# ps aux|grep activemq root 2502 0.2 0.0 17864 700 ? Sl 06:35 0:01 /root/activemq/bin/linux-x86-64/wrapper /root/activemq/bin/linux-x86-64/wrapper.conf wrapper.syslog.ident=ActiveMQ wrapper.pidfile=/root/activemq/bin/linux-x86-64/./ActiveMQ.pid wrapper.daemonize=TRUE wrapper.lockfile=/var/lock/subsys/ActiveMQ root 2504 5.4 2.3 4932112 375300 ? Sl 06:35 0:33 java -Dactivemq.home=../.. -Dactivemq.base=../.. -Djavax.net.ssl.keyStorePassword=password -Djavax.net.ssl.trustStorePassword=password -Djavax.net.ssl.keyStore=../../conf/broker.ks -Djavax.net.ssl.trustStore=../../conf/broker.ts -Dcom.sun.management.jmxremote -Dorg.apache.activemq.UseDedicatedTaskRunner=false -Djava.util.logging.config.file=logging.properties -Dactivemq.conf=../../conf -Dactivemq.data=../../data -Djava.security.auth.login.config=../../conf/login.config -Xms1024m -Xmx1024m -Djava.library.path=../../bin/linux-x86-64/ -classpath ../../bin/wrapper.jar:../../bin/activemq.jar -Dwrapper.key=wEVJiZv2mxAloU0Z -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=2502 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleApp org.apache.activemq.console.Main start root 2714 0.0 0.0 112808 964 pts/1 S+ 06:46 0:00 grep --color=auto activemq [root@yunweixia.com ~]# cd /root/activemq/bin/linux-x86-64/ [root@yunweixia.com linux-x86-64]# ./activemq stop Stopping ActiveMQ Broker... Stopped ActiveMQ Broker.
2.备份当前ActiveMQ
[root@yunweixia.com ~]# mv /root/activemq/ /root/activemq-202309/
3.上传最新版本ActiveMQ
访问https://activemq.apache.org/components/classic/download/页面,记录本文时最新版本为ActiveMQ 5.17.5,下载该版本并上传到所有服务器节点。
[root@yunweixia.com ~]# ll total 2566272 -rw-r--r--. 1 root root 2578473406 Sep 13 05:17 activemq100-20230912.tar.gz drwxr-xr-x. 11 root root 204 Nov 29 2022 activemq-202309 -rw-------. 1 root root 1549 Sep 9 04:16 anaconda-ks.cfg -rw-r--r--. 1 root root 49380448 Sep 13 06:55 apache-activemq-5.17.5-bin.tar.gz
4.解压最新版本
将最新版本解压后,修改为和备份前旧版本ActiveMQ相同的路径,减少修改环境变量的步骤。
[root@yunweixia.com ~]# tar -xzvf apache-activemq-5.17.5-bin.tar.gz [root@yunweixia.com ~]# mv apache-activemq-5.17.5 activemq
5.替换和更新
(1)替换/conf目录中的文件
将新上传解压的ActiveMQ目录中的/conf目录内文件全部删除。
[root@yunweixia.com ~]# rm -rf activemq/conf/*
拷贝旧版本/conf目录中所有内容到新上传解压的ActiveMQ软件的相同目录。
[root@yunweixia.com ~]# cp -arf /root/activemq-202309/conf/* /root/activemq/conf/
(2)更新持久化数据
拷贝旧版本/data/kahadb目录到新上传解压的ActiveMQ软件的/data目录。
[root@yunweixia.com ~]# cp -arf /root/activemq-202309/data/kahadb/ /root/activemq/data/
6.启动ActiveMQ
[root@yunweixia.com ~]# cd /root/activemq/bin/linux-x86-64/ [root@yunweixia.com linux-x86-64]# ./activemq start Starting ActiveMQ Broker...
7.访问验证
访问http://ip:8161,账号密码记录在/conf/jetty-realm.properties文件。登录后可见ActiveMQ版本已升级为5.17.5并且保留持久化数据。如下所示:
全文总结
本文仅适用于小版本升级,如果需要跨版本升级,例如从5.17.5升级到5.18.2可能存在启动失败的情况,需要调整/conf/activemq.xml文件。
原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/solutions/activemq-upgrade-retain-critical-data-guide.html