一、升级AAbi的操作步骤以及细节 1.将包传到BI服务器的目录下

Bi8.18目前有5个包,包地址:lts-8.18 出包记录 - POPO文档 (netease.com)

http://59.111.178.240:20280/lts818-240531-102958/youdata_installer.lts818.tar.part_aahttp://59.111.178.240:20280/lts818-240531-102958/youdata_installer.lts818.tar.part_abhttp://59.111.178.240:20280/lts818-240531-102958/youdata_installer.lts818.tar.part_achttp://59.111.178.240:20280/lts818-240531-102958/youdata_installer.lts818.tar.part_adhttp://59.111.178.240:20280/lts818-240531-102958/youdata_installer.lts818.tar.part_aehttp://59.111.178.240:20280/lts818-240531-102958/md5.txt

这五个包建议新建一个目录存放起来,比如/Netease/lts815下

docker26的版本升级脚本也传到bi服务器上,名称为docker_installer.centos.docker26.sh,这个脚本建议赋予可执行权限后放到BI服务器的/youdata/installer目录下。

2.解压8.15版本包并load镜像

上述的8.15版本包已经放在了/Netease/lts815下(这个目录根据实际情况来放,可以看下/下的youdata目录软链的哪个目录,建议放在磁盘空间大的目录下,防止磁盘打满)。

然后解压包: #包已经放到了/Netease/lts815

cd /Netease/lts815
cat youdata_installer.lts818.tar.part_a*|tar xvf -

上述命令执行完后,会将bi8.15版本的脚本和配置文件还有镜像包都放在installer目录下

cd installer
docker load -i youdata.tar.xz     (这个过程会比较慢,因为是将bi 8.18版本的镜像都拉取下来,需要6-7min的时间)#上述操作如果是双机版本,两台机器都要操作上述命令

3.有数停服

停服命令

docker service scale ydswarm_web=0
docker service scale ydswarm_schedule=0

可以将第三步放到停服后操作,也可以停服前操作

4.备份nginx配置文件和8.15版本配置文件

升级8.18需要备份原先旧版本(这里假设是8.11版本)的目录下的config文件夹(/youdata/config), nginx配置文件(/youdata/installer/nginx.conf.tpl) 旧版本配置文件(/youdata/installer/docker-stack.ydswarm811.yaml,单机的话就是youdata85.yaml,双机的是ydswarm85.yaml)

4.1、备份config目录

将815的config文件拷贝到/youdata下,并将85的config文件做了备份

cd /youdata
mv config config.bakxxxx(日期)
cd /Netease/lts815/installer
cp -r config /youdata

4.2、备份nginx配置文件 将85的nginx配置文件进行备份,并将815的nginx配置文件做更改之后传到/youdata/installer下

cd /youdata/installer
mv nginx.conf.tpl nginx.conf.tpl.bakxxxx
cp nginx.conf.tpl.bakxxxx /Netease/lts815/installervimdiff nginx.conf.tpl nginx.conf.tpl.bakxxxx (比对81585nginx配置的不同,并将815的配置文件进行更改保存)
cp nginx.conf.tpl /youdata/installer

4.3、备份docker swarm yaml文件 将815的有数配置文件和85配置文件比对更改保存后传到/youdata/installer下,这个操作很费时,需要仔细比对。

cd /youdata/installer
cp docker-stack.ydswarm85.yaml /Netease/lts815/installer
cd /Netease/lts815/installer
vimdiff docker-stack.ydswarm85.yaml docker-stack.ydswarm815.yaml (这一步相当关键,一定得比对好配置,将815配置文件更改好,除了镜像版本是8.15外,其余配置最好和85保持一致,除了capture组件和一些老版本配置815不支持具体更改细节到时协助支持)
cp docker-stack.ydswarm815.yaml /youdata/installer

以上3个备份操作是可以在停服前操作的,也可以停服后操作,数据库备份需要在停服后操作,以防还在写入新的数据。 5.数据库备份 数据库如果是业务自己使用的mysql就让业务自己备份下,如果用的是youdata的数据库 (可以通过ydswarm85.yaml的DB字段看下mysql是不是youdata的) 单机BI执行以下脚本

sh /youdata/scripts/backup_single.sh
ll /youdata/db_data_backup

双机BI执行以下脚本

docker cp /youdata/scripts/backup_common.sh mysql-paas-youdata-1:/

docker exec mysql-paas-youdata-1 bash /backup_common.sh 127.0.0.1 3306 youdata youdata /usr/local/mysql/bin/

docker cp  mysql-paas-youdata-1:/youdata/db_data_bak/ /youdata/

ll /youdata/db_data_backup

停服后数据库备份操作,备份好后开始删除堆栈

docker stack ls #看下有哪些堆栈docker stack rm youdata #将原先的85服务堆栈删除

6.启动有数服务并更新web数据 启动有数服务

cd /youdata/installer
dsd docker-stack.youdata818.yaml youdata
dv ls 
docker service ls 

更新web数据

docker ps|grep web (得到web容器ID)
docker exec -it web容器ID /bin/bash#进入到容器后
node src/app/upgrade/upgrade.js#会报错,看下当前版本是多少,这里8.11会报8.12

node src/app/upgrade/upgrade.js 8.12 8.18(更新到8.18版本)
exit #退出容器
cd /youdata/scriptsbash status_reset.sh ydswarm

等待执行完毕,然后dv ls检查下服务都起来没

dv ls 
docker service ls 

7、升级验证

curl localhost/api/dash/hello 

看下返回值版本是不是8.15的 都没问题就可以进入前端界面验证下功能了 二、Bi版本回退方案 1.将原先的85配置文件还原

cd /youdata
mv config config.815bak
mv config.bakxxxx config #将原来的85版本config文件还原
cd /youdata/installermv nginx.conf.tpl nginx.conf.tpl.815bak
mv nginx.conf.tpl.bakxxxx nginx.conf.tpl #将原先的85版本nginx配置文件还原#85yaml配置文件不用动,还是在/youdata/installer目录下

2.停服和数据库备份

docker service scale ydswarm_web=0
docker service scale ydswarm_schedule=0

停服后业务需要用之前备份好的数据库sql文件,将原先备份的数据库删掉

drop database 数据库名;
create database 数据库名;
use 数据库名;
source 备份好的sql文件;

如果是备份了多个库,重复执行上述操作

docker stack rm ydswarm

删除原先的818堆栈

3.启动原先的85配置yaml文件

cd /youdata/installer
docker stack deploy -c docker-stack.ydswarm85.yaml ydswarm

再重新启动原先的85版本服务

docker service ls 

检查服务是不是都起来了

curl localhost/api/dash/hello 

看下返回是不是85版本#在进入前端页面验证下