介绍:
基于docker启动的jira8.20.1进行服务器以及数据库的迁移,版本无变化
环境:
服务器1(192.168.0.57),jira8.20.1 正常运行,连接mysql(x1,库:jira,用户名/密码:xxx/xxx)
服务器2(192.168.0.227),已部署docker
准备mysql ( x1,库:mao2,用户名/密码:xxx/xxx ),注意数据库必须是空的
--- 创建数据库及用户模板
CREATE USER '<USERNAME>'@'<JIRA_SERVER_HOSTNAME>' IDENTIFIED BY '<PASSWORD>'; --- 创建用户
CREATE DATABASE jira CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; --- 创建数据库
GRANT ALL on <JIRADB>.* TO '<USERNAME>'@'<JIRA_SERVER_HOSTNAME>' IDENTIFIED BY '<PASSWORD>'; --- 授权
flush privileges; --- 刷新权限
--- 例如以下
CREATE USER 'jira'@'%' IDENTIFIED BY '5n+0BiWDkx';
CREATE DATABASE jira CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
GRANT ALL on jira.* TO 'jira'@'%' IDENTIFIED BY '5n+0BiWDkx';
flush privileges;
迁移流程:
1.迁移jira:
将服务器1正在运行的jira容器打包为镜像,传至服务器2,并基于该镜像运行docker
2.迁移数据
登陆原jira web界面,点击“jira管理”–>“系统”–>“导入与导出”–>“备份系统”–>自定义备份文件名称
将备份文件拷贝至服务器2中对应目录下
登陆新jira web界面,点击“jira管理”–>“系统”–>“导入与导出”–>“恢复系统”–>自定义备份文件名称
3.迁移项目附件
拷贝attachments文件夹至对应路径下
具体迁移操作:
1、生成备份文件
登陆原jira web界面,点击“jira管理”–>“系统”–>“导入与导出”–>“备份系统”–>自定义备份文件名称(只需输入文件名即可,系统会自动生成一个以.zip的文件)
备份完成,如下
2、将容器保存为镜像,并传输至服务器2
[root@node-01 ~]# docker commit jira jira-back:8.20.1
sha256:ad2b56a95466a2c78d23178d645131036b24bc6f7965998a45dfd318628e06d5
[root@node-01 ~]# docker images | grep jira
jira-back 8.20.1 ad2b56a95466 14 seconds ago 1.08 GB
jira 8.20.1 2961c3e2a41d 12 days ago 972 MB
[root@node-01 ~]# docker save -o back.tar.gz jira-back:8.20.1
[root@node-01 ~]# scp back.tar.gz 192.168.0.227:/root/
# 登陆服务器2
[root@node-02 ~]# docker load -i back.tar.gz
[root@node-02 ~]# docker images | grep jira
jira-back 8.20.1 ad2b56a95466 5 minutes ago 1.08GB
[root@node-02 ~]# mkdir -p /data/jira2
[root@node-02 ~]# docker run -d --restart always -m 3072M -v /data/jira2:/var/atlassian/application-data/jira --name="jira" -d -p 8092:8080 jira-back:8.20.1
594240cd868c1208fcb64ba539275824696240858ffad76e56b54e9c80384e25
[root@node-02 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
594240cd868c jira-back:8.20.1 "/usr/bin/tini -- /e…" 14 seconds ago Up 14 seconds 0.0.0.0:8092->8080/tcp jira
3、配置
访问新jira
http://192.168.0.227:8092/
此时需等待一段时间
将备份文件(/var/atlassian/application-data/jira/export/back.zip)传输至指定目录(/var/atlassian/application-data/jira/import/)下
注意:该备份只能恢复数据库中的数据,还需要恢复页面展示的项目、issues等
本次示例使用的是挂在本地目录的方式,所以传输至服务器2的本地对应路径即可
# 登陆服务器1
[root@node-01 ~]# scp /data/jira2/export/
# 登陆服务器2
[root@node-02 ~]# chmod 755 /data/jira2/import/back.zip
备份附件目录:/data/jira2/data/attachments/* 即jira家目录/data/attachments/*
备份索引目录:/data/jira2/caches/indexesV1/* 即jira家目录/caches/indexesV1/*
备份XML文件:/data/jira2/export/xxx.zip
将备份附件目录下文件恢复至新jira的家目录下的 data/attachments/下 (已有文件全部删除) 不确定是否要在新jira的家目录下的 import/attachments/ 目录下同样恢复一份
将备份索引目录下文件恢复至新jira的家目录下的 caches/indexesV1/下 (已有文件全部删除)
将备份的XML文件压缩包上传至新jira的家目录下的 import/下,并给与755权限
默认索引备份:/data/jira2/export/indexsnapshots/ 即jira家目录 export/indexsnapshots/下的xxx.tar.sz文件 恢复此种方式的索引待验证
等待import完成
完成
手动安装 Jira Service Management