1. 概述
1.1 版本
報表服務器版本 | JAR 包版本 |
---|---|
10.0 | 2020-12-02 |
1.2 功能簡介
報表系統配置外接數據庫後,遇到集群環境或數據量較大情況時,可保證報表系統的穩定性。
用戶可在「初始化時」配置外接數據庫或在「平台中」配置 MySQL8 版本的外接數據庫。
2. 數據庫配置
2.1 數據庫版本
外接數據庫支持的類型及版本如下表所示:
數據庫類型 | JAR 包版本 | 支持數據庫版本 |
---|---|---|
MySQL8 | 2020-12-02 | 8.0.11,8.0.16,8.0.20 |
2.2 硬件配置估算
用戶數量 | 權限複雜度 | 推薦大小( 具體情況需考慮其他配置複雜度及訪問量 ) |
---|---|---|
1~100 | 簡單 | 25M |
中等 | 50M | |
100~2000 | 簡單 | 40M |
中等 | 85M | |
複雜 | 150M | |
2000~30000 | 簡單 | 130M |
中等 | 250M | |
複雜 | 500M |
2.3 新建數據庫
準備将平台數據要遷移到的數據庫,建議用戶在本地數據庫中新建一個空的數據庫(數據庫大小請參考本文 2.2 節)。如下圖所示:
推薦設置數據庫默認字符集爲 utf8 ,默認排序規則爲 utf8_bin。如下圖所示:
注:不同 FineReport 工程,不可共用同一個外接數據庫,否則數據可能會出現錯亂。
數據庫名:
只允許包含數字、字母、下劃線和「.」
字符集:
1)平台外接 MySQL 數據庫時,需要設置字符集排序規則(大小寫敏感)。
2)推薦使用 utf8 – UTF-8 Unicode 編碼。
排序規則:
MySQL 中存在多種格式的 utf8 編碼的排序規則,其中最常見的兩種如下表所示:
1)utf8_bin(推薦)
定義:将字符串中的每一個字符用二進制數據存儲,區分大小寫
示例:Alex 和 alex 被認爲是兩個不同的值
1)utf8_general_ci
定義:ci 爲 case insensitive 的縮寫,即大小寫不敏感,爲 utf8 默認編碼
示例:Alex 和 alex 被認爲是相同的值
2.4 更換驅動
FineReport 10.0 内置了 MySQL5 版本的驅動,如使用 MySQL8 版本的外接數據庫,需要手動更換驅動。
1)關閉報表工程
2)下載對應版本的 MySQL8.0 驅動,并上傳至工程webapps\webroot\WEB-INF\lib目錄下。
3)删除工程webapps\webroot\WEB-INF\lib目錄下的mysql-connector-java-5.1.39-bin.jar。
4)重啓報表工程。
3. 方法一:初始化時配置外接數據庫
本方法适用於第一次登錄數據決策系統時配置外接數據庫。
3.1 進入初始化界面
用戶可在第一次進入平台時配置外接數據庫,如下圖所示:
3.2 配置外接數據庫
點擊「配置數據庫」後,進入到外接數據庫配置界面,選擇數據庫類型爲 MySQL,輸入實際數據庫相應的信息即可。如下圖所示:
各設置項說明如下表所示:
設置項 | 說明 |
---|---|
數據庫類型 | 選擇 MySQL |
驅動 | 手動修改爲com.mysql.cj.jdbc.Driver 請确保已按照 2.4 節更換驅動,且工程中不存在其他版本的 MySQL 驅動 |
數據庫名稱 | 2.3 節新建的數據庫名稱 禁止與其他工程共用數據庫,建議新建數據庫 數據庫名稱只允許包含數字、字母、下劃線和「.」 |
用戶名/主機/密碼/端口 | 根據本地數據庫實際情況填寫 主機名稱只允許包含數字、字母、下劃線、「-」和「.」 用戶需要具備 create、delete、alter、update、select、insert 權限,建議有最高 root 權限 |
數據庫連接URL | 手動修改,格式如下,其中IP:端口号/數據庫名稱需要自行調整: jdbc:mysql://IP:端口号/數據庫名稱?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL |
3.3 配置成功
等待一段時間,提示已成功啓用新數據庫。如下圖所示:
注:請勿在遷移過程中刷新頁面。
4. 方法二:平台中配置外接數據庫
本方法适用於進入數據決策系統後,第一次配置外接數據庫。
4.1 進入平台
管理員登錄數據決策系統,點擊「管理系統>系統管理>常規>外接數據庫>待配置」,如下圖所示:
4.2 配置外接數據庫
輸入實際數據庫相應的信息,配置外接數據庫。如下圖所示:
各設置項說明如下表所示:
設置項 | 說明 |
---|---|
數據庫類型 | 選擇 MySQL |
驅動 | 手動修改爲com.mysql.cj.jdbc.Driver 請确保已按照 2.4 節更換驅動,且工程中不存在其他版本的 MySQL 驅動 |
數據庫名稱 | 2.3 節新建的數據庫名稱 禁止與其他工程共用數據庫,建議新建數據庫 數據庫名稱只允許包含數字、字母、下劃線和「.」 |
用戶名/主機/密碼/端口 | 根據本地數據庫實際情況填寫 主機名稱只允許包含數字、字母、下劃線、「-」和「.」 用戶需要具備 create、delete、alter、update、select、insert 權限,建議有最高 root 權限 |
數據庫連接URL | 手動修改,格式如下,其中IP:端口号/數據庫名稱需要自行調整: jdbc:mysql://IP:端口号/數據庫名稱?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL |
4.3 配置成功
等待一段時間,會跳出彈窗提示:已成功啓用目标數據庫,點擊「确定」即可。如下圖所示:
注1:請勿在遷移過程中刷新頁面。
注2:數據庫配置成功後無需重啓。
5. 方法三:平台二次遷移數據庫
本方法适用於系統已配置外接數據庫後,遷移至新的數據庫。
5.1 進入平台
管理員登錄數據決策系統,點擊「管理系統>系統管理>常規>外接數據庫>已配置」,如下圖所示:
5.2 配置外接數據庫
輸入實際數據庫相應的信息,配置外接數據庫。如下圖所示:
各設置項說明如下表所示:
設置項 | 說明 |
---|---|
數據庫類型 | 選擇 MySQL |
驅動 | 手動修改爲com.mysql.cj.jdbc.Driver 請确保已按照 2.4 節更換驅動,且工程中不存在其他版本的 MySQL 驅動 |
數據庫名稱 | 2.3 節新建的數據庫名稱 禁止與其他工程共用數據庫,建議新建數據庫 數據庫名稱只允許包含數字、字母、下劃線和「.」 |
用戶名/主機/密碼/端口 | 根據本地數據庫實際情況填寫 主機名稱只允許包含數字、字母、下劃線、「-」和「.」 用戶需要具備 create、delete、alter、update、select、insert 權限,建議有最高 root 權限 |
數據庫連接URL | 手動修改,格式如下,其中IP:端口号/數據庫名稱需要自行調整: jdbc:mysql://IP:端口号/數據庫名稱?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL |
「遷移數據至要啓用的數據庫」按鈕說明:
1)勾選「遷移數據至要啓用的數據庫」
切換數據庫時,原外接數據庫的數據會導入到新數據庫,工程下不生成曆史數據備份文件。
若新數據庫中已存在平台數據,導入數據前将清空原有平台數據。提示如下圖所示:
2)不勾選「遷移數據至要啓用的數據庫」
若新外接數據庫爲空,提示必須将當前數據遷移到目标數據庫。
若新外接數據庫不爲空
遷移前将自動備份原數據庫的配置信息,在webapps\webroot\WEB-INF\config目錄下生成db.properties.bak文件。如下圖所示:
直接啓用新數據庫,遷移成功後,提示如下圖所示:
5.3 遷移成功
等待一段時間,會跳出彈窗提示:已成功切換至目标數據庫!新舊數據庫若存在數據差異可能影響系統運行,建議重啓沖刺以确保正常使用。
點擊「确定」後,重啓報表工程,方遷移成功。如下圖所示:
注:請勿在遷移過程中刷新頁面。
提示:
6. 注意事項
如果一開始數據庫排序規則沒有設置 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 表,設置如下圖所示: