2024-01-29

【Metabase】社群版(Community) 將系統資料移至大型資料庫

參考資料 ----


Metabase 自帶的系統資料庫為 H2,僅用於測試試用期間,若要轉為正式應用(production),官方強烈將系統資料移至大型資料庫。

建議版本為 MySQL 5.7.7(含)MariaDB 10.2.2(含) 或 PostgreSQL 9.4(含) 以上;本筆記為 MySQL 8.0

注意:避免同時做 Metabase 更新升級 及 資料庫移植


關閉 Metabase,目前我的練功主機是開終端機視窗,在家目錄以
 
[user]~$ java  -jar  metabase.jar
 
的指令啟動 Metabase
所以只要在瀏覽器的 Metabase 頁面登出,然後在終端機視窗 Ctrl+C 中斷 Metabase 即可。


備份 H2︰複製 metabase.db.mv.db 到另一個安全的目錄存放。


操作 phpMyAdmin
MySQL 新增 metabase 帳戶
注意:建議密碼自已設定,而不要由 phpMyAdmin 幫您產生,以免密碼中不知道有哪個字元踩到了雷!!目前已知的有 【@】、【:】、【/】、【?】、【#】,會造成 java 錯誤解析 URI 字串,若是一定要用時,則在組連線字串時,須將上述字元改成 URI 編碼,後面再進一步說明。

建立 metabase 空白資料庫,要求字集選擇 utf8mb4_unicode_ci(下圖是舊圖, 請忽略)。


授予 metabase 帳戶對 metabase 資料庫具有全部的權限










執行移植指令
 
# 切換到 metabase.jar 所在目錄, 在本例為 [user]~/metabase/
[user]~/metabase$  export MB_DB_TYPE=mysql
[user]~/metabase$  export MB_DB_CONNECTION_URI="jdbc:mysql://主機IP:3306/metabase?user=metabase帳戶&password=密碼"
[user]~/metabase$  java  -DMB_DB_TYPE=mysql  -DMB_DB_CONNECTION_URI="jdbc:mysql://主機IP:3306/metabase?user=帳號&password=密碼;"  -jar  metabase.jar  load-from-h2  metabase.db    # 注意檔名
 
前面提到,如果密碼非得要用那幾個特殊字元,則在組 javaJDBC 連線字串時,要改成 URI 編碼,如下:
@ → %40
: → %3A
/ → %2F
? → %3F
# → %23


因為有備份 H2,所以可以放心刪除 metabase 所在目錄下的 H2 檔案,以確認 metabase 存取的是 MySQL。

重新啟動 metabase
 
[user]~/metabase$  export MB_DB_TYPE=mysql
[user]~/metabase$  export MB_DB_CONNECTION_URI="jdbc:mysql://主機IP:3306/metabase?user=metabase帳戶&password=密碼"
[user]~/metabase$  java  -DMB_DB_TYPE=mysql  -DMB_DB_CONNECTION_URI="jdbc:mysql://主機IP:3306/metabase?user=metabase帳號&password=密碼"  -jar  metabase.jar
 
重登入 metabase,可以看到之前製作的儀表板都在。


相關筆記 ----


沒有留言:

張貼留言