JIRA维护记——使用原实例位置恢复数据

一、出现问题

昨天下班了,同事反馈Jira又不能使用了。想都不用想,肯定是磁盘空间不足了,因为已经出现过几次了。之前都是清理一下磁盘空间即可,都不用重启Jira。

今天一上班就开始清理磁盘空间,把一些日志啊,temp目录中的文件啊之类的清理一下,已经有几百兆的空间了,刷新Jira还是不能正常使用,检索不出数据,于是尝试重启。

Jira应用程序实例一般是安装在/opt/atlassian/jira下,数据保存在/var/atlassian/application-data/jira下,如果Jira还可以正常运行,具体信息可以在系统下的系统信息中查看:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
JIRA的控制脚本在/opt/atlassian/jira/bin下面,启动与关闭有好几个脚本,最直观的就是:start-jira.shstartup.shstop-jira.shshutdown.sh。关于这几个脚本,官方有解释:Understand startup and shutdown scripts in Jira server

脚本说明
start-jira.sh使用user.sh中定义的用户启动Jira
stop-jira.sh使用user.sh中定义的用户关闭Jira
startup.sh使用catalina.sh start中启动Jira
shutdown.sh使用当前用户关闭Jira

如果没有安装过服务,即不能使用service jira startservice jira stop来开关,正确的开关脚本应该是根据/var/atlassian/application-data/jira的用户和组来决定。

在这里插入图片描述

由于很久没维护过Jira了,忘记应该使用哪一组来关闭和启动了。就在这四个脚本中随便使用了一组脚本来关闭和启动,发现要么关闭不了,要么启动不了;要么进程还在,要么记录进程PID的/opt/atlassian/jira/work/catalina.pid文件还在;要么是启动了,因为目录不能访问,不能正常使用,反正是有问题。后面又遇到使用了两个关闭脚本都关闭不了了,就直接Kill掉进程。后面想起来,是安装过服务的,可以使用service jira startservice jira stop来开关,这才是正确的开关方式。

在使用重启大法的过程中,Jira却莫名其妙地进入到了初始化界面(注意,初始化需要许可证),要求选数据库,事感不对,赶紧备份数据,包含数据库和数据目录/var/atlassian/application-data/jira。停服,备份好后,继续操作,莫名其妙完全进入新的实例了,之前的所有东西都不见了。看了一下/var/atlassian/application-data/jira/dbconfig.xml目录下的配置,发现使用的是本地文件,不是Mysql。

<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>h2</database-type>
  <schema-name>PUBLIC</schema-name>
  <jdbc-datasource>
    <url>jdbc:h2:file:/var/atlassian/application-data/jira/database/h2db</url>
    <driver-class>org.h2.Driver</driver-class>
    <username>sa</username>
    <password></password>
    <pool-min-size>20</pool-min-size>
    <pool-max-size>20</pool-max-size>
    <pool-max-wait>30000</pool-max-wait>
    <min-evictable-idle-time-millis>4000</min-evictable-idle-time-millis>
    <time-between-eviction-runs-millis>5000</time-between-eviction-runs-millis>
    <pool-max-idle>20</pool-max-idle>
    <pool-remove-abandoned>true</pool-remove-abandoned>
    <pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
  </jdbc-datasource>
</jira-database-config>

二、解决问题

1、修改数据库连接

为了不影响正式数据,在本机虚拟机中尝试安装新Jira,并连接到数据库,得到一个新的Mysql的数据库配置dbconfig.xml(读者可以不必再新装Jira了,可以直接复制下面的配置进行修改):

<?xml version="1.0" encoding="UTF-8"?>

<jira-database-config>
  <name>defaultDS</name>
  <delegator-name>default</delegator-name>
  <database-type>mysql</database-type>
  <jdbc-datasource>
    <url>jdbc:mysql://address=(protocol=tcp)(host=127.0.0.1)(port=3306)/jira?useUnicode=true&amp;characterEncoding=UTF8&amp;sessionVariables=default_storage_engine=InnoDB</url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <username>jira</username>
    <password>jira</password>
    <pool-min-size>20</pool-min-size>
    <pool-max-size>20</pool-max-size>
    <pool-max-wait>30000</pool-max-wait>
    <validation-query>select 1</validation-query>
    <min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis>
    <time-between-eviction-runs-millis>300000</time-between-eviction-runs-millis>
    <pool-max-idle>20</pool-max-idle>
    <pool-remove-abandoned>true</pool-remove-abandoned>
    <pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout>
    <pool-test-on-borrow>false</pool-test-on-borrow>
    <pool-test-while-idle>true</pool-test-while-idle>
    <validation-query-timeout>3</validation-query-timeout>
  </jdbc-datasource>
</jira-database-config>

将上面的配置中连接的数据库名、IP、端口、账号、密码修改为自己所需要的,把它保存到/var/atlassian/application-data/jira/dbconfig.xml,使用service jira start启动Jira。由于前面已经初始化过了,可以进入系统,所以这里没有再进入初始化。

2、恢复系统

使用了之前的数据库连接后, 就可以使用之前的账号密码登录Jira了。然后在管理页面的系统中使用恢复系统功能:

在这里插入图片描述
从页面中可以看到,需要把要恢复的文件存放在/var/atlassian/application-data/jira/import目录下:

在这里插入图片描述

由于Jira实例还是原来的位置,所以原来的数据都还在,特别是目录/var/atlassian/application-data/jira/data保存了所有附件及头像,目录/var/atlassian/application-data/jira/export下保存了Jira自动备份的文件,找到最新的文件,复制到/var/atlassian/application-data/jira/import目录下,然后在上图文件名中填写正确的文件名,比如2023-Jun-6--2000.zip,表示是2023年6月6号20点备份的。然后复原,等待完成,重新登录即可。

又可以愉快的使用Jira了。

Btw:由于Jira会自动备份,在/var/atlassian/application-data/jira/export目录下可能会有比较多的备份文件,可以定期进行清理,以减少磁盘占用空间。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Jira 的 REST API 来获取数据。在 Python 中,你可以使用 `requests` 库作为 HTTP 客户端发送请求,并处理返回的 JSON 数据。 首先,你需要导入 `requests` 库: ```python import requests ``` 然后,你需要设置 Jira 的服务器地址和认证信息: ```python jira_url = "https://your-jira-server.com/rest/api/latest/" auth = ("username", "password") # 替换为你的 Jira 用户名和密码 ``` 接下来,你可以使用 `requests.get()` 方法发送 GET 请求来获取 Jira 数据。例如,要获取一个项目的所有问题,你可以使用以下代码: ```python project_key = "PROJECT-KEY" # 替换为实际的项目关键字 issues_url = jira_url + "search" params = { "jql": f"project={project_key}", "maxResults": 100 # 设置每次请求返回的最大结果数 } response = requests.get(issues_url, params=params, auth=auth) data = response.json() # 处理返回的数据 for issue in data["issues"]: issue_key = issue["key"] summary = issue["fields"]["summary"] print(f"Issue {issue_key}: {summary}") ``` 上述代码假设你已经有了有效的 Jira 用户名和密码,并且已将其替换到了代码中。 你可以根据自己的需求修改代码来获取不同类型的数据,例如获取问题的详细信息、获取特定状态的问题等。 请注意,在实际使用时,建议对认证信息进行安全处理,如将密码存储在安全的配置文件中,而不是直接写在代码中。 希望这能帮到你!如有其他问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值