历史版本4 :5.X-6.0.5备份升级回退方案 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

有些情况下,用户可能需要恢复到升级前的版本。

文档提供升级后回退至原版本,再进行升级的操作步骤。

2. 确认数据库类型编辑

进入「管理系统>系统管理>常规」可以看到是否使用了外接数据库,如下图所示:

2022-09-14_11-19-43.png

  • 如果显示「待配置」:则数据库类型为内置数据库

  • 如果显示「已配置」:则数据库类型为外置数据库

3. 使用内置数据库的回退操作编辑

3.1 升级前备份

回退使用内置数据库的工程,需要用户在升级前进行以下备份:

关闭 FineBI 工程,在路径%FineBI%\webapps\webroot下拷贝 webroot 文件夹(备份的 webroot 文件不能放在 FineBI 的安装路径下)

注:如果 webroot 比较大(超过4G),备份需要的时间太长,可以只备份 webroot 下的 WEB-INF 文件夹;如果 WEB-INF 也非常大(超过2G),备份需要的时间还是特别长,可以只备份 WEB-INF 下的 dashboards、embed、lib、plugins、reportlets、resources 文件夹。

3.2 回退步骤

1)关闭 BI 服务器

2)替换工程

若在升级前使用内置数据库,将备份的旧工程 webroot 文件,替换%FineBI%\webapps路径下的 webroot 文件即可,如下图所示:

2022-09-14_15-14-22.png

注:如果只备份了WEB-INF,就恢复备份的WEB-INF,启动工程;如果只备份了 WEB-INF 下的 dashboards、embed、lib、plugins、reportlets 文件夹,那么就恢复对应的文件夹。

3)重启 BI 服务器。

3.3 升级

详情参考:6.0升级

4. 使用外置数据库回退操作编辑

4.1 方法一(推荐)

4.1.1 升级前备份

方法一要求用户在升级前进行过以下备份:

1)关闭 FineBI 工程,在路径%FineBI%\webapps\webroot下拷贝 webroot 文件夹(备份的 webroot 文件不能放在 FineBI 的安装路径下)

注:如果 webroot 比较大(超过 4G),备份需要的时间太长,可以只备份 webroot 下的 WEB-INF 文件夹;如果 WEB-INF 也非常大(超过 2G ),备份需要的时间还是特别长,可以只备份 WEB-INF 下的 dashboards、embed、lib、plugins、reportlets 文件夹。

2)手动备份好外接数据库,备份数据库的密码需要和之前数据库的一致。

4.1.2 回退步骤

1)关闭 BI 服务器。

2)替换工程

将备份的旧工程 webroot 文件,替换%FineBI%\webapps路径下的 webroot 文件,如下图所示:

2022-09-14_15-14-22.png

注:如果只备份了 WEB-INF,就恢复备份的 WEB-INF;如果只备份了 WEB-INF 下的 dashboards、embed、lib、plugins、reportlets文件夹,那么就恢复对应的文件夹。

3)恢复外接数据库

若为新建一个数据库备份外接数据库,即备份恢复的数据库名、用户名、密码等与之前的数据库名不一致,则修改%FineBI%/webapps/webroot/WEB-INF/config路径下的 db.properties ,根据备份的数据库的连接信息对文件进行修改,如下图所示:

33.png

若备份恢复的数据库的数据库名、用户名、密码等跟之前的数据库的名字一样,则不需要修改其他的配置。

4)启动  FineBI 完成回退。

4.2 方法二

4.2.1 升级前备份

使用方法二需要用户在升级前进行过以下备份:

1)进入「管理系统>智能运维>备份还原」,分别对「平台配置 、报表模板、BI模板、Jar包、插件」进行「手动备份」,如下图所示:

1611646188572529.png

4.2.2 回退步骤

1)关闭 FineBI 工程。

2)恢复报表模板。

%FineBI%/webapps/webroot/WEB-INF目录下的 reportlets 文件夹删除;在%FineBI%/webapps/webroot/backup/reportlets/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 reportlets 文件夹复制到%FineBI%/webapps/webroot/WEB-INF目录下。

3)恢复 BI 模板。

%FineBI%/webapps/webroot/WEB-INF目录下的 dashboards 文件夹删除;在%FineBI%/webapps/webroot/backup/dashboards/manual下,根据文件夹的名字(备份时间),找到备份的内容,将dashboards 文件夹复制到%FineBI%/webapps/webroot/WEB-INF目录下;

4)恢复 jar包。

%FineBI%/webapps/webroot/WEB-INF目录下的 lib 文件夹删除;

%FineBI%/webapps/webroot/backup/jar/manual下,根据文件夹的名字(备份时间),找到备份的内容,将lib文件夹复制到%FineBI%/webapps/webroot/WEB-INF目录下;

5)恢复插件。

%FineBI%/webapps/webroot/WEB-INF目录下的 plugins 文件夹删除;

%FineBI%/webapps/webroot/backup/plugins/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 plugins 文件夹复制到%FineBI%/webapps/webroot/WEB-INF目录下;

6)恢复外置数据库。

%FineBI%/webapps/webroot/backup/config/manual下,根据文件夹的名字(备份时间),找到备份的内容,将备份的config.zip 解压得到的 finedb,替换%FineBI%/webapps/webroot/WEB-INF/embed下的 finedb 文件,如下图所示:

1601027166260835.png

%FineBI%/webapps/webroot/WEB-INF/config下的 db.properties 文件删除;此文件删除后,工程启动就读内置 finedb 的内容。

7)启动工程,完成回退,用户可以根据需要,重新配置外接数据库。

4.3 升级

详情参考:6.0升级

5. 集群编辑

5.1 备份还原

5.1.1 使用文件服务器

5.1.1.1 方法一(推荐使用)

【备份】

1)关闭工程所有的节点;

2)备份各个节点的webroot文件夹;

注:如果webroot比较大(超过4G),备份需要的时间太长,各节点下可以只备份webroot下的WEB-INF文件夹;如果WEB-INF也非常大(超过2G),备份需要的时间还是特别长,可以只备份WEB-INF下的lib、plugins文件夹。

3)备份文件服务器上的WEB-INF文件夹;

注:如果WEB-INF比较大(超过2G),备份需要的时间太长,文件服务器上可以只备份WEB-INF下的dashboards、reportlets文件夹。

4)数据库端备份外置数据库。备份的数据库的密码要跟之前的外置数据库一样。

【还原】

1)各节点恢复之前备份的webroot;

注:如果只备份了WEB-INF,就恢复备份的WEB-INF;如果只备份了WEB-INF下的lib、plugins文件夹,那么就恢复对应的文件夹;

2)恢复文件服务器上的WEB-INF文件夹;

如果只备份了WEB-INF下的dashboards、reportlets文件夹,那么就恢复对应的文件夹;

3)恢复外置数据库;

  • 备份恢复的数据库的数据库名、用户名等跟之前的不一样,恢复时需要修改以下配置:

修改集群各节点%FineBI%/webapps/webroot/WEB-INF/config路径下的db.properties,根据备份的数据库的连接信息进行修改

1601363507979903.png

  • 备份恢复的数据库的数据库名、用户名、密码等跟之前的数据库的名字一样,则不需要修改db.properties的配置;

4)依次启动集群各节点。

5.1.1.2 方法二

【备份】

1)进入「管理系统>智能运维>备份还原」,分别对「平台配置 、报表模板、BI模板、Jar包、插件」进行「手动备份」,如下图所示:

1611646188572529.png

【还原】

备份的内容在文件服务器上,到文件服务器上 WEB-INF 同层级目录下找到 backup 文件夹。

1)恢复报表模板。

将文件服务器 WEB-INF 目录下的 reportlets 文件夹删除;

在文件服务器backup/reportlets/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 reportlets 文件夹复制到文件服务器的 WEB-INF 目录下;

2)恢复 BI模板。

将文件服务器 WEB-INF 目录下的 dashboards 文件夹删除;

在文件服务器backup/dashboards/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 dashboards 文件夹复制到文件服务器的 WEB-INF 目录下;

3)恢复jar包。

将集群各节点/webapps/webroot/WEB-INF目录下的 lib 文件夹删除;

backup/jar/manual下,根据文件夹的名字(备份时间),找到备份的内容,将lib文件夹复制到集群各节点%FineBI%/webapps/webroot/WEB-INF目录下。

4、恢复插件。

将集群各节点下的 plugins 文件夹删除;

在文件服务器backup/plugins/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 plugins 文件夹复制到集群各节点%FineBI%/webapps/webroot/WEB-INF目录下。

5、恢复外置数据库。

在文件服务器backup/config/manual下,根据文件夹的名字(备份时间),找到备份的内容,将备份的 config.zip 解压得到的 finedb ,替换集群一个节点%FineBI%/webapps/webroot/WEB-INF/embed下的 finedb 文件;

2022-09-14_15-29-37.png

将集群这个节点下的%FineBI%/webapps/webroot/WEB-INF/config下的 db.properties 文件删除。(此文件删除后,工程启动就读内置 finedb 的内容了)

6、启动集群的这个节点。

7、启动成功后,配置外接数据库。

8、将这个节点%FineBI%/webapps/webroot/WEB-INF/config下的 db.properties 文件,拷贝到集群其他节点的FineBI/webapps/webroot/WEB-INF/config下。

7、启动其他的节点。

5.1.2 使用节点间同步

5.1.2.1 方法一(推荐使用)

【备份】

1)关闭工程所有的节点;

2)备份各个节点的 webroot 文件夹;

注:如果webroot比较大(超过4G),备份需要的时间太长,各节点下可以只备份webroot下的WEB-INF文件夹;如果WEB-INF也非常大(超过2G),备份需要的时间还是特别长,可以只备份WEB-INF下的dashboards、lib、plugins、reportlets文件夹。

3)数据库端备份外置数据库。备份的数据库的密码要跟之前的外置数据库一样。

【还原】

1)集群各节点恢复之前备份的 webroot。

注:如果只备份了WEB-INF,就恢复备份的WEB-INF;如果只备份了WEB-INF下的dashboards、lib、plugins、reportlets文件夹,那么就恢复对应的文件夹。

2)恢复外置数据库;

  • 备份恢复的数据库的数据库名、用户名等跟之前的不一样,恢复时需要修改以下配置:

修改集群各节点%FineBI%/webapps/webroot/WEB-INF/config路径下的 db.properties ,根据备份的数据库的连接信息进行修改

1601363507979903.png

  •  备份恢复的数据库的数据库名、用户名、密码等跟之前的数据库的名字一样,则不需要修改db.properties的配置;

3)依次启动集群各节点。

5.1.2.2 方法二

【备份】

1)进入「管理系统>智能运维>备份还原」,分别对「平台配置 、报表模板、BI模板、Jar包、插件」进行「手动备份」,如下图所示:

1611646188572529.png

【还原】

备份的内容在集群主节点的FineBI/webapps/webroot/backup下。

1)恢复报表模板。

将集群各节点%FineBI%/webapps/webroot/WEB-INF目录下的 reportlets 文件夹删除;

%FineBI%/webapps/webroot/backup/reportlets/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 reportlets 文件夹复制到集群各节点%FineBI%/webapps/webroot/WEB-INF目录下。

2、恢复BI模板。

将集群各节点%FineBI%/webapps/webroot/WEB-INF目录下的 dashboards 文件夹删除;

%FineBI%/webapps/webroot/backup/dashboards/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 dashboards 文件夹复制到集群各节点%FineBI%/webapps/webroot/WEB-INF目录下;

3、恢复 jar 包。

将集群各节点%FineBI%/webapps/webroot/WEB-INF目录下的 lib 文件夹删除;

%FineBI%/webapps/webroot/backup/jar/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 lib 文件夹复制到集群各节点%FineBI%/webapps/webroot/WEB-INF目录下;

4、恢复插件。

将集群各节点%FineBI%/webapps/webroot/WEB-INF目录下的 plugins 文件夹删除;

%FineBI%/webapps/webroot/backup/plugins/manual下,根据文件夹的名字(备份时间),找到备份的内容,将 plugins 文件夹复制到集群各节点%FineBI%/webapps/webroot/WEB-INF目录下;

5)恢复外置数据库。

%FineBI%/webapps/webroot/backup/config/manual下,根据文件夹的名字(备份时间),找到备份的内容,将备份的 config.zip 解压得到的 finedb,替换%FineBI%/webapps/webroot/WEB-INF/embed下的 finedb 文件,如下图所示:

%FineBI%/webapps/webroot/WEB-INF/config下的 db.properties 文件删除;此文件删除后,工程启动就读内置 finedb 的内容。

6)启动集群的这个节点;

7)启动成功后,配置外接数据库。

8)将这个节点%FineBI%/webapps/webroot/WEB-INF/config下的db.properties文件,拷贝到集群其他节点的%FineBI%/webapps/webroot/WEB-INF/config下。

9)启动其他的节点。

5.2 升级

5.2.1 升级前准备

1)额外开启端口:50050、50051、50100、50101、50200,若不开启会导致启动失败,现象是 BI 进程直接消失;

2)原开启进程分离参数的集群需要关闭该参数('DistributedOptimizationConfig.spiderConfig.spider_engine_mode','local')为开启状态,删除该参数即可;

3)修改参数:INSERT INTO `fine_conf_entity`(`id`, `value`) VALUES ('RedisConfig.connectionTimeout', '100000');

4)修改参数:INSERT INTO `fine_conf_entity`(`id`, `value`) VALUES ('RedisConfig.soTimeout', '100000');

5.2.2 升级

1)关闭工程所有的节点;

2)在主节点(存放更新的db数据的节点)执行升级工具,执行步骤见文档:6.0升级

3)单个节点可以正常访问之后,将运行升级工具节点的 /webroot 目录下的 WEB-INF、scripts、upm 拷贝到其他节点;如果WEB-INF比较大的话,可以只拷贝WEB-INF下的dashboards、lib、plugins、reportlets文件夹;

4)启动其他节点,检查集群状态界面正常(一般是一个节点sync,另外都是recover,因为数据正在同步中),即可正常访问工程;

5)修改 nginx 配置,所有请求都配成随机转发。可忽略此步骤 6.0 自动随机转发。

详见:抽取集群nginx配置

6.0 抽取集群 nginx 配置示例文件 nginx.conf:nginx.zip

抽取集群请求均为随机转发,较 5.1 集群配置简单了很多;配置时IP、端口需要修改为自身环境对应的 IP 和端口;
需要根据具体环境修改的地方:

2022-09-14_13-56-42.png

2022-09-14_13-56-42.png

修改后保存配置。

cd /usr/nginx/sbin  #进入sbin目录  
./nginx -s reload #启动nginx

示例文件详情:

#user  root;
worker_processes  auto;
#worker_cpu_affinity  auto;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '[$time_local] $remote_addr => $upstream_addr \n'
                      '"$request" $http_x_forwarded_for $status \n\n';
           #           '$status $body_bytes_sent "$http_referer" '
           #          '"$http_user_agent" "$http_x_forwarded_for" $upstream_addr';                 
   
    access_log  logs/access.log  main;
    sendfile        on;
    # tcp_nopush     on;
    # keepalive_timeout  0;
    keepalive_timeout  5s;
    types_hash_max_size 2048;
    # gzip  on;
    # gzip_disable "MSIE [1-6].";
    client_header_buffer_size    5120k;
    large_client_header_buffers  4 5120k;
    client_max_body_size 300M;

    #随机转发请求
    upstream BI.cluster.com {
        hash "$cookie_fine_login_users - $http_sessionid";  
        server 192.168.5.213:8090 max_fails=15 fail_timeout=5s;
        server 192.168.5.214:8090 max_fails=15 fail_timeout=5s;
        server 192.168.5.207:8080 max_fails=15 fail_timeout=5s;
        server 192.168.5.208:8080 max_fails=15 fail_timeout=5s;
        check interval=2000 rise=5 fall=5 timeout=1000 type=http;
        check_http_send "GET /webroot/decision/system/health HTTP/1.0\r\n\r\n"; # 检查请求
        check_http_expect_alive http_2xx http_3xx;
    }

  
    upstream WBS.com { 
        server 192.168.5.214:48888 max_fails=15 fail_timeout=300s;
     server 192.168.5.213:48888 max_fails=15 fail_timeout=5s;
      server 192.168.5.207:48888 max_fails=15 fail_timeout=5s;
     server 192.168.5.208:48888 max_fails=15 fail_timeout=5s;
        ip_hash;
    }

    server {
        listen       80;                #访问nginx端口
        server_name  192.168.5.214;     #访问nginxip
        underscores_in_headers on;

        location /status {
            healthcheck_status html;
        } 


        location / {
            proxy_http_version 1.1;
            proxy_pass http://BI.cluster.com;
            proxy_next_upstream http_500 http_502 http_503 http_504 http_403 http_404 http_429 error timeout invalid_header non_idempotent;
            proxy_redirect off;
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Connection "";
            proxy_connect_timeout    20;
            proxy_read_timeout       1000;
            proxy_send_timeout       300;
            proxy_buffer_size 64k;
            proxy_buffers   32 32k;
            proxy_busy_buffers_size 128k;
        }    

        # charset koi8-r;
        # access_log  logs/host.access.log  main;
        # error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {  
        #FineReport:38889 FineBI:48889
        listen 48889;
        server_name 192.168.5.214;
        location / {
            #add_header Access-Control-Allow-Origin *; 
            proxy_http_version 1.1;
            proxy_pass http://WBS.com;
            proxy_connect_timeout 120;
            proxy_read_timeout 600;
            proxy_send_timeout 600;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }