问题
Confluence服务数据恢复
描述
1.一天上午,同事突然反应Confluence服务登陆不了了,然后我就开始排查问题。
2.一开始以为是连接到ldap服务异常了,经过排查发现没有问题,看了下Confluence服务的日志发现找不到用户。
3.排查数据库后,发现数据库创建时间为昨天晚上9点,我去,这tmd被删库了啊!(赶紧排查数据库有没有备份,因为Confluence之前部署在测试环境,也没有深入了解过),发现有数据库备份,长舒了一口气。因为Confluence有产品同事着急使用,就赶紧新搭建个mysql,换下Confluence的数据库连接地址然后重启等待奇迹发生,果然启动失败了,我发现每天全量备份的sql文件少了几张表!!这他m全是坑啊,数据库恢复尝试了很久,彻底死心了没戏了,然后上午搜了一下有没有其他的恢复方式,看的文档上说Confluence默认会将数据每天导出到backup目录,然后登陆主机准备用backup压缩文件恢复,于是新搭建个Confluence,根据提示将备份的压缩文件上传到新Confluence,进度条走到1%后失败了,原因是导入到数据库里的数据有乱码,然后重新搭建Confluence,将安装步骤的jdbc连接指定了utf8字符集后,终于成功了,中间排查问题时间、新环境崩溃重新搭建时间太长了,搞到了凌晨2点多,终于搞好了,使用用户名密码登陆正常登陆进去了,数据也是在的。
原因
Confluence版本为6.x版本是有漏洞的,有一些团队专门入侵Confluence这种漏洞的,时间一般为晚上9点,通过漏洞在你服务器运行挖矿程序。
建议
升级最新版本,Confluence禁止公网访问。
扩展
因为之前Confluence被配置了ldap认证,所以备份恢复之后是没有admin管理权限的,这样导致我的新服务部署之后通过域名编辑不了,文档会跳转到http+ip这种格式的,解决的办法是:新部署的Confluence服务不要直接选择使用备份恢复,而是选择创建空白文档,然后进入基本管理修改站点的url为"https:域名"格式,注意需要在用户管理将用户admin改为改为其他名字,防止导入的数据包含admin导致失败,然后选择备份恢复导入数据等待导入完成就可以了。