背景
confluence A中安裝了30個插件格带。從confluence B中需要安裝這個30個插件(注:A與B的confluence版本相同)。當然括授,我知道脆炎,可以從插件商店中一個個手動安裝,平均一個插件只需要3分鐘鞋邑,那30個插件可能只需要1.5小時诵次。但是,有沒有更快速的解決方案呢枚碗?有的
解決方案
confluence將插件以二進制數據存在表PLUGINDATA中逾一。我們可以根據這個原理,使用數據庫恢復的方式肮雨,一次性安裝30個插件遵堵。
首先從confluenceA的數據庫中dump表PLUGINDATA。執(zhí)行MySQL命令
mysqldump -u username -ppassword docsnewdb PLUGINDATA >final_plugin.sql
然后倒入confluenceB的數據庫中怨规,執(zhí)行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