前言
之前,寫過一篇對pentaho BI Server-3.5版本將內置內容數據庫遷移到mysql的博文,詳細內容可以參考這里,現在由於由於項目的需要,重拾對pentaho的全方面研究。既然考慮使用pentaho,自然也就理所當然地選擇對pentaho當前最新的穩定版本進行調研學習呢。當前最新版本的pentaho社區版為4.5版本,這里所講的版本是指的是pentaho BI Server的最新版本,至於pentaho集成的其他組合版本就不一定呢。在這里,我們就不對pentaho的歷史、作用等作詳細地講解呢,在本篇博文中,主要講解一下,如何將pentaho BI Server-4.5從內置的內存數據庫hsql順利地遷移到mysql數據庫中。之所以要這樣做,一方面為了在之后對pentaho平台源碼的調試研究,另一方面也是未來將pentaho投入到實際的生產環境的必然選擇。接下來,就讓我們詳細來詳解下對遷移步驟吧!
遷移准備
無論如何,我們需要先獲取pentaho BI Server-4.5源碼,大家點擊這里可以快速下載最新版本的pentaho BI Server-4.5源碼壓縮包,下載完成后將得到一個名為biserver-ce-4.5.0-stable.zip的壓縮包,將些壓縮包解壓到D盤根目錄下,進入當前目錄, 我們可以看到如下目錄結構:
已經獲得了BI Server項目包,接下來,我們就正式開始我們的遷移工作吧!
遷移詳解
注意,接下來提及的目錄路徑都默認將pentaho BI Server放置於D盤根目錄下。首先我們進入目錄:D:\biserver-ce-4.5.0-stable\biserver-ce\data\mysql5,此文件夾中存放着pentaho遷移到mysql數據庫的所有腳本信息,需要注意的是,這里的腳本不包括pentaho自帶的sampledata數據庫腳本,關於這個腳本,文章末尾會給出下載地址,需要的同學可以直接下載進行安裝。當前文件夾結構為:
依次將上面前三個腳本文件在mysql客戶端中進行執行,以便生成相應的數據庫。這里,create_quartz_mysql.sql腳本生成quartz數據庫,而create_repository_mysql.sql腳本生成hibernate數據庫,至於create_sample_datasource_mysql.sql用於生成hibernate數據庫中datasource表記錄。這里需要特別提醒一點的是,在create_quartz_mysql.sql和create_repository_mysql.sql腳本文件的開頭,我們都可以看到如下語句:
這兩條語句的作用是一致的,都是將相關數據庫操作權限分配給對應的帳號,比如quartz數據庫分配給pentaho_user用戶,而hibernate數據庫分配給hibuser用戶。建議大家不要修改兩帳號信息,由於pentaho中有關mysql的配置文件中的相關配置項都與上述兩用戶信息相關,如果修改將導致之后的配置工作量加大,下面大家就就會明白。
完成對mysql相關數據庫建立工作之后,接下來,我們進入如下目錄:D:\biserver-ce-4.5.0-stable\biserver-ce\tomcat\webapps\pentaho\META-INF,當前文件夾結構為:
用記事本打開context.xml文件(建議使用nodepad++打開),我們可以看到如下內容:
將紅色的部分修改為下面的內容即可:
這里之所以不需要修改相應的username和password,是因為剛剛在創建相應的數據庫時已經指定了相應的帳號信息,所以這里就可以完全不用修改它們,節省了我們不少的工作量。
接下來,我們進入如下目錄:D:\biserver-ce-4.5.0-stable\biserver-ce\pentaho-solutions\system\hibernate,當前文件夾存放着hibernate相關的所有配置文件,目錄結構如下:
同樣首先用記事本打開hibernate-settings.xml文件,找到如下配置項:
修改成如下內容:
再用記事本打開mysql5.hibernate.cfg.xml文件,注意當前文件是不需要進行任何修改的,因為數據庫連接信息均為我們之前默認創建的帳號信息,下面只貼出數據庫連接信息的核心部分內容:
我們可以看到,username和password默認都是hibernate創建時所使用的帳號信息,因此這里無需進行更改,貼出來只是為了讓大家更明白而已。
到這里,我們還需要對最后一個配置文件進行修改。穩步到如下目錄:D:\biserver-ce-4.5.0-stable\biserver-ce\pentaho-solutions\system,用記事本打開當前目錄下的applicationContext-spring-security-hibernate.properties文件,里面內容如下:
將其中內容修改為如下形式即可:
到這里,我們已經將所有需要配置的文件都已經修改完成呢。其實,在當前目錄下,還有一文件需要進行修改,即applicationContext-spring-security-hibernate.xml,但是它里面的配置項都通過applicationContext-spring-security-hibernate.properties文件中相應的配置項進行配置呢,所以也就省去了重復配置的必要,下面貼出applicationContext-spring-security-hibernate.xml中datasource部分的配置內容:
可以看出,其中的各個配置項都通過${ }符號來動態引用applicationContext-spring-security-hibernate.properties文件里的相應配置內容,所以我們也就沒必要將這些配置項進行硬編碼操作呢,這是不是很巧妙呢:)
完成了對BI Server所有配置文件的修改,接下來,也只剩下最后的一件事呢,配置pentaho自帶的數據源,即sampledata數據庫的連接測試工作。對於sampledata的腳本可以點擊這里獲得,然后在mysql中運行創建完成對sampledate數據庫的生成操作。這里,我們主要來講述下,如何通過console來修改測試數據源數據庫。
進入如下目錄:D:\biserver-ce-4.5.0-stable\administration-console,點擊start-pac.bat批運行文件,然后通過http://localhost:8099/進行pentaho 控制台頁面,輸入默認帳號:admin/password,進入主頁,如下圖所示:
這里簡單說明一下,進入主頁后,選擇Database Connections選項卡,選中SampleData,在右邊選擇對應的Driver Class和填寫sampledata數據庫的連接字符串信息,即用戶名和密碼以及URL,點擊測試Test按鈕,如果配置正確,將會彈出連接測試成功提示信息,如上圖所示。測試成功之后,點擊更新Update按鈕,將數據源信息更新到hibernate數據庫中的datasource表中,這樣就完成了對數據源的配置工作。(ps:之前自己在配置的過程中,在這一步一直提示找不到合適的驅動程序錯誤,根源就在自己在URL字符串多出了一個空白符,這里提醒下各位同學,確保將URL填寫正確)最后貼出自己mysql中與pentaho相關的數據庫示圖吧!
為了驗證我們是否成功遷移到mysql數據庫,我們還需要完成最后一件事情,進入如下目錄:D:\pentaho4.5\biserver-ce-4.5.0-stable\biserver-ce\tomcat\webapps\pentaho\WEB-INF,用記事本打開當前目錄下的web.xml文件,找到如下監聽器:
將其注釋掉,而之所以需要將其注釋掉,是因為pentaho BI Server平台默認便是通過該監聽器啟動內存數據庫hsql,如果不注釋的話,BI Server將仍然使用內存數據庫hsql,這樣也就無法達到驗證我們遷移工作的成功與否呢。
現在,我們已經成功地完成了pentaho遷移到mysql數據庫的操作呢。
結束語
從上面詳細的配置過程來看,配置的內容並不繁雜,但是極易出錯,因為需要我們在配置的過程中仔細認真。一般,而言,按照上述遷移步驟都能順利地完成mysql遷移工作,如果遷移過程中出現問題的同學請留言交流。接下來,我將繼續把自己對pentaho的研究學習過程記錄下來,歡迎對pentaho有興趣的同學一起加入探討學習之旅!
點擊這里獲取sampledata數據源腳本