背景
confluence A中安装了30个插件。从confluence B中需要安装这个30个插件(注:A与B的confluence版本相同)。当然,我知道,可以从插件商店中一个个手动安装,平均一个插件只需要3分钟,那30个插件可能只需要1.5小时。但是,有没有更快速的解决方案呢?有的
解决方案
confluence将插件以二进制数据存在表PLUGINDATA中。我们可以根据这个原理,使用数据库恢复的方式,一次性安装30个插件。
首先从confluenceA的数据库中dump表PLUGINDATA。执行MySQL命令
mysqldump -u username -ppassword docsnewdb PLUGINDATA >final_plugin.sql
然后倒入confluenceB的数据库中,执行MySQL命令
mysql> source ~/final_plugin.sql
在导入数据库时,由于PLUGINDATA
表的字段DATA
的size太大了,有的8M左右,导入失败。需要修改/etc/my.cnf
文件
max_allowed_packet = 10M //主要是扩大这个属性
character-set-server=utf8
collation-server=utf8_bin
导入成功之后,重启confluence。
方案很简单吧。但是这里会有一个问题。因为confluenceA的数据库编码是utf8,但是它的collation 是缺省的。但是confluenceB的数据库编码是utf8,collation 是utf8-bin。虽然导入confluenceB成功了。但是启动confluence B时会报错,报错的信息大概意思是confluence中存在collation 缺省的表。
所以修改final_plugin.sql
文件如下所示:
如果你的confluenceA和confluenceB的编码完全一致,这个问题可以忽略。
一次性卸载插件方法
同理,卸载30个插件不用手动一个个卸载。只需要做以下几步就可以了。
- 清空以下四个文件的文件
The <confluence-home>/bundled-plugins folder
The <confluence-home>/plugin-cache folder
The <confluence-home>/plugins-osgi-cache folder
The <confluence-home>/plugins-temp folder
- 清空表
PLUGINDATA
truncate PLUGINDATA
然后重启confluence,所有的插件都卸载了。
参考文献
Confluence Does Not Start with 'Detected tables with non-default character encoding/collation' Message
install plugins from file system