iT邦幫忙

1

SAP HANA — Multitenant DB 管理與功能特點

  • 分享至 

  • xImage
  •  

這一篇講述Multitenant DB的功能特徵與管理,從新增tenant DB到監控高可用性與效能以及日常DB admin的工作。

新增 Tenant DB
使用cockpit 工具

在create 過程中會有以下的程序會在背景工作中執行

  1. DB會分配到一個獨立的 system local ID
  2. 如果你沒有指定這個DB要分配在那些主機上(scale out架構),系統會根據它的演算法做最佳化的分配.另外這個DB的通訊port 沒有指定的話,系統也會挑選剩下可用的port.
  3. data and log volumns會被create出來在相對應的主機上
  4. 接下來這個DB會被紀錄上system DB的 M_DATABASES的TABLE中
  5. daemon.ini 檔案會被更新, index server與其相關的服務被啟動
    6.最後該DB可以在如上圖的 Database Management中被看見。

使用 SQL command
語法:
CREATE DATABASE <database_name > [ AT [ LOCATION ] ‘< port_number > ] ‘ ]SYSTEM USER PASSWORD
例如:
CREATE DATABASE test SYSTEM jason PASSWORD hana2021;

在create tenant DB時需要有以下的系統權限
•DATABASE ADMIN

•DATABASE START/DATABASE STOP

•BACKUP ADMIN

剛剛提到在scale out的架構下,tenant DB的運作可以分散到不同的主機(如下圖)

在create DB時有些選項需要注意

  1. 每個tenant DB在OS layer可以由不同的 User/Group來執行,這是為了實現每一個tenant DB在運作時可以高度隔離實現安全性的方式之一。
  2. 可以選擇create之後不要馬上啟動該DB(預設是啟動的)

使用cockpit開啟或關閉tenant DB(如下圖)

使用SQL command開啟或關閉tenant DB
語法:
啟動: ALTER SYSTEM START DATABASE < database_name>
關閉: ALTER SYSTEM STOP DATABASE < database_name > [IMMEDIATE[WITH COREFILE ]]

重新命名與刪除
這兩項工作有以下事項必須確認

  1. 必須要有DATABASE ADMIN 權限
  2. 重新命名時DB需要被關閉
  3. 若有system replication(這個功能請參考其他篇章)必須停止。也就是說system replication原來的replication要停止並刪除然後重新註冊再跑一次。
  4. 該DB沒有啟用 dynamic tiering

使用cockpit工具

使用SQL command
先使用 dhbsql進入consoles

hdbsql -n -i <instance_number> -u <user_name> -d <database_name>
進入後下達如下指定
RENAME DATABASE <current_database_name> TO <new_database_name>
若該DB服務沒停止這一個command就無法執行。

若更名成功後,在scale out的架構下。在每一台主機的相對應folder name也會自動更名。

刪除DB
使用cockpit

其中保留備份目錄是 SPS01之後的版本才有的。

使用SQL Command
語法:
DROP DATABASE < database_name > [ DROP BACKUPS]
當然刪除後期相對應主機的資料也會刪除(你會看到folder還存在,但裡面已經是空的)

Tenant DB的資源分配
我們可以控制每一個tenant DB的CPU/Memory的使用量。memeoy是用絕對值來控制。例如這個DB可以分配到256G的memory 資源。而CPU則是可以使用多少核心數,例如我們有四顆8核心的共32 core CPU.以這個方式進行分配
Memory Allocation
CPU Allocation

Cross-Database Access
雖然前面有提及每一個Tenant DB可以使用OS中不同的USER/GROUP來達到高度隔離,但有時候有些跨Tenant DB狀況仍免不了,像是要產生報表資料之類。SAP HANA提供的跨Tenant DB-Cross-Database SELECT的功能,這個功能預設是沒有打開的。

如果在 Tenant DB “A”要去access Tenant DB “C”,在另一端的DB C會開放下列物件(object)被access.
●Schemas
●Rowstore and columnstore tables (not including virtual tables)
●SQL views (not including monitoring views)
●Graphical calculation views
○If they only use supported object types as data sources
○If they don’t use procedure-based analytic privileges
●Synonyms

在這一個過程中大多會需要用到資源管理(workload management)其他的篇章會提到這一部分。重點在於在啟用這一個功能時要考慮到被呼叫遠端tenant DB的日常工作不能因為其他DB的呼叫而可能會影響日常工作的效能故需要用workload management來管控此一作業。
但使用這個功能會有幾種狀況需要注意

狀況一:
如果遠端的tenant DB的 views/procedure/synonyms這幾個object有異動(例如刪除後重新create),在執行cross-db的作業時會得到 invalidated view or invalidated procedure,這是因為Cross-Database access只有 read-only的權限。在遠端的DB有結構上的異動不會通知到其他的tenant DB,所以我們必須重新create一次Cross-Database Access的作業

狀況二:
不支援多層次的cross-database access(如下圖)

狀況三:
要連結多個tenant DB需要相關的tenant DB同時對其他有關的Tenant DB開啟cross-database access.如下圖

上圖中, DB 1 與 DB 2 及 DB 3 個別開啟的corss-database access功能,但沒有 DB 2 to DB 3也開啟。所以從 DB 1要從另兩個DB讀取資料就會無法讀取。可能會收到"execution plan aborted or current operation canceled by request and transaction rolled back"類似的錯誤訊息。

雖然我們可以有很多個tenant DB給不同的DBA管理(假設我們有一個 DBA team),身為公司的DB最高管理者你可能還是希望有些菜鳥DBA不要去動到該tenant DB的重要設定,SAP HANA就提供了這樣的功能。叫做 Configuration change backlist(在設定檔 multidb.ini的readonly_parameters區域中).
在做這設定之前有兩個必要條件需要有,一個是system DB要註冊到cockpit管理工具,另一個是要有infile admin的權限。
我們有兩個layer可以選擇

當然你可以客製化那些參數 Tenant DB Admin不能動那些可以,但HANA已經有一些預設參數是無法變動的,如下圖


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言