配置外接数据库

  • 文档创建者:jiangsr
  • 编辑次数:79次
  • 最近更新:Wendy123456 于 2020-09-30
  • 1. 概述

    1.1 版本

    报表服务器版本
    JAR 包版本
    10.0
    2019-05-20

    注:JAR 包版本低于 2019-05-20 时,用户配置外接数据库时只能迁移数据,不可直接启用新数据库。

    1.2 应用场景

    报表内置的数据库为 HSQL 数据库,HSQL 数据库不能多线程访问,集群环境、数据量较大可能会导致 HSQL 数据库不稳定的情况,适用于本地试用产品功能,而外接数据库适用于平台的正式使用。

    而迁移是建立在已有旧数据的基础上,旧数据的迁移过程存在不可预知的问题,因此客户可自行选择迁移数据或直接启用新数据库。

    1.3 功能简介

     报表系统配置外接数据库后,遇到集群环境或数据量较大情况时,可保证报表系统的稳定性。

    2. 数据库配置

    2.1 支持的数据库

    数据迁移支持的数据库类型及版本如下表所示:

    数据库类型JAR 包版本支持数据库版本
    MySQL不限
    5.1.73、5.5.31、5.5.46、5.5.56、5.6.22、5.6.31、5.7.16
    SQL Server不限
    2000、2005、2008、2012、2014、2016
    2019-02-282017
    Oracle不限
    10g、11g、12c、9i
    DB22018-12-27

    9.7、8.2、11.1

    使用 DB2 数据库时需要先放置驱动,[平台] IBM DB2数据连接

    RDS MySQL2019-05-20-

    2.2 硬件配置估算

    用户数量权限复杂度推荐大小( 具体情况需考虑其他配置复杂度及访问量 )
    1~100简单25M
    中等50M
    100~2000简单40M
    中等85M
    复杂150M
    2000~30000简单130M
    中等250M
    复杂500M

    3. 外接数据库配置步骤

    用户可在「初始化时」配置外接数据库或在「平台中」配置外接数据库。这两种配置方式除了方法不同,具体配置要求及步骤相同。

    3.1 方式一:初始化时配置外接数据库

    3.1.1 进入初始化界面

    用户可在第一次进入平台时配置外接数据库,如下图所示:

    1597910855166843.png

    3.1.2 准备数据要迁移到的数据库

    准备将平台数据要迁移到的数据库,建议用户在本地数据库中新建一个空的数据库(数据库大小请参考本文 2.2 节)。后续外接数据库配置时的数据库名称需要填入对应迁入存储的数据库名称。

    注:不同版本的 FineReport 工程,它们的外接数据库不能是同一数据库,否则数据可能会出现错乱。

    3.1.3 配置外接数据库

    点击「配置数据库」后,进入到外接数据库配置界面,数据库类型包含:MySQL、SQL Server、Oracle、DB2 四种,输入实际数据库相应的信息即可。如下图所示:

    1601264156666025.png

    各设置项说明如下表所示:

    设置项说明
    数据库类型包括 MySQL、SQL Server、Oracle、DB2 四种,用户根据实际情况选择
    驱动

    会根据所选择的数据库类型自动变化,默认即可

    数据库名称
    • 将平台数据要迁移到的数据库名称,建议用户在本地数据库中新建一个空的数据库(数据库大小请参考本文 2.2 节)

    • 数据库名称:只允许包含数字、字母、下划线和「.」

    用户名/主机/密码/端口
    • 根据本地数据库实际情况填写

    • 主机名称:只允许包含数字、字母、下划线、「-」和「.」

    模式数据库类型不是 MySQL 时,需要设置「模式」,请根据数据库类型参考本文第四章内容

    3.1.4 迁移成功

    等待一段时间,提示已成功启用新数据库。如下图所示:

    注:请勿在迁移过程中刷新页面。

    13.png

    3.2 方式二:平台中配置外接数据库

    3.2.1 准备数据要迁移到的数据库

    准备将平台数据要迁移到的数据库,建议用户在本地数据库中新建一个空的数据库(数据库大小请参考本文 2.2 节)。后续外接数据库配置时的数据库名称需要填入对应迁入存储的数据库名称。

    注:不同版本的 FineReport 工程,它们的外接数据库不能是同一数据库,否则数据可能会出现错乱。

    3.2.2 进入平台

    管理员进入数据决策系统,点击「管理系统>系统管理>常规>待配置」,如下图所示:

    注:若平台已配置外接数据库,则显示「已配置」。

    15.png

    3.2.3 配置外接数据库

    输入实际数据库相应的信息,配置外接数据库。如下图所示:

    16.png

    各设置项说明如下表所示:

    设置项说明
    数据库类型包括 MySQL、SQL Server、Oracle、DB2 四种,用户根据实际情况选择
    驱动

    会根据所选择的数据库类型自动变化,默认即可

    数据库名称
    • 将平台数据要迁移到的数据库名称,建议用户在本地数据库中新建一个空的数据库(数据库大小请参考本文 2.2 节)

    • 数据库名称:只允许包含数字、字母、下划线和「.」

    用户名/主机/密码/端口
    • 根据本地数据库实际情况填写

    • 主机名称:只允许包含数字、字母、下划线、「-」和「.」

    模式数据库类型不是 MySQL 时,需要设置「模式」,请根据数据库类型参考本文第四章内容

    3.2.4 配置成功

    等待一段时间,会跳出弹窗提示:已成功启用目标数据库,点击「确定」即可。如下图所示:

    注1:请勿在迁移过程中刷新页面。

    注2:数据库配置成功后无需重启。

    1601274027303562.png

    3.2.5 效果查看

    外接数据库配置成功后,平台界面如下图所示:

    18.png

    「迁移数据至要启用的数据库」按钮说明:

    1)该按钮默认勾选。

    2)勾选「迁移数据至要启用的数据库」:

    • 进行二次迁移时,配置方式与初始化配置逻辑相同,不生成历史数据备份文件。

    • 二次迁移时,若数据库中已存在平台数据,导入数据前将清空原有平台数据。提示如下图所示:

    1601346675403024.png

    3)不勾选「迁移数据至要启用的数据库」:

    • 二次迁移时,若外接数据库不为空,直接启用新数据库,迁移成功后,提示如下图所示:

    1601346909552549.png

    且自动备份启用前数据库的配置信息,如下图所示:

    注:只有不勾选数据迁移,直接启用新库时,才会生成db.properties.bak;如果迁移数据,则不生成db.properties.bak

    8.png

    • 二次迁移时,若外接数据库为空,提示将当前数据迁移到目标数据库。

    1601347324606807.png

    4. 外接数据库类型

    注:MySQL、SQL Server、Oracle、DB2 四种数据库的用户,需要基本具备的权限:create、delete、alter、update、select;建议最好有最高 root 权限。

    4.1 MySQL 数据库

    以在平台中配置外接数据库为例,介绍配置外接数据库的步骤。

    4.1.1 配置步骤

    1)新建 MySQL 数据库

    准备将平台数据要迁移到的数据库,建议用户在本地数据库中新建一个空的数据库(数据库大小请参考本文 2.2 节)。本次示例准备的 MySQL 数据库是新建的名为 qianyi 的数据库。如下图所示:

    注:不同版本的 FineReport 工程,它们的外接数据库不能是同一数据库,否则数据可能会出现错乱。

    1601275396137676.png

    MySQL 数据库需要注意以下几点:

    • 外接 MySQL 数据库时,编码只支持 utf8 – UTF-8 Unicode ,不支持 utf8mb4 – UTF-8 Unicode 

    • 平台外接 MySQL 数据库时,需要设置字符集排序规则(大小写敏感)。

    MySQL 中存在多种格式的 utf8 编码的排序规则,其中最常见的两种如下表所示:

    字符集排序规则  含义示例  
    utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写Alex 和 alex 被认为是两个不同的值  
    utf8_general_ci ci 为 case insensitive 的缩写,即大小写不敏感,为 utf8 默认编码Alex 和 alex 被认为是相同的值

    推荐在配置外接 MySQL 数据库前,先设置数据库默认字符集为 utf8 ,默认排序规则为 utf8_bin。如下图所示:

    222

    2)配置外接数据库

    参考本文 3.2 节,进入平台,输入实际的数据库信息,配置外接数据库即可。

    4.1.2 注意事项

    如果一开始数据库排序规则没有设置 utf8_bin ,但已经迁移过去了,那么有两张表 fine_conf_entity、 fine_conf_classname 需要修改为 utf8_bin,下面以 fine_conf_entity 为例:

    1)查询当前的字符集排序规则 

    show full columns from fine_conf_entity

    2)设置字符集排序规则为 utf8_bin 

    • 设置列的默认校验规则 

    ALTER TABLE fine_conf_entity MODIFY id VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin;
    • 设置表的校验规则 

    ALTER TABLE fine_conf_entity DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

    3)查看是否修改成功 

    show full columns from fine_conf_entity

    4)用上面1)2)3)相同的步骤将 fine_conf_entity 替换为 fine_conf_classname 表,设置如下图所示:

    222

    4.2 Oracle 数据库

    4.2.1 配置步骤

    1)新建账户

    对于 Oracle 数据库,配置前最好单独建一个账户(新建一个表空间,并指定为该用户默认表空间)。
    例如用 system 用户登录 Oracle,添加用户 finedb:

    create tablespace finedb datafile '/u01/oraDatafile/finedb01.dbf' size 50M autoextend on next 64M maxsize unlimited extent management local;
    create user finedb identified by fr123 default tablespace finedb;

    并对该用户进行赋权限:

    grant connect,resource to finedb; 
    grant create sequence to finedb;
    grant create  table to finedb;
    grant unlimited tablespace to finedb;
    grant create  procedure to finedb;
    grant create  view to finedb;
    grant create  Trigger to finedb

    image.png

    注:在迁移 FineDB 数据库时要求使用的表空间最好是空的。

    2)新建数据库

    在 Oracle 中新建用于存储迁移数据的 FineDB 数据库。此处,若不新建的话,要求使用的表空间最好是空的,且在后续外接数据库配置时的数据库名称需要填入对应迁入存储的数据库名称。

    3)配置外接数据库

    参考本文 3.2 节,进入平台,输入实际的数据库信息,配置外接数据库即可。

    配置到 Oracle 的时候,会有一个模式的选项。模式的名字和数据库用户的名字相同(Oracle 的用户名和模式推荐大写)。

    222

    当 Oracle 集群的时候,我们需要使用 jdbc:oracle:thin:@<host>:<port>/<service_name> 格式,如下图所示:

    6.png

    4.3 SQL Server 数据库

    参考本文 3.2 节,进入平台,输入实际的数据库信息,配置外接数据库即可。外接数据库为SQL Server 时,需要注意「模式设置」和「排序规则」,具体介绍如下所示。

    4.3.1 模式设置

    1)2018-12-27 之后的 JAR:

    外接 SQL Server 数据库的时候,会有一个模式(schema)的选项。默认选择 dbo 即可。

    也可以用SELECT * FROM sys.database_principals查找一下已有的模式,或者使用 Navicat 连接查看各数据库的模式较直观。

    2)2018-12-27 之前的 JAR:

    外接 SQL Server 数据库的时候,没有模式(schema)的选项。当升级 2018-12-27 之后的 JAR 时,需要手动添加模式(schema)。

    添加方法:修改%FR_HOME%\webapps\webroot\WEB-INF\config\db.properties文件,手动添加模式(schema)。

    若为 dbo 模式,hibernate.default_schema=dbo,如下图所示:

    222

    4.3.2 排序规则

    SQL Server 数据库的排序规则可选择 Chinese_PRC_CS_AS(大小写敏感)或 Chinese_PRC_CI_AS(大小写不敏感),建议使用 Chinese_PRC_CS_AS(区分大小写 )。

    • 选择 Chinese_PRC_CS_AS ,将原封不动的把全部数据迁移过去。

    • 选择 Chinese_PRC_CI_AS ,迁移时如果报 fine_conf_entity 表违反了 PRIMARY KEY 约束之类的字样,通常是工程有脏数据,可执行下面SQL语句查看脏数据:select lower(ID),COUNT(1) FROM FINE_CONF_ENTITY GROUP BY LOWER(ID) HAVING COUNT(1) >1

    4.4 DB2 数据库

    参考本文 3.2 节,进入平台,输入实际的数据库信息,配置外接数据库即可。外接数据库为 DB2 数据库时,需要注意「模式设置」和「日志空间配置」,具体介绍如下所示。

    4.4.1 模式设置

    外接到 DB2 数据库的时候,会有一个模式的选项。模式一般和用户名一样。

    注:DB2 迁移的时候用户名是高权限的,会有和用户名同名的模式,也可以另外新建模式。
    222

    4.4.2 日志空间配置 

    如果 FineDB 数据量过大,而日志空间又不足,很可能在配置过程中出错(SQLCODE=-964, SQLSTATE=57011),所以需要确保日志空间足够

    get db cfg for DATABASENAME

    查看日志配置, 参考配置如下 

    • 修改日志文件大小:

    db2 update db cfg for <DATABASENAME> using LOGFILSIZ 8192
    • 修改主日志文件个数:

    db2 update db cfg for <DATABASENAME> using LOGPRIMARY 50
    • 修改辅助日志文件个数:

    db2 update db cfg for <DATABASENAME> using LOGSECOND 20

    4.5 外接数据库为 RDS MySQL 数据库

    参考本文 3.2 节,进入平台,输入实际的数据库信息,配置外接数据库即可。配置外接数据库时需注意以下几点:

    • 当使用阿里云 RDS MySQL 数据库时,迁移时会出现连接成功但是导入报错的情况,是由于阿里云 RDS 5.6 之后开启了 GTID 来增加安全性,且默认开启无法关闭,阿里云 RDS 5.5 版本没有这个问题。

    • 和 MySQL 数据库相同,RDS MySQL 数据库也需要设置字符集排序规则(大小写敏感),设置方法和 MySQL 相同,具体请参见本文第三章节内容。

    5. 外接数据库回迁

    配置外接数据库后,在「管理系统>系统管理>常规」界面,「外接数据库」位置,可以看到显示「已配置」,如下图所示:

    2020-09-29_17-30-13.jpg

    外接数据库的配置信息保存在%FR_HOME%\webapps\webroot\WEB-INF\config路径下,如下图所示:

    26.png

    实际使用中,当 finedb 外接数据库无法连接或者需要进行工程迁移时,就需要将 finedb 回迁,从外接数据库变换成内置数据库,详细内容可参考:外接数据库回迁内置数据库

    附件列表


    主题: 数据决策系统
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!