Linux(el7)+ MySQL5.7.20 + Jira7.3.8安装及配置MySQL双机主从同步
1. 先装linux,版本是Linux 3.10.0-327.28.3.el7.x86_64
2. 再装MySQL,这一步与Jira谁先装无所谓,不过先装MySQL建好库更直观些
1) 如果网络通,那么用yum方式:
a) 先到MySQL网站上下载OS对应版本的yum源包,这里用el7对应的包mysql57-community-release-el7-11.noarch.rpm,然后安装yum localinstall mysql57-community-release-el7-11.noarch.rpm或者rpm -ivh mysql57-community-release-el7-11.noarch.rpm
b) el7自带MariaDB的一些rpm包,比如lib库,由于MariaDB是MySQL的一个分支版本,会有冲突,所以装MySQL之前需要先卸载MariaDB的包,用
rpm -qa|grep mariadb先查一下系统里有哪些MariaDB的包mariadb-libs-5.5.44-2.el7.centos.x86_64,然后用rpm -e 包名来卸载
卸载时可能报错因为有依赖,用rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64,或者用yum remove mariadb-libs-5.5.44-2.el7.centos.x86_64来卸载,会自动卸载依赖的包net-snmp.x86_64 1:5.7.2-24.el7
c) 查一下yum源中的MySQL可安装版本:
yum repolist all | grep mysql
!mysql-connectors-community/x86_64 MySQL Connectors Community 42
!mysql-tools-community/x86_64 MySQL Tools Community 55
!mysql57-community/x86_64 MySQL 5.7 Community Server 227
最后一行即是可安装的MySQL5.7版本
d) 安装mysql,yum -y install mysql-community-server,有一会儿,耐心等待安装,安装完毕后,rpm -qa | grep mysql可以看到装了4个包
mysql-community-libs-5.7.20-1.el7.x86_64
mysql57-community-release-el7-11.noarch
mysql-community-common-5.7.20-1.el7.x86_64
mysql-community-client-5.7.20-1.el7.x86_64
mysql-community-server-5.7.20-1.el7.x86_64
其中第二行是yum源的包,不是真正的MySQL的包
2) 如果网络不通,那么下载RPM包后直接安装rpm -ivh 包名,可用sftp上传到机器上
a) 直接到MySQL网站上下载对应的tar包:mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
b) tar xvf解开,看到一堆的包,但是不需要全部安装
c) 安装MySQL之前,也需要先卸载MariaDB的包,rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64
d) 用rpm -Uvh 包名装上,这次装了如下几个包:
mysql-community-embedded-5.7.20-1.el7.x86_64
mysql-community-server-5.7.20-1.el7.x86_64
mysql-community-libs-5.7.20-1.el7.x86_64
mysql-community-devel-5.7.20-1.el7.x86_64
mysql-community-client-5.7.20-1.el7.x86_64
mysql-community-common-5.7.20-1.el7.x86_64
mysql-community-embedded-devel-5.7.20-1.el7.x86_64
3) 安装MySQL之后,有几个问题需要考虑:root初始密码的获取,root密码的重置,data默认目录的更改,开放远程连接权限,内存的使用
a) root初始密码的获取。网上有文说是去cat /root/.mysql_secret这个隐藏文件,但是5.7已经没有这个文件了,反正我是按照MySQL官网说法,找到MySQL的log文件/var/log/mysqld.log,grep "temporary password" mysqld.log,可以找到root的初始密码。这里需要注意的是,如果刚装完MySQL,这个文件还是空的,需要先把mysql拉起来,MySQL第一次启动之后,才会往这个log里写日志,用service mysqld start启动MySQL(这里要注意linux el7版本中已经没有/etc/init.d/mysql了,都需要用service的方式来控制,所以网上很多涉及到在此操作和修改的都不适用了!),service mysqld status检查一下。然后再找到初始密码,mysql -uroot -p,输入这个临时密码登录之后,会提示必须更改临时密码,改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; 刷新一下使之生效flush privileges; 看到有说法是5.7版本增加了安全校验,密码设置必须足够强壮,类似大小写特殊字符数字这种,而且不能重复以前用过的密码
b) 修改配置的过程中,比如修改默认data目录过程中,出现root密码无法登录的错误,需要重设root密码,那么只能重设密码。先vi /etc/my.cnf,在[mysqld]段落中增加一行:skip-grant-tables,保存后重启mysql:service mysqld restarts,MySQL重启后变成无密码登录,直接mysql就可以进,进去后改密码,需要注意MySQL5.7版本里mysql数据库user表里已经没有password字段了,网上很多文的命令去改password字段的都是错的,需用authentication_string字段来改:update mysql.user set authentication_string=password('new_password') WHERE User = 'root' ; flush privileges; 验证成功后,重新vi /etc/my.cnf,把之前增加的skip那一行删掉,再重启一次MySQL使之生效,重新验证后即可
c) 更改默认的data目录,这一步太坑了,和网上搜到的很多说法都不一样。我实践的方法,比如从默认的/var/lib/mysql目录,更改到/export/Data/db/mysql目录下:
i) 首先,只需要创建mkdir -p /export/Data/db/mysql,之所以要创建目录,是因为看到有说法install_db这个脚本不会创建父目录,所以需要手动创建父目录。再改一下权限chmod -R 777 /export/Data/db/mysql
ii) 不需要自己手动把原来的目录/var/lib/mysql拷贝过去,直接执行/usr/bin下的mysql_install_db来重新初始化data目录:mysql_install_db --user=mysql --datadir=/export/Data/db/mysql。执行结束后可以看到/export/Data/db/mysql目录下已经自动把原先/var/lib/mysql下的内容都复制过来了。这个脚本还包括了去修改selinux等等工作,不用自己一个个去改了(getenforce会看到变成了disabled)
iii) 接下来先停mysql服务service mysqld stop,再去修改/etc/my.cnf,把[mysqld]段的datadir和socket都改成新的目录
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
datadir=/export/Data/db/mysql
socket=/export/Data/db/mysql/mysql.sock
再在最后增加一个[mysql]段,增加一行socket
[mysql]
socket=/export/Data/db/mysql/mysql.sock
:wq存盘退出后,重新启动mysql:service mysqld start
此时再去查mysql日志,就可以看到data路径和socket都已经改到新路径下了:
grep "export/Data/db/mysql" /var/log/mysqld.log
2018-01-10T04:27:36.994415Z 0 [Note] InnoDB: Loading buffer pool(s) from /export/Data/db/mysql/ib_buffer_pool
Version: '5.7.20' socket: '/export/Data/db/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
或者近mysql里去查参数配置:
mysql> show variables like '%datadir%';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| datadir | /export/Data/db/mysql/ |
+---------------+------------------------+
1 row in set (0.01 sec)
iv) 上一步改默认data路径,如果中间改得不对,有可能报以下错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
网上说的什么拷贝目录再建softlink什么的都不靠谱, 最靠谱的办法还是按我上面说的,直接用mysql_install_db来重新初始化datadir,然后在/etc/my.cnf下增加新的[mysql]段定义新的socket位置即可
还可能出现2002错误改了之后,但是又登录不了mysql的错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我两次都碰到了这问题,我猜是因为重新初始化了数据库,所以重回了初始状态,但是又不是第一次启动mysql所以没有新的temporary password。只能去重新改root的密码,按上面的步骤。因为update mysql.user表后,会发现登录进去后又提示必选先alter密码
d) 开放mysql的远程登录权限:这个简单,主要是把mysql.user表里的host列从localhost改成%即可:
update mysql.user set host='%' where user='root';
flush privileges;
不过等安装完毕后,最好还是限制root只能从本地访问,即将root用户的host改回成localhost
e) 内存的配置:MySQL默认的内存比较小,对于大内存的机器,MySQL官网上的说法是,如果这台机器是单独给MySQL用的,那么推荐用系统内存的70%分配给MySQl用,否则至少分配给MySQL用10%的系统内存。算好内存大小后,vi /etc/my.cnf,修改innodb_buffer_pool_size后重启mysql即可
innodb_buffer_pool_size = 90000M
f) 更改默认的字符集为utf-8,这是为数据库中存储中文考虑:
更改/etc/my.cnf,对各段增加如下配置:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
存盘退出后重启mysqlservice mysqld stop
service mysqld start
重新登录mysql后验证一下server的字符集:
> SHOW VARIABLES LIKE "character_set_server";
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| character_set_server | utf8 |
+----------------------+-------+
> SHOW VARIABLES LIKE "collation_server";
+------------------+-----------------+
| Variable_name | Value |
+------------------+-----------------+
| collation_server | utf8_general_ci |
+------------------+-----------------+
查看database的字符集:
先use要查看的database,然后查看:
> SELECT @@character_set_database, @@collation_database;
+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8 | utf8_general_ci |
+--------------------------+----------------------+
至此MySQL的安装与初始配置基本完成
3. 接下来安装Jira7.3.8,这个基本按照网文来装就行了,没啥问题:https://www.ilanni.com/?p=12119
为防止链接失效,简单记录如下:
1) 从官网下载7.3.8的安装包:
wget https://downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.3.8-x64.bin
2) 下载7.3.8的破解包:
https://page00.ctfile.com/fs/15323800-217438995
3) 安装Jira依赖的java,jira7.3.8需要安装jdk1.8以上版本
a) 先找一下java的yum源:yum search java|grep jdk
b) 安装1.8:yum install java-1.8.0-openjdk,中间会自动安装依赖包
4) 在此先创建jira要用的数据库,虽然放到以后再做也行:
用root登录进mysql,执行:
create database jira default character set utf8 collate utf8_general_ci;
grant all on jira.* to 'jira'@'%' identified by 'jirapassword';
5) 安装Jira7.3.8:找到下载的包,改成可执行:
chmod +x atlassian-jira-software-7.3.8-x64.bin
./atlassian-jira-software-7.3.8-x64.bin
安装过程中,选择[Custom Install],[home directory]选择df -k显示空间足够的分区上,比如/export/atlassian/jira,[default location for jira software data]同样/export/atlassian/application-data/jira,端口用默认的8080和8005就行,[install jira as service]y
默认端口等配置在/export/atlassian/jira/conf/server.xml里
6) 替换破解文件,虽然以后再做也行
a) 先停掉jira:/export/atlassian/jira/bin/stop-jira.sh
b) 找到下载的破解文件,解开,得到两个jar文件
atlassian-extras-3.2.jar
mysql-connector-java-5.1.39-bin.jar
第一个是破解有效期的文件,第二个是连接mysql数据库的,如果不用mysql用jira默认自带的数据库,那么第二个文件不用也行
c) 把这俩文件拷贝到/export/atlassian/jira/atlassian-jira/WEB-INF/lib/下
d) 再把jira拉起来就行了:
/export/atlassian/jira/bin/start-jira.sh
7) 配置Jira
a) 访问Jira需要能访问web页面,所以需要能用浏览器访问Jira服务地址。如果前述8080端口不通,需要找网管运维开通端口;另外需要添加一个域名和ip的dns解析。都配好后,访问http://jirahostname:8080,即自动跳转到第一次访问的配置页面
b) 第一次进来选择[I'll set it up myself],[Database Setup]选择[My Own Database],hostname填[127.0.0.1]就好,[Database]填之前创建的jira数据库的名字[jira],用户名和密码也填先前创建时的值jira/jirapassword
c) 点[Test Connection]验证一下MySQL数据库,如果出"The database connection test was successful"则表示MySQL数据库侧正常,否则需先解决MySQL的问题,再next
d) 耐心等待数据库初始化,成功之后去查MySQL,可以看到在jira库下多了很多张表
连接数据库的配置在/export/atlassian/application-data/jira/dbconfig.xml里
e) 继续配置,[application title]填将来jira起来后页面上显示的标题,比如JCloud JIRA,[Base URL]还填申请好的域名http://cloudjira.jd.com:8080
f) 填license:这一步直接从页面上点链接到Jira官网上,先用email注册一个账号,进email收激活邮件,然后先申请一个试用的license,[product]选JIRA Software(Server),[Organization]选Evaluation license,[Your instance is]选up and running,从配置页面上拷贝并输入[Server ID],点[Generate License]得到license key,拷贝贴回到配置页面,next,先跳过setup email notification,直接Finish,再选择语言为[中文],然后就可以进Jira了
g) 验证破解:进入之后,进[应用程序]->[版本和许可证],可以看到[技术服务器截至日期]已经是08/二月/33,意思是2033年2月08日到期,接下来就可以使用Jira了,7.3.8版本包含Jira Core和Jira Agile
8) Jira默认分配给JVM的内存是384M-768M,可修改/export/atlassian/jira/bin/setenv.sh,增加JVM内存:
JVM_MINIMUM_MEMORY="3840m"
JVM_MAXIMUM_MEMORY="7680m"
再到Jira管理界面的系统信息里,Java虚拟机内存统计,看内存统计图,就不该是长长的红条了。详细信息里Metaspace总是0%可用,这是jdk1.8用metaspace替代PermGen的正常现象。如果想限制metaspace的大小,可以参考以下网文,但我没做:
https://confluence.atlassian.com/jirakb/the-jira-applications-memory-information-screen-displays-0-free-metaspace-873885725.html
https://www.cnblogs.com/kaola8023/p/8057522.html
4. 两台机器,配置MySQL的主从
1) 先将主上现有的数据库导出来,为避免不一致,先将Jira停了:
/export/atlassian/jira/bin/stop-jira.sh
2) shell下导出jira数据库
mysqldump -uroot -prootpassword --databases jira > /root/mysql/jira.sql
但是报错:
mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) when trying to connect
这是因为之前改了默认datadir的原因,还得再去改my.cnf
3) vi /etc/my.cnf,增加[client]段,可加在[mysqld]和[mysql]之间
[client]socket=/export/Data/db/mysql/mysql.sock
socket的路径需与[mysqld]和[mysql]一致
重启mysql使之生效:service mysqld restart
4) 重新导出jira数据库:
mysqldump -uroot -prootpassword --databases jira > /root/mysql/jira.sql
5) sftp导出的jira.sql到从上
6) 在jira.sql的当前目录下执行命令导入: mysql -uroot -prootpassword jira < jira.sql,导入完后进mysql看下现在jira数据库不为空了
7) 在主上打开binlog:
vi /etc/my.cnf,在[mysqld]段,增加下面几行:
log_bin=mysql-bin # mysql-bin是bin-log文件的名字,可以自定义
server-id=39 # 唯一的id号,这里取了同一ip段的最后一段
binlog-do-db=jira # 需要同步的数据库的名字,如果有多个,每个写一行
改完后重启mysql:service mysqld restart
然后检查一下是否真的已经打开:
mysql> show variables like 'log_bin%';
+---------------------------------+---------------------------------------+
| Variable_name | Value |
+---------------------------------+---------------------------------------+
| log_bin | ON |
| log_bin_basename | /export/Data/db/mysql/mysql-bin |
| log_bin_index | /export/Data/db/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
+---------------------------------+---------------------------------------+
5 rows in set (0.00 sec)
8) 在主上创建同步账号并赋权:
mysql> create user 'jirasync'@'172.18.167.121' identified by 'syncpassword';
Query OK, 0 rows affected (0.00 sec)
mysql> grant replication slave on *.* to 'jirasync'@'172.18.167.121';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
查一下主状态
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 519 | jira | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
9) 到从上打开binlog:
vi /etc/my.cnf增加两行:
log_bin=mysql-bin
server-id=121
保存后重启mysql:service mysqld restart
10) 试一下从上是否可以用同步账号
mysql -h 172.18.167.39 -u jirasync -p
确认可以登录
11) 在从上配置主从复制
# mysql -uroot -p
mysql> change master to
-> master_host='172.18.167.39',
-> master_user='jirasync',
-> master_password='SYNCjira_001';
12) 启动
mysql> start slave;
13) 检查状态
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.18.167.39
Master_User: jirasync
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 519
Relay_Log_File: A02-R12-I167-121-6XJ2S62-relay-bin.000002
Relay_Log_Pos: 367
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 1133
Last_Error: Error 'Can't find any matching row in the user table' on query. Default database: ''. Query: 'GRANT REPLICATION SLAVE ON *.* TO 'jirasync'@'172.18.167.121''
Skip_Counter: 0
Exec_Master_Log_Pos: 154
Relay_Log_Space: 958
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 1133
Last_SQL_Error: Error 'Can't find any matching row in the user table' on query. Default database: ''. Query: 'GRANT REPLICATION SLAVE ON *.* TO 'jirasync'@'172.18.167.121''
Replicate_Ignore_Server_Ids:
Master_Server_Id: 39
Master_UUID: 370924f6-f4f3-11e7-b6e1-ecf4bbe58630
Master_Info_File: /export/Data/db/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp: 180110 18:12:43
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
出错了,如果成功的话,Slave_IO_Running和Slave_SQL_Running都应该是Yes,且Seconds_Behind_Master不该是NULL
14) 原因还是主从事务不统一的原因,可能是期间发生了写操作或者事务回滚了,在从上执行
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
Query OK, 0 rows affected (0.00 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.18.167.39
Master_User: jirasync
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 519
Relay_Log_File: A02-R12-I167-121-6XJ2S62-relay-bin.000003
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
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: 519
Relay_Log_Space: 1124
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 39
Master_UUID: 370924f6-f4f3-11e7-b6e1-ecf4bbe58630
Master_Info_File: /export/Data/db/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.01 sec)
这回对了
15) 再次检查
a) 在主上查master状态:
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 519 | jira | | |
+------------------+----------+--------------+------------------+-------------------+
position不该为0
b) 在从上查slave状态,如上所示,Slave_IO_Running和Slave_SQL_Running都应该是Yes
c) 在从上查 线程状态
mysql> show processlist;
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
| 8 | root | localhost | NULL | Query | 0 | starting | show processlist |
| 11 | system user | | NULL | Connect | 571 | Waiting for master to send event | NULL |
| 12 | system user | | NULL | Connect | 2614 | Slave has read all relay log; waiting for more updates | NULL |
+----+-------------+-----------+------+---------+------+--------------------------------------------------------+------------------+
应该有标红的两行
16) 配置完毕,现在可以再把Jira拉起来了
/export/atlassian/jira/bin/start-jira.sh
17) 稍等一下才能进入jira网页,创建一个新的issue,然后去从上,查询数据库看看是否被同步过来了
select * from jira.jiraissue;
至此全部完成
5. 试用结束后,重新初始化Jira
1) 先把jira停了: /export/atlassian/jira/bin/stop-jira.sh
2) 停MySQL的主从同步:
登录到从的mysql上,停主从:
mysql> stop slave;
3) 创建新的jira数据库,并打开主从同步
a) 先在主上创建:
mysql> create database cloud_jira default character set utf8 collate utf8_bin;
mysql> grant all on cloud_jira.* to 'jira'@'%' identified by 'jirapassword';
b) 再在从上创建:
mysql> create database cloud_jira default character set utf8 collate utf8_bin;mysql> grant all on cloud_jira.* to 'jira'@'%' identified by 'jirapassword';
c) 改主上的配置,改变要同步的数据库名字:
vi /etc/my.cnf
binlog-do-db=cloud_jira # 需要同步的数据库的名字,如果有多个,每个写一行
主从同步其他的配置,包括从上的配置,都沿用原来的就行,不用再改
d) 重启主上的mysql:
service mysqld restart
e) 检查主上的同步状态:
mysql> show master status;
f) 重新打开从上的同步:
mysql> start slave
g) 检查从上的同步状态:
mysql> show slave status\G
4) 重新初始化jira
a) 把jira的配置文件删了,这样在重启动jira时,jira因为找不到配置文件,会重新启动初始化的页面:
rm /export/atlassian/application-data/jira/dbconfig.xml
b) 重新启动jira:
/export/atlassian/jira/bin/start-jira.sh
5) 耐心等待一两分钟后,再重新访问jira的页面,这时就会重新进入初始化页面,参考上述3.7)所述重新配置jira即可,注意填外部数据库时,要填入新创建的jira数据库cloud_jira
6) 重新登录主从,查一下新的cloud_jira数据库中是否已经同步了最新的jira信息,比如新的用户是否正确
7) 都OK后,把原来的旧数据库删掉:
在主从上都执行一下:
mysql> drop database jira;
6. Jira崩溃或无法重启后使用备份文件恢复系统
1) stop jira报错catalina_pid不符之类的错误,造成无法停jira,那么只能强行kill -9杀掉jira的tomcat进程
2) 但是杀掉进程之后再试图start的时候,同样报错start失败,碰到问题start-jira.sh成功,但是页面上报错:Jira Startup Failed: Unable to clean the cache directory: /export/atlassian/application-data/jira/plugins/.osgi-plugins/felix,查了很多说法,都不靠谱,最后看到atlassian官网说不但要清osgi-plugins的目录,还要把plugins目录全都清了。做了之后再重启jira发现jira页面直接回到了刚安装完的页面,而且配置mysql之后下一步之后也报错走不下去!没有办法,只好删掉dbconfig文件,从头重新初始化jira
3) 重新创建一个新的mysql database给jira用,然后在页面上选择自己配置,填入新的空数据库信息,然后不要往下走初始化,而要点击选择我有数据库文件,转到导入页面,导入之前备份的文件,默认是在/export/atlassian/application-data/jira/export目录下,耐心等待导入,在90%处会有一段时间,然后系统重新索引,全部完成之后,系统恢复完毕
4) 要注意两个问题:
a) 导入文件出错,检查备份文件有没有读写权限,默认是600,改成666试下
b) 恢复后发现附件都没有了,检查filesattachement表和/export/atlassian/application-data/jira/data/attachement目录都存在,检查一下后者及子目录是否owner是jira:jira,如果是root:root那么就会无法显示读取附件
c) 安装插件scriptrunner后,报错.class无权限。也需要把/export/atlassian/application-data/jira/scriptrunner目录及子目录都改成owner jira:jira
d) 重新做主从同步
7. Jira页面上频繁报错checkhealh-eol错误的解决:
a) 在/export/atlassian/application-data/jira目录下手动创建一个json文件:
vi jira-healthcheck-eol.json
插入如下内容:
{"versions":[{"name":"7.3.0","releaseDate":"2017-01-03"},
{"name":"7.2.0","releaseDate":"2016-08-24"},{"name":"7.1.0","releaseDate":"2016-02-10"},{"name":"7.0.0","releaseDate":"2015-10-06"}]}
b) 重启jira
在主从上都执行一下:
mysql> drop database jira;
6. Jira崩溃或无法重启后使用备份文件恢复系统
1) stop jira报错catalina_pid不符之类的错误,造成无法停jira,那么只能强行kill -9杀掉jira的tomcat进程
2) 但是杀掉进程之后再试图start的时候,同样报错start失败,碰到问题start-jira.sh成功,但是页面上报错:Jira Startup Failed: Unable to clean the cache directory: /export/atlassian/application-data/jira/plugins/.osgi-plugins/felix,查了很多说法,都不靠谱,最后看到atlassian官网说不但要清osgi-plugins的目录,还要把plugins目录全都清了。做了之后再重启jira发现jira页面直接回到了刚安装完的页面,而且配置mysql之后下一步之后也报错走不下去!没有办法,只好删掉dbconfig文件,从头重新初始化jira
3) 重新创建一个新的mysql database给jira用,然后在页面上选择自己配置,填入新的空数据库信息,然后不要往下走初始化,而要点击选择我有数据库文件,转到导入页面,导入之前备份的文件,默认是在/export/atlassian/application-data/jira/export目录下,耐心等待导入,在90%处会有一段时间,然后系统重新索引,全部完成之后,系统恢复完毕
4) 要注意两个问题:
a) 导入文件出错,检查备份文件有没有读写权限,默认是600,改成666试下
b) 恢复后发现附件都没有了,检查filesattachement表和/export/atlassian/application-data/jira/data/attachement目录都存在,检查一下后者及子目录是否owner是jira:jira,如果是root:root那么就会无法显示读取附件
c) 安装插件scriptrunner后,报错.class无权限。也需要把/export/atlassian/application-data/jira/scriptrunner目录及子目录都改成owner jira:jira
d) 重新做主从同步
7. Jira页面上频繁报错checkhealh-eol错误的解决:
a) 在/export/atlassian/application-data/jira目录下手动创建一个json文件:
vi jira-healthcheck-eol.json
插入如下内容:
{"versions":[{"name":"7.3.0","releaseDate":"2017-01-03"},
{"name":"7.2.0","releaseDate":"2016-08-24"},{"name":"7.1.0","releaseDate":"2016-02-10"},{"name":"7.0.0","releaseDate":"2015-10-06"}]}
b) 重启jira
评论
发表评论