云南网站建设优化/系统开发
由于机房掉电导致团队的Confluence服务器异常关机,服务器重新上电后发现Confluence服务异常,而后续的恢复过程比较曲折,且个别恢复操作非常重要(执行错误可能导致数据丢失),特此记录恢复流程供大家参考。
服务器上电
首先是给掉电的服务器上电,这个没什么好说的,服务器开机就完事了。
打开ssh服务
如果是在机房用显示器/键盘直连服务器或服务器ssh服务默认是开启状态,则此步可以跳过,否则需要手动执行以下命令打开ssh服务:
service sshd start
关闭服务器防火墙
如果服务器防火墙默认关闭,则此步可以跳过,否则需要手动执行以下命令关闭防火墙:
service iptables stop
此时访问Confluence页面(http://xx.xx.xx.xx:8090/)会有如下错误提示:
Cause
org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: could not execute statement; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1290]; The MySQL server is running with the --read-only option so it cannot execute this statement; nested exception is java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statementat org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:84)caused by: java.sql.SQLException: The MySQL server is running with the --read-only option so it cannot execute this statementat com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
从Confluence抛出的异常可以看服务器异常掉电重启后执行sql语句失败了,原因是Mysql数据库变成了只读状态。
停止Confluence服务
进入Confluence的安装目录(笔者的目录是/opt/atlassian/confluence/bin)停止confluence服务。
脚本这里就不贴出来了,进到这个目录后很容易看出来停服务应该调用哪个脚本,要注意的是:上一步报错中提示Mysql数据库变成了只读状态这是有原因,一定一定不能在Confluence服务没有停止的时候去操作数据库!,笔者第一次傻乎乎的直接进Mysql改了read_only的状态,导致Confluence生成了2个实例,然后就没有然后了,网上也没有文档说遇到这种情况怎么解决,只能重装,所有历史数据全部丢失。
修改数据库状态
进入mysql数据库中的confluence实例(实例名字以创建时传的为准),执行以下语句修改只读状态:
set global read_only=0;
启动Confluence服务
进入Confluence的安装目录(笔者的目录是/opt/atlassian/confluence/bin)重新启动confluence服务。
结束
至此Confluence恢复流程结束,访问Confluence页面恢复正常。