介绍

JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。很多企业与互联网公司都在使用Jira作为内部流程管理系统,进行团队协作与问题单管理。

JIRA的后台数据库可以选择使用嵌入式数据库或MySQL/PGSQL等专业数据库。一般来说,大部分企业选择MySQL作为底层的数据存储。但是,随着问题工单的不断积累,对于较大型企业来说MySQL所支撑的数据量可能很快达到瓶颈。用户可以选择使用SequoiaDB分布式数据库替换MySQL默认的InnoDB引擎,在保持对Jira应用程序完整兼容的前提下做到弹性横向扩张。

JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。同时,开源则是其另一特色,在用户购买其软件的同时,也就将源代码也购置进来,方便做二次开发。JIRA功能全面,界面友好,安装简单,配置灵活,权限管理以及可扩展性方面都十分出色。

通过阅读本文,用户可以了解到如何使用SequoiaDB巨杉数据库的MySQL实例无缝替换标准MySQL数据库。SequoiaDB巨杉数据库允许用户在不更改一行代码的情况下直接对已有应用进行后台MySQL数据库迁移。

通过使用SequoiaDB巨杉数据库,用户可以得到:

l  水平弹性扩张

l  MySQL的100%全兼容

l  优秀的交易性能

安装SequoiaDB

本文使用Linux Ubuntu Server 18.10作为服务器,SequoiaDB巨杉数据库版本为3.2.1。

本教程默认使用sudo用户名密码为“sequoiadb:sequoiadb”,默认home路径为/home/sequoiadb。

对于使用CentOS等其他Linux版本的用户,本文所描述的流程可能略有不同,需要根据实际情况自行调整。

下载SequoiaDB标准虚拟机模板的用户可以直接跳过该安装部署步骤。

1)下载并安装SequoiaDB巨杉数据库

$ wget http://cdn.sequoiadb.com/images/sequoiadb/x86_64/sequoiadb-3.2.1-linux_x86_64.tar.gz

$ tar -zxvf sequoiadb-3.2.1-linux_x86_64.tar.gz

$ cd sequoiadb-3.2.1/

$ sudo ./setup.sh

之后一直回车确认各个默认参数即可。

2) 使用数据库实例用户创建默认实例

$ sudo su sdbadmin

$ /opt/sequoiadb/tools/deploy/quickDeploy.sh

$ exit

安装JIRA

本教程使用JIRA 8.2.1。

1)用户可以登录JIRA的官网https://www.atlassian.com/software/jira/download下载安装包,或直接通过wget进行下载。

$ wget https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-8.2.1-x64.bin

注:JIRA官方安装文档位于

https://confluence.atlassian.com/adminjiraserver/installing-jira-applications-on-linux-938846841.html

2)执行安装包

$ chmod 755 atlassian-jira-software-8.2.1-x64.bin

$ sudo ./atlassian-jira-software-8.2.1-x64.bin

3)默认情况下,测试版的JIRA不提供MySQL JDBC驱动,因此需要手工下载驱动包。由于当前JIRA版本不支持MySQL 8的驱动,因此需要下载MySQL 5.1.x的JDBC安装包。

或直接通过wget下载

$ wget https://downloads.mysql.com/archives/get/file/mysql-connector-java-5.1.46.tar.gz

$ tar -zxvf mysql-connector-java-5.1.46.tar.gz

4)将JDBC驱动拷贝至JIRA的lib目录下并重启JIRA

$ sudo cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46.jar /opt/atlassian/jira/lib/

$ sudo /opt/atlassian/jira/bin/shutdown.sh

$ sudo /opt/atlassian/jira/bin/startup.sh

5)开启SequoiaDB巨杉数据库事务功能并设置默认隔离级别RC

$ sudo su sdbadmin

$ /opt/sequoiadb/bin/sdb

> db = new Sdb() ;

> db.updateConf ( { transactionon: true, transisolation: 1 } ) ;

> quit ;

$ /opt/sequoiadb/bin/sdbstop

$ /opt/sequoiadb/bin/sdbstart

6)创建数据库

$ /opt/sequoiasql/mysql/bin/mysql -S /opt/sequoiasql/mysql/database/3306/mysqld.sock -u root

mysql> create user 'sequoiadb'@'localhost' identified by 'sequoiadb';

mysql> create database jira;

mysql> grant all on jira.* to 'sequoiadb'@'localhost';

mysql> grant all privileges on *.* to 'sequoiadb'@'%' identified by 'sequoiadb' with grant option;

mysql> exit

$ exit

配置JIRA

1)使用浏览器登录服务器IP地址的8080端口,选择“I’ll set it up myself”

2)数据库设置页面选择“My Own Database”,填入服务器IP地址、jira数据库名、以及sequoiadb:sequoiadb作为用户名密码

3)点击Test Connection确认数据库连接正确

4)点击Next创建数据库,并跟随导航进入注册页面

5)作为测试账户,用户可以点击“generate a Jira trial license”并在官网注册申请测试授权账号

6)将授权码黏贴到安装界面下并点击Next,用户名密码设置为默认sequoiadb:sequoiadb

7)完成安装设置并创建一个默认sequoiadb的项目

切换数据库至SequoiaDB

在JIRA的安装部署程序中,默认指定了InnoDB作为所有表的存储引擎。因此接下来用户可以通过mydumper与myloader将InnoDB的表切换至SequoiaDB。

1)停止JIRA

$ sudo /opt/atlassian/jira/bin/shutdown.sh

2)下载mydumper

$ wget https://github.com/maxbube/mydumper/releases/download/v0.9.5/mydumper_0.9.5-2.xenial_amd64.deb

$ sudo dpkg -i mydumper_0.9.5-2.xenial_amd64.deb

3)导出jira数据库所有表

$ sudo su – sdbadmin

$ mkdir temp

$ mydumper -h 10.211.55.14 -P 3306 -u sequoiadb -p sequoiadb -t 16 -F 64 -B jira -o ./temp

4)将所有InnoDB表替换为SequoiaDB引擎

$ sed -i "s/InnoDB/SequoiaDB/g"  `grep -R "InnoDB" -rl ./temp`

5)重新创建jira库并使用myloader导入数据

$ /opt/sequoiasql/mysql/bin/mysql -S /opt/sequoiasql/mysql/database/3306/mysqld.sock -u root

mysql> drop database jira;

mysql> create database jira;

mysql> grant all on jira.* to 'sequoiadb'@'localhost';

mysql> exit

$ myloader -h 10.211.55.14 -u sequoiadb -p sequoiadb -P 3306 -t 32 -d ./temp

$ exit

6)重新启动JIRA服务

$ sudo /opt/atlassian/jira/bin/startup.sh

7)重新登录浏览器,如今JIRA后台所有的数据已经由MySQL迁移至SequoiaDB

结论

SequoiaDB巨杉数据库作为一款分布式数据库,提供包括结构化SQL、与非结构化文件系统和对象存储的机制。

通过SequoiaDB创建的MySQL实例,能够提供与标准MySQL全兼容的SQL与DDL能力,用户无需调整DDL或SQL即可实现无缝透明地访问分布式表结构。

本文向读者展示了如何通过SequoiaDB的MySQL实例,实现与标准MySQL的无缝迁移。通过使用SequoiaDB巨杉数据库,用户可以在满足标准ACID与MySQL协议的基础上,实现近无限的弹性扩展能力。

巨杉Tech | 使用 SequoiaDB 分布式数据库搭建JIRA流程管理系统的更多相关文章

  1. 巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

    容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作.SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与N ...

  2. 巨杉Tech|SequoiaDB 巨杉数据库高可用容灾测试

    数据库的高可用是指最大程度地为用户提供服务,避免服务器宕机等故障带来的服务中断.数据库的高可用性不仅仅体现在数据库能否持续提供服务,而且也体现在能否保证数据的一致性. SequoiaDB 巨杉数据库作 ...

  3. 巨杉Tech | SparkSQL+SequoiaDB 性能调优策略

    当今时代,企业数据越发膨胀.数据是企业的价值,但数据处理也是一种技术挑战.在海量数据处理的场景,即使单机计算能力再强,也无法满足日益增长的数据处理需求.所以,分布式才是解决该类问题的根本解决方案.而在 ...

  4. 巨杉Tech | 微服务趋势下的数据库设计与应用简析

    周五(7月12日)巨杉数据库参与了由得到App主办八里庄技术沙龙活动,分享主题是关于分布式数据库架构与实战. 以下就是根据巨杉数据库现场分享的内容进行的分享实录整理. 巨杉数据库简介 巨杉,专注新一代 ...

  5. 【巨杉数据库SequoiaDB】巨杉Tech | 分布式数据库千亿级超大表优化实践

    01 引言 随着用户的增长.业务的发展,大型企业用户的业务系统的数据量越来越大,超大数据表的性能问题成为阻碍业务功能实现的一大障碍.其中,流水表作为最常见的一类超大表,是企业级用户经常碰到的性能瓶颈. ...

  6. 巨杉数据库SequoiaDB】巨杉Tech | SequoiaDB 分布式事务实现原理简介

    1 分布式事务背景 随着分布式数据库技术的发展越来越成熟,业内对于分布式数据库的要求也由曾经只用满足解决海量数据的存储和读取这类边缘业务向核心交易业务转变.分布式数据库如果要满足核心账务类交易需求,则 ...

  7. 【巨杉数据库SequoiaDB】巨杉Tech | “删库跑路”又出现,如何防范数据安全风险?

    最近,又双叕有企业被“删库”了.来自微盟官网的消息,微盟的业务系统数据库(包括主备)遭遇其公司运维人员的删除,系统将停止运营超48小时. 频发的类似事件也让大家对于数据安全的关注不断提高.数据是一个科 ...

  8. 【巨杉数据库SequoiaDB】省级农信国产分布式数据库应用实践

    本文转载自<金融电子化> 原文链接:https://mp.weixin.qq.com/s/WGG91Rv9QTBHPsNVPG8Z5g 随着移动互联网的迅猛发展,分布式架构在互联网IT技术 ...

  9. 【巨杉数据库SequoiaDB】巨杉Tech | 四步走,快速诊断数据库集群状态

    1.背景 SequoiaDB 巨杉数据库是一款金融级分布式数据库,包括了分布式 NewSQL.分布式文件系统与对象存储.与高性能 NoSQL 三种存储模式,分别对应分布式在线交易.非结构化数据和内容管 ...

随机推荐

  1. LeetCode 面试题24. 反转链表

    题目链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/ 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. ...

  2. opencv —— copyMakeBorder 扩充图像边界

    扩充图像边界:copyMakeBorder 函数 在图像处理过程中,因为卷积算子有一定大小,所以就会导致图像一定范围的边界不能被处理,这时就需要将边界进行适当扩充. void copyMakeBord ...

  3. C++ const和constexpr

    const expression , 常量表达式 , 在<C++ Primer>的定义:值不会改变并且在编译过程就能得到计算结果的表达式.   它要求两点:值不会改变,编译过程得到结果. ...

  4. Python循环引用的解决方案

    1.延迟导入:即将 from xxx import yyy 放到函数或类的内部,从而使其作用域变成局部的,但是这样可能会对性能有些影响: 2.将 from xxx import yyy 转换成 imp ...

  5. Spark学习之路 (四)Spark的广播变量和累加器[转]

    概述 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的是这个函数所用变量的一个独立副本.这些变量会被复制到每台机器上,并 ...

  6. 今日头条 SEO 研究,值得深思的 5 个问题

    在做SEO的过程中,实际上,我并不是“技术挂”更多的是基于搜索原理与大量的实战,总结相关的经验,这么多年,经常养成一个小习惯,总是记录一些工作中遇到的一些小问题与小技巧. 特别是2017年,12月份开 ...

  7. 嵊州D6T2 城市 city

    城市 city [问题描述] 众所周知,why 是czyz 王国的国王. czyz 王国一共有n 个城市,每个城市都有一条道路连向一个城市(可能连向这个城市自己). 同时,对于每一个城市,也只有一条道 ...

  8. TCP 与 UDP 浅谈

    TCP与UDP区别总结:1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2.TCP提供可靠的服务.也就是说,通过TCP连接传送的数据,无差错,不丢失,不重 ...

  9. npm常用模块之chai使用

    更多npm常用模块使用请访问:npm常用模块汇总 chai这是一款用于节点和浏览器的BDD / TDD断言库,可以与任何javascript测试框架完美地配对. 更多使用文档请点击访问chai工具官网 ...

  10. 已知float后几位,谋几位保留

    设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式____. #include "common.h" #includ ...