JumpServer 如何回退版本?


飞致云 发布于 2023-08-14 / 1418 阅读 / 0 评论 /

一、概述

本文主要介绍在 JumpServer 升级失败或者升级后不满足用户使用场景的情况下如何回退版本。本文档适用于 V2 与 V3 版本。

二、升级前备份

在执行升级操作时会备份 config.txt 配置文件以及 JumpServer 对应的数据库中的 SQL 文件。

也可在备份时手动备份相关文件:

  • 数据库文件备份:jmsctl backup_db 或 mysqldump -h 数据库 IP 或域名 -u 数据库用户名 -p jumpserver (数据库库名) > jumpservre- 版本号-时间 .sql

版本回退必须的两个文件:

  • config.txt:该文件中包含基础的数据库连接信息以及数据库的加密码。

  • jumpserver- 版本号-时间 .sql:该文件中包含了升级之前的数据库中的所有数据。

三、提醒

版本回退因为是根据备份的 SQL 文件进行回退的,所以在升级版本后增加的用户、资产、授权、会话信息等无法同步,请知悉。

四、操作回退

在操作回退先停止 JumpServer 的所有服务。

#JumpServer 服务器上
jmsctl stop

JumpServer 版本回退需要涉及到数据库中数据回退与 JumpServer 服务应用回退。

1、数据库回退

在进行数据库回退时可以选择两种方式进行:通过命令手动进行回退操作与使用 JumpServer 命令工具进行回退。

①、手动回退

1、登录MySQL 数据库主机中或者进入到 MySQL 容器中,连接 MySQL 服务,;

#数据库外置
mysql -h数据库 IP 或域名 -u数据库用户名 -p   
#数据库内置
docker exec -it jms_mysql /bin/bash #数据库的账号与密码在 /opt/jumpserver/config/config.txt 中,或者可进入到容器中执行 env 查看具体的参数
# MARIADB_ROOT_PASSWORD 该参数要根据版本区分,进入容器中查看
 mysql -uroot -p$MARIADB_ROOT_PASSWORD

数据库密码可以查看 JumpServer 配置文件 config.txt 中的数据库部分。

################################# MySQL 配置 ##################################
# 外置 MySQL 需要输入正确的 MySQL 信息, 内置 MySQL 系统会自动处理
# (*) 密码部分不得包含单引号和双引号
#
DB_HOST=mysql
DB_PORT=3306
DB_USER=root
DB_PASSWORD=b27ddf5fdc5ad9f754e62c0f17
DB_NAME=jumpserver

# 如果外置 MySQL 需要开启 TLS/SSL 连接, 参考 https://docs.jumpserver.org/zh/v3/installation/security_setup/mysql_ssl/
#
# DB_USE_SSL=true

2、查看数据库创建命令

#数据库外置与内置

root@jms_mysql:/# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 230559
Server version: 10.6.5-MariaDB-1:10.6.5+maria~focal mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show create database jumpserver;
+------------+------------------------------------------------------------------------+
| Database   | Create Database                                                        |
+------------+------------------------------------------------------------------------+
| jumpserver | CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ |
+------------+------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]>

3、删除原本的数据库(执行改操作前需确保有备份 SQL 文件,谨慎操作

#数据库外置与内置
MariaDB [(none)]> drop database jumpserver;

4、数据库内置时,需要将备份的 SQL 文件复制到 jms_mysql 容器中,然后还原数据库。

#拷贝数据库备份文件到dcoker
[root@Test4LinuxRemoteApp]# docker cp /data/jumpserver/db_backup/jumpserver-v3.10.6-2024-05-15_10:53:54.sql jms_mysql:/opt
Successfully copied 1.52MB to jms_mysql:/opt

5、新建原本的数据库,并还原原本的 SQL 文件。

注:请注意创建数据库的命令;比较新的 MySQL 或 MARIADB 数据库例如:MySQL 8.0 版本时使用 utf8mb3 编码;在比较旧的数据库版本例如:MySQL 5.7 版本时,使用 utf8 编码方式,回退时请注意。

#数据库外置与内置
#复制查询到的创建数据库的命令并执行;
MariaDB [(none)]> CREATE DATABASE `jumpserver` /*!40100 DEFAULT CHARACTER SET utf8mb3 */;
Query OK, 1 row affected (0.001 sec)

MariaDB [(none)]> use jumpserver;
Database changed
MariaDB [jumpserver]> source /root/jumpserver-v3.5.0-8-14.sql;

手动还原数据库完成!

②、JumpServer 命令回退

在 JumpServer 服务器中执行命令工具直接回退数据库。

首选需要手工删除已存在的 JumpServer 数据库,这样可以避免因为升级过程中已创建的新表而给后面升级造成问题。

#数据库外置与内置
MariaDB [(none)]> drop database jumpserver;

使用 JumpServer 命令工具完成数据库回退。

[root@jumpserver-v3 ~]# jmsctl restore_db /root/jumpserver-v3.5.0-8-14.sql

2、服务回退

进入到原版本的安装包目录中,使用启动命令重新启动即可。如删除了原版本的镜像文件,需要重新拉取。

#JumpServer 服务器上的操作
[root@jumpserver-v3 ~]# cd /opt/jumpserver-offline-release-v3.5.0-amd64/
#拉取版本镜像
[root@jumpserver-v3 jumpserver-offline-release-v3.5.0-amd64]# ./jmsctl.sh load_image
#重新启动
[root@jumpserver-v3 jumpserver-offline-release-v3.5.0-amd64]# ./jmsctl.sh start

查看服务启动是否成功

五、验证数据可用性

1、验证版本信息

版本回退成功后,需要查看对应的版本信息【 V2 版本在登陆后的页面左下角查看,V3 在右上角的关于中查看】

2、验证资产数量、授权数量

切换至全局组织中,查看资产与授权的详细数量。【社区版无组织概念,即查看仪表盘页面即可。】

3、验证功能信息

回退成功后,验证功能是否可用。



是否对你有帮助?