一、迁移大概流程。
1、观测原始机器的中间件情况,版本、安装方式、路径、配置文件。
2、保证版本的一致性避免出现不确认因数。
3、迁移jumpserver前先启动数据库
二、检查要迁移的服务
2.1、mysql
2.1.1、检查mysql版本
查询包存放路径,可以从配置文件中查看/etc/my.cnf。 默认路径是/var/lib/mysql
rpm -qa | grep mysql
查看版本
[root@test mysql]# mysql --version
mysql Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
2.1.2、下载安装包
##被迁移机器上的数据库是rpm安装,不是tar包也不是二进制安装。
##经过查询发现是Red Hat系统版本的包,centos7也能用。还是以被迁移机器环境为主。
2、jumpserver
2.2.1、查询jumpserver版本
方法一、在/opt查看包
Linux中/opt是什么意思?
/opt目录用于存放独立的第三方软件包,这些软件包通常不是操作系统的核心组件,也不会与系统自带的软件产生冲突。
它提供了一个标准化和规范化的位置,用于安装那些不属于操作系统发行版或软件包管理系统的软件。
/opt目录常用于存放一些大型、复杂或商业软件,例如某些专有软件、多个版本的软件或特定用途的工具等。
通过将这些软件安装到/opt目录,可以避免与操作系统或其他软件包的冲突,并使这些软件可以独立地进行管理和更新。
[root@test opt]# ll
total 11453
drwxr-xr-x 7 root root 227 Jun 5 12:12 jumpserver-offline-installer-v2.23.0-amd64-23
-rw-r--r-- 1 root root 911 Sep 9 2022 jumpserver-offline-installer-v2.23.0-amd64-23.tar.gz
方法二、docker查看版本
[root@test opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jumpserver/web v2.23.0 dsfasfafadsd 24 months ago 276MB
jumpserver/koko v2.23.0 dsfasfafadsd 24 months ago 714MB
jumpserver/lion v2.23.0 dsfasfafadsd 24 months ago 351MB
jumpserver/core v2.23.0 dsfasfafadsd 24 months ago 1.93GB
jumpserver/magnus v2.23.0 dsfasfafadsd 24 months ago 162MB
jumpserver/mysql 5 dsfasfafadsd 2 years ago 448MB
jumpserver/redis 6-alpine dsfasfafadsd 2 years ago 32.3MB
2.2.2、下载jumpserver包
查看历史安装包
收索指定安装包
选择安装方式,被迁移机器使用的是离线,就选择离线
三、部署服务
3.1、部署mysql
3.1.1、解压-执行
tar xf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
yum -y install mysql-community-*.rpm
安装完后不启动,进行数据同步拷贝
3.1.2、拷贝/etc/my.cof
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
log-bin=mysql-bin
server-id=8220
read-only=0
#binlog-do-db=jumpserver
#replicate-do-db=jumpserver #备份的数据库
#binlog-ignore-db=mysql #不进行备份
#binlog-ignore-db=information_schema #不进行备份
#binlog-ignore-db=performance_schema #不进行备份
#binlog-ignore-db=sys #不进行备份
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[client]
default-character-set=utf8
socket=/data/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/data/mysql/mysql.sock
3.1.3、做免密
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.1
验证
ssh root@192.168.1.
3.1.4、rsync 数据库同步
#将目标数据同步到本地
-a
:归档模式,保留文件的属性(如时间戳、权限等)。-v
:详细模式,显示更多信息。-z
:压缩传输,可以加快传输速度。--progress
:显示进度条,方便查看同步进度。
rsync -avz --progress root@192.168.1.1:/var/lib/mysql/ /data/mysql
同步完成后进行权限对比,避免小问题
3.1.5、启动mysql
删除/data/mysql路径下的auto.cnf文件
启动
systemctl start mysqld
##auto.cnf里面是mysql ID 重启重新获取
3.2、部署jumpserver
3.2.1 解压部署包
tar -zxvf jumpserver-offline-installer-v2.23.0-amd64-23.tar.gz
cd jumpserver-offline-installer-v2.23.0-amd64-23
3.2.2 修改配置文件
修改数据保存路径
VOLUME_DIR=/data/jumpserver
DOCKER_DIR=/data/docker
修改mysql信息 修改为外部mysql
########################################
USE_EXTERNAL_MYSQL=1
DB_HOST=192.168.1.1
DB_PORT=3306
DB_USER=root
DB_PASSWORD=Fit2closd
DB_NAME=jumpserver
cat config-example.txt
# 以下设置如果为空系统会自动生成随机字符串填入
## 迁移请修改 SECRET_KEY 和 BOOTSTRAP_TOKEN 为原来的设置
## 完整参数文档 https://docs.jumpserver.org/zh/master/admin-guide/env/
## 安装配置, 可以使用华为云加速下载, arm64 用户需要注释掉 DOCKER_IMAGE_PREFIX
# DOCKER_IMAGE_PREFIX=-south-1
VOLUME_DIR=/data/jumpserver
DOCKER_DIR=/data/docker
SECRET_KEY=
BOOTSTRAP_TOKEN=
LOG_LEVEL=ERROR
## MySQL 配置, USE_EXTERNAL_MYSQL=1 表示使用外置 MySQL, 请输入正确的 MySQL 信息
USE_EXTERNAL_MYSQL=1
DB_HOST=192.168.1.1
DB_PORT=3306
DB_USER=root
DB_PASSWORD=Fit2closd
DB_NAME=jumpserver
## Redis 配置, USE_EXTERNAL_REDIS=1 表示使用外置 Redis, 请输入正确的 Redis 信息
USE_EXTERNAL_REDIS=0
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
## Compose 项目设置, 如果 192.168.250.0/24 网段与你现有网段冲突, 请修改然后重启 JumpServer
COMPOSE_PROJECT_NAME=jms
COMPOSE_HTTP_TIMEOUT=3600
DOCKER_CLIENT_TIMEOUT=3600
DOCKER_SUBNET=192.168.25.0/24
## IPV6 设置, 容器是否开启 ipv6 nat, USE_IPV6=1 表示开启, 为 0 的情况下 DOCKER_SUBNET_IPV6 定义不生效
USE_IPV6=0
DOCKER_SUBNET_IPV6=fc200::/64
## 访问配置
HTTP_PORT=80
SSH_PORT=2222
MAGNUS_MYSQL_PORT=33060
MAGNUS_MARIADB_PORT=33061
MAGNUS_REDIS_PORT=63790
## HTTPS 配置, 参考 https://docs.jumpserver.org/zh/master/admin-guide/proxy/ 配置
# USE_LB=1
# HTTPS_PORT=443
# SERVER_NAME=your_domain_name
# SSL_CERTIFICATE=your_cert
# SSL_CERTIFICATE_KEY=your_cert_key
## Nginx 文件上传大小
CLIENT_MAX_BODY_SIZE=4096m
## Task 配置, 是否启动 jms_celery 容器, 单节点必须开启
USE_TASK=1
## XPack, USE_XPACK=1 表示开启, 开源版本设置无效
USE_XPACK=0
RDP_PORT=3389
MAGNUS_POSTGRE_PORT=54320
## Core 配置, Session 定义, SESSION_COOKIE_AGE 表示闲置多少秒后 session 过期, SESSION_EXPIRE_AT_BROWSER_CLOSE=true 表示关闭浏览器即 session 过期
# SESSION_COOKIE_AGE=86400
SESSION_EXPIRE_AT_BROWSER_CLOSE=true
## 组件配置
CORE_HOST=http://core:8080
JUMPSERVER_ENABLE_FONT_SMOOTHING=true
TCP_SEND_BUFFER_BYTES=4194304
TCP_RECV_BUFFER_BYTES=6291456
## 终端使用宿主 HOSTNAME 标识
SERVER_HOSTNAME=${HOSTNAME}
## 额外的配置
CURRENT_VERSION=
3.2.3 修改/etc/docker/daemon.json文件
data-root:数据保存路径
"base" : docker网络
###################
将目标机的文件保存到本地
cat /etc/docker/daemon.json
{
"default-address-pools" : [
{
"base" : "172.31.0.0/16",
"size" : 24
}
],
"data-root": "/data/docker"
}
3.2.4、启动jumpserver
cd jumpserver-offline-installer-v2.23.0-amd64-23
安装
./ install
启动
./ start
卸载
./ uninstall
mysql主备搭建
1、数据库部署完后,分别将将数据同步到主节点和备节点上。
2、主备都要删除auto.cnf文件,并重启获取自己独有的ID
3、主节点IP 192.168.1.1 备用节点IP 192.168.1.2
#################
#主节点执行的操作#
#################
#创建slave用户,允许192.168.1.2通过slave用户访问
mysql> CREATE USER 'slave'@'192.168.1.2' IDENTIFIED WITH mysql_native_password BY 'Fit2clouxuat';
#授权
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.2';
#关闭备状态
mysql> stop slave;
#更新数据,更新状态
mysql> flush privileges;
#查看数据库状态
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 | 8213300 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#确认File值和Position值在备节点上要使用
#################
#备节点执行的操作#
#################
#重新设置slave
mysql> reset slave;
#执行
CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='slave',
MASTER_PASSWORD='Fit2clouxuat',
MASTER_LOG_FILE='mysql-bin.000008',
MASTER_LOG_POS=8213300;
#启动数据库
mysql> start slave;
查看备节点状态
show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: 192.168.1.1
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000008
Read_Master_Log_Pos: 8213300
Relay_Log_File: relay-log.000004
Relay_Log_Pos: 8213516
Relay_Master_Log_File: mysql-bin.000008
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 8213300
Relay_Log_Space: 8213889
Until_Condition: None
#######################
#都是yes表示没问题
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
########################
#验证
#在主节点上创建数据库,查看备节点是否同步
#查看数据库
show databases;
#创建数据库
create database lizhe;
#删除数据库
DROP DATABASE lizhe;
遇到的问题
删除 jumpserver和mysql 重新部署时遇见如下问题.
问题一:Error: No such image
问题:
Error: No such image: jumpserver/mysql:5
Error: No such image: jumpserver/web:v2.23.0
Error: No such image: jumpserver/core:v2.23.0
Error: No such image: jumpserver/koko:v2.23.0
Error: No such image: jumpserver/lion:v2.23.0
Error: No such image: jumpserver/magnus:v2.23.0
###############
原因:
出现/var/lib/docker/ 下的内容因挂载没删除
[root@test lib]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 64K 3.9G 1% /dev/shm
tmpfs 3.9G 17M 3.9G 1% /run
/dev/sda1 40G 8.4G 32G 21% /
/dev/sdb1 100G 7.2G 93G 8% /data
tmpfs 783M 0 783M 0% /run/user/0
overlay 40G 8.4G 32G 21% /var/lib/docker/overlay2/8544ea9c785899aea9ceaf4ca07e96/merged
overlay 40G 8.4G 32G 21% /var/lib/docker/overlay2/37fea9c57834c6eea9cea9a9c03570/merged
overlay 40G 8.4G 32G 21% /var/lib/docker/overlay2/308c419750801df8b2eeaa9c680cf1/merged
overlay 40G 8.4G 32G 21% /var/lib/docker/overlay2/3b4eb9820db4cf55a6000add1564a1/merged
overlay 40G 8.4G 32G 21% /var/lib/docker/overlay2/b9ea62db0caa6add152047ed1ea727/merged
overlay 40G 8.4G 32G 21% /var/lib/docker/overlay2/27cbd0ef2ebf8cb00573b2205b3aab/merged
overlay 40G 8.4G 32G 21% /var/lib/docker/overlay2/a13a8b00f805d39095fcd5a02926b7/merged
##############
解决:
取消挂载
umount /var/lib/docker/overlay2/b9ea62db0caa6add152047ed1ea727/merged
取消后就可以热门-rf
问题二:ERROR: cannot create network
问题:
6. Init JumpServer Database
Creating network "jms_net" with driver "bridge"
ERROR: cannot create network 0419bcfd1eb1f34ef2379210b495596a7366709d1c3056878eb2e8637e864178 (br-0419bcfd1eb1): conflicts with network 353fcb517b5aa767498af55d845c0f7b1c8c4948e7addefbb42217a4a5ad2312 (br-353fcb517b5a): networks have overlapping IPv4
Creating network "jms_net" with driver "bridge"
ERROR: cannot create network 75d019738500d27fda896e04aca46666ff6bb681884e6e4fe518972ed00db74f (br-75d019738500): conflicts with network 353fcb517b5aa767498af55d845c0f7b1c8c4948e7addefbb42217a4a5ad2312 (br-353fcb517b5a): networks have overlapping IPv4
Error: No such container: jms_core
[ERROR] Failed to change the table structure!
#################
原因:
jumpservere 卸载时docker的网桥没有删除需要手动删除
37: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:4a:ad:2f:20 brd ff:ff:ff:ff:ff:ff
inet 172.31.0.1/24 brd 172.31.0.255 scope global docker0
valid_lft forever preferred_lft forever
38: br-47c2edb68b09: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:03:c0:d5:5a brd ff:ff:ff:ff:ff:ff
inet 192.168.250.1/24 brd 192.168.250.255 scope global br-47c2edb68b09
valid_lft forever preferred_lft forever
inet6 fe80::42:3ff:fec0:d55a/64 scope link
valid_lft forever preferred_lft forever
40: vethe830abc@if39: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-47c2edb68b09 state UP group default
link/ether 7e:76:ef:68:5f:e1 brd ff:ff:ff:ff:ff:ff link-netnsid 7
inet6 fe80::7c76:efff:fe68:5fe1/64 scope link
valid_lft forever preferred_lft forever
44: veth0d2bbf1@if43: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-47c2edb68b09 state UP group default
link/ether fa:c5:20:47:78:a5 brd ff:ff:ff:ff:ff:ff link-netnsid 8
inet6 fe80::f8c5:20ff:fe47:78a5/64 scope link
valid_lft forever preferred_lft forever
46: vethf9e86a8@if45: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-47c2edb68b09 state UP group default
link/ether c2:48:4b:f0:9d:ad brd ff:ff:ff:ff:ff:ff link-netnsid 9
inet6 fe80::c048:4bff:fef0:9dad/64 scope link
valid_lft forever preferred_lft forever
############################
解决:
sudo ip link delete 网络名(docker0)
sudo ip link delete docker0
sudo ip link delete vethe830abc
只保留这原始的
问题三:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
mysql数据同步完成后登录时间出现
问题:[root@test ~]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'' (2)
########################
原因:根据上面的问题反馈是var/lib/mysql/mysql.sock
但是我这边已经指定过mysql.sock路径,还是出现路径问题
解决:
在/etc/my.conf最后面添加如下
[client]
default-character-set=utf8
socket=/data/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/data/mysql/mysql.sock
##############
[root@test mysql]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
问题四:ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository
解决
重新设置slave
mysql> reset slave;
CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='slave',
MASTER_PASSWORD='Fit2clouxuat',
MASTER_LOG_FILE='mysql-bin.000012',
MASTER_LOG_POS=7318506;
mysql> start slave;
问题五:Slave_IO_Running: NO
mysql 配置文件中的auto.cnf 是rsync过来的需要删除auto.cnf 重启mysql 让他自动获取一下。
问题六:jump连接服务时出现 Connection websocket closed
解决重启jumpserver