历史版本16 :配置外接数据库 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

HSQL 是 FineBI 内置的数据库,但由于 HSQL 不能多线程访问、数据量大后不稳定等原因,导致碰到集群或者数据量比较大时,必须要迁移才能保证系统的稳定性。

1.2 功能简介

可通过配置外接数据库,可将内置的系统配置等数据迁移至外接的数据库,保证系统使用的性能。

配置外接数据库有两种方式:

配置方式
在安装完 FineBI 产品后,进入初始化配置界面会提供配置外接数据库入口,在开始使用产品之前即将数据库外迁
若使用产品前未配置,使用的是内置数据库,则管理员在决策系统的管理系统中也可以进行迁移操作

注:若已迁移至外接数据库,想再改回原来的内置数据库,请参见:外接数据库如何回迁内置数据库

1.3 支持的数据库

数据迁移目前只支持 MySQL、Oracle、SqlServer、DB2 四种数据库类型,具体支持版本如下所示:

    数据库类型      支持数据库版本
MySQL5.1.73、5.5.31、5.5.46、5.5.56、5.6.22、5.6.31、5.7.16           
SqlServer2000、2005、2008、2012、2014、2016
Oracle10g、11g、12c、9i
DB29.7、8.2、11.1,其他版本暂未测试  

1.4 硬件配置估算

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

2. 配置外接 MySQL 数据库编辑

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

2.1 配置步骤

1)首次访问决策平台时,进入初始化设置中的数据库选择阶段,选择配置数据库,如下图所示:

1.png

2)进入到配置界面,如下图所示:

1.png

3)在输入数据库相应信息之前,需要登录外接数据库,并在其中新建一个名为 finedb 的数据库,设置默认字符集排序规则为 utf_bin(MySQL 数据库需要设置排序规则为 utf8_bin),如下图所示:

222

4)finedb 创建完成以后,可以在第二步的配置界面输入外接数据库相应信息,如下图所示:

内容配置信息
数据库类型为 mysqlMySQL
驱动com.mysql.jdbc.Driver
主机外接数据库的 IP(本地直接 localhost )
端口外接数据库端口(默认为 3306 )
用户名和密码外接数据库对应信息

配置填写完成后,下方的数据库连接URL即自动生成,无需更改,如下图所示:

1.png

5)点击启用新数据库,连接并导入数据,如下图所示:

注:不推荐在迁移过程中刷新页面。

1.png

6)成功启用新数据库后,直接点击登录按钮,跳转到登录页面,如下图所示:

1.png

1.png

2.2 注意事项

2.2.1 配置外接 MySQL 数据库注意字符集排序

配置外接的数据库时,MySQL 需要设置字符集排序规则(大小写敏感),MySQL 中存在多种格式的 UTF_8 编码的排序规则,其中最常见的两种如下表所示:

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

推荐在迁移之前在 MySQL 中新建数据库时,就设置好utf8_bin,如下图所示:

222

如果一开始数据库没有设置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

以上步骤将 fine_conf_entity 替换为 fine_conf_classname 表,设置下图所示:

222

注:此处在迁移至 MySQL 数据库时,需要数据引擎为 InnoDB ,详细可参考 MySQL数据库迁移失败 

2.2.2 导入数据报错

问题现象:

导入数据时出错java.lang.Exception: migrate table com.fr.config.entity.Entity failed

解决方案:

需要修改 MySQL 的 my.ini文件 ,字符集改为 utf8,character-set-server=utf8

2.2.3 内存表、内存临时表大小限制

问题现象:

Linux 环境外接 MySQL 数据库配置报错 The table ‘fine_conf_entity’is full
解决方案:

MySQL 的配置文件/etc/my.cnf,在[mysqld]下添加/修改两行:

tmp_table_size = 256M
max_heap_table_size = 256M

系统默认是 16 M,修改完后重启 MySQL

3. 配置外接Oracle数据库编辑

3.1 配置步骤

3.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

1588841653595158.png

3.1.2 新建数据库

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

3.1.3 模式选择

按照 3.1 章节进入外接数据库配置界面,选择 Oracle 后,会有一个模式的选择,模式的名字和数据库用户的名字相同( Oracle 的用户名和模式推荐大写)。

注:此处模式是一系列逻辑数据结构或者对象的集合。一个数据库用户(普通)拥有一个模式,模式的名字和数据库用户的名字相同。每个用户有一个单独的模式,用户创建的对象放在自己的模式中,这个对象叫做模式对象。

222

其余与 3.1 章节步骤基本一致。

3.2 注意事项

当 Oracle 集群的时候,需要使用 jdbc:oracle:thin:@//<host>:<port>/<service_name> 格式,注意是用/而不是 :拼写 URL,如下图所示:

1.png

4. 配置外接 SQL Server 数据库编辑

4.1 连接步骤

SQL Server 的外接配置数据库方法与MySQL 基本一致,按照3.1章节步骤操作即可,但在选择 SQL Server 数据库后,会有一个模式(schema)的选项。默认选择 dbo 即可

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

4.2 注意事项

针对 SQL Server 迁移  Chinese_RPC_CS_AS(大小写敏感)和 Chinese_RPC_CI_AS(大小写不敏感)都可。

若设置为 Chinese_RPC_CI_AS ,迁移时报错fine_conf_entity表违反了 PRIMARY KEY 约束 ,通常是工程有脏数据,可联系技术支持使用脏数据工具进行排查或者执行select lower(ID),COUNT(1) FROM FINE_CONF_ENTITY GROUP BY LOWER(ID) HAVING COUNT(1) >1能看到有哪些脏数据。

5. 配置外接 DB2 数据库编辑

5.1 配置步骤

DB2 的外接配置数据库方法与 MySQL 基本一致,按照3.1章节步骤操作即可,但在选择 DB2 数据库后,会有一个模式选择,模式一般和用户名一样。

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

1.png

5.2 注意事项

5.2.1 DB2 日志空间配置 

如果 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

详情参考: DB2配置 

6. 在管理系统中配置外接数据库编辑

6.1 系统管理

根据上面的步骤,完成了外接数据库配置,则进入平台系统,选择管理系统>系统管理-常规,可看到外接数据库为已配置状态,如下图所示:

注:若未在初始化时配置外接数据库,则此处显示“待配置”状态,点击可进行配置。

222

点击已配置按钮,查看连接配置详细信息,也可以修改配置,再启用新数据库,如下图所示:

222

若数据库已配置完成,修改并启用新数据库时提示:该数据库已存在平台数据,导入数据前将清空原有平台数据,确认连接该数据库,如下图所示:

222

6.2 智能检测

若未配置外接数据库进行迁移,在管理系统>智能检测-服务器配置检测中,会有相应的问题建议,点击外接数据库配置进行设置,如下图所示:

222

6.3 系统消息

若未配置外接数据库进行迁移,在正式注册后,给管理员发送系统消息,提醒其迁移,如下图所示:

222

查看系统消息详情,点处理,即可进入到外接数据库配置,如下图所示:

222

7. 配置失败报错编辑