前言
之前,写过一篇对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数据源脚本