訪問控制
GAUSSDB 兩種數據庫方式
口令認證登陸 : 遠程連接 加密口令和本地l連接的非加密口令認證
本地免密登陸:linux系統用戶登陸 , 已經完成訪問人員鑒權 , 所以允許通過zsql 工具, 登陸本機運行中的數據 ,SYS免密登陸后可以重置SYS密碼
支持兩種登陸協議
TCP
支持zsql數據庫遠程連接數據庫 , 服務端本地連接數據庫 服務端遠程連接數據庫
UDS unix domain socket 協議
只支持普通數據庫用戶身份本地登陸數據庫
前置條件
客戶端安裝zsql
連接數據庫時使用的用戶 需要具備訪問數據庫權限
通過zsql 或者JDBC等API方式遠程接入數據庫之前, 需要再配置 文件zengine.ini 中設置 LSNR_ip 和LSNR_port偵聽 一次最多可以設置8個偵聽地址
zsql 客戶端遠程連接數據庫 或者 服務端 遠程連接數據庫之前, 需要再訪問的服務端上配置過接入認證
TCP連接
TCP是一種面向連接的 可靠的 基於字節流的傳輸層通訊協議
通過TCP登陸數據庫時 支持zsql客戶端遠程連接數據庫,服務端本地 服務端遠程
本地登陸和遠程登陸區別在於 :本地登陸使用的IP地址為本地回環地址;遠程登陸使用的遠端IP地址
zsql { CONNECT | CONN } / AS CLSMSG [ip: port ] [-D /home/omm/data1 ] [只有數據庫管理員才能免密登陸]
UDS通訊
UDS通訊 主要是保證數據庫 在異常情況下, 客戶端能夠登入到服務端
UDS只能支持本地登陸 本質上UDS通訊是通過文件方式 模擬tcp通訊
UDS默認連接 GSDB_DATA/protect/gsdb_uds_emerg.server 用於緊急預留會話登陸
如果切換用於用戶會話的UDS路徑 , 需要服務端和客戶端分別配置監聽 的UDS socket文件, 此時用戶登陸的會話不再占用緊急預留會話
以數據庫目錄為/opt/gaussdb/data為例 ,修改監聽的socket文件為server.socket 配置如下
alter system set UDS_FILE_PATH='/opt/gaussdb/data/protect/server.socket '【需要重啟數據庫】
客戶端參數配置
set UDS_SERVER_PATH=/opt/gaussdb/data/protect/server.socket
另外UDS標識 ,UDS_CLIENT_PATH 也支持配置(可選)
UDS_FILE_PATH ,UDS_SERVER_PATH .UDS_CLIENT_PATH 在非默認配置情況下, 均需要指定絕對路徑 否則會導致客戶端由於無法找到監聽文件而連接失敗
連接安全認證
Gaussdb100 支持用戶通過配置用戶白名單 , IP白名單 ,ip黑名單的方式 有效控制遠程連接,默認情況下只允許本地訪問
用戶白名單 -->通過添加zhba.conf 有效條目, 以限定用戶只能從限定的IP訪問
IP白名單-——->配置tcp_invited_nodes 參數,限制只能從指定IP 訪問數據庫
IP黑名單------>配置TCP_EXCLUDE_NODES參數, 限制不能從指定IP訪問數據庫
配置客戶端接入認證
1、開啟IP白名單檢測功能前 至少需要配置TCP_INVITED_NODES或者TCP_EXCLUDED_NODES 的一種否則報錯
2、SYS用戶技能在本地登錄
3、SYS在本地登錄時 不受用戶白名單,IP白名單,IP黑名單控制
用戶白名單和IP黑名單前,檢查是否已經配置了 真挺Ip和端口 否則黑白名單配置將不生效
# 檢查是否已經配置偵聽IP port
select name ,value from V$parameter where name = 'lsnr_addr/lsnr_port'
# 如果沒有 設置IP和端口
alter system add lsnr_addr '192.168.1.1'
配置用戶白名單
假設服務器IP為192.168.1.1 偵聽端口為1888
步驟1、 在zhba.conf 添加hba條目 格式為 type 、user 、address
host user 127.0.0.1,192.168.3.222,*.*.*.*
步驟2、連接數據庫后 在線加載用戶白名單
alter system reload HBA config ;
步驟3、查詢是否配置成功
select * from SYS.V$HBA
配置IP白名單 和 IP黑名單
假設服務器地址為192.168.1.1 偵聽端口為1888 ,需要配置的遠程連接地址為192.168.2.* 需要禁止的地址為 192.168.10.* ,192.168.2.225
步驟1、連接數據庫 查詢已經配置的IP白名單和黑名單
select value from V$parameter where name = "TCP_INVITED_NODES"
select value from V$parameter where name = "TCP_EXCLUDED_NODES"
步驟2、在線配置白名單或者IP黑名單 直接生效
alter system set TCP_INVITED_NODES = '(127.0.0.1,182.168.1.1,192,168.2.*)'
alter system set TCP_EXCLUDED_NODES = '(192.168.10.*,192.168.2.225)'
步驟3、在線開啟IP白名單檢驗開關 直接生效
alter system set tcp_valid_node_checking = true;
使用SSL連接
支持通過SSL secure socket layer 安全套接層 加密客戶端和服務器之間的通訊
雙向認證 單向認證
用戶權限管理
默認情況 用戶分為3類
1、系統管理員 SYS用戶 最高權限
2、安全管理員 具有create user賬戶的權限
3、普通用戶 具有public對象的權限
權限和角色
系統權限、對象權限、角色
審計
audit_level 審計開關 默認級別為3 DDL DCL DML
_audit_max_file_size 單個日志文件大小 默認10M
_audit_backup_file_count 備份日志文件 最大個數 默認值為10 ,不超過128
_log_file_permissions 日志文件權限 默認值600
_log_path_permissions 日志目錄權限 默認值700
audit_level =0 關閉審計
alter system set audit_level =value ;
1 2 4 8
1 -> DDL 定義對象 增刪改對象
2 -> DCL 設置或更改事務 用戶權限 鎖表等
4 -> DML 針對數據 增刪查改
8 -> PL 增對存儲過程
# 查看audit_level select name ,value from sys.DV_parameters where name = "audit_level"; # 維護審計日志 查看審計文件 占用的磁盤空間大小 設置 _audit_max_file_size 參數 select name ,value from sys.v$parameter where name = "_audit_max_file_size" alter system set _audit_max_file_size =10M # 配置審計日志文件個數的最大值 _audit_backup_file_count alter system set _audit_backup_file_count = 5
分布式集群高可用
HA組網
CN coordinate node 協調節點 負責分解任務分片在DN上面執行
CM cluster manager 集群管理模塊 管理和監控各個實力的運行情況
ETCD 收集實力信息 CM從ETCD獲取實例狀態信息
DN 數據節點 存儲業務數據
GTS 負責分布式系統授時
本地2副本部署 生產機房一主一備【同步】 不太重要的系統
2+1高性能部署 生產機房一主一備【同步】同城一備【異步】 比較重要的系統
2+1+1高性能部署 生產機房一主一備【同步】同城一備機【異步】異步一備機【異步】 非常重要的系統 對性能有要求
2+1+1高可靠部署 生產機房一主一備【同步】同城一備機【同步】異地一備機【異步】 非常重要的系統 對數據一致性有要求
RAFT組網模式
CN 、DN、CM、ETCD、GTS、 AZ1 AZ2 AZ3
集群管理
CM模塊介紹
Gaussdb OLTP CM模塊主要針對分布式數據庫集群進行系統管理 主要功能模塊包括 ETCD 分布式數據管理, CM與ETCD的交互,內部的邏輯仲裁以及對外命令
CM模塊的各個部分功能介紹
CM內部ETCD數據管理: 該部分主要涉及ETCD的相關知識 不再贅述
CM模塊與ETCD交互: CM所需數據主要存儲在ETCD中 CM向ETCD訂閱相關數據, 同時CM也可以修改ETCD中的數據 CM根據數據變化完成對應動作
邏輯仲裁 : 通過主備成員一致性仲裁 ,主備倒換 switch failover 自動化來維護主備副本間關系 凡是涉及數據庫節點的異常處理 都需要邏輯仲裁
對外命令: 主要包括集群管理各場景所需要的命令行參數 可供用戶根據需要手動或自動執行所需場景功能
CM模塊與ETCD交互
從下圖可以看出 ETCD是cm agent 和cm server 的信息傳遞通道 ,CM agent 與 server 互相交互 , 對ETCD中存儲的數據進行操作 , ETCD通過watch機制監控數據操作的動作 , 根據不同的數據變化來進行集群管理的相應動作
集群邏輯仲裁概述
仲裁完成的過程中其實就是CM 與ETCD交互的過程 , ETCD 通過watch機制監控集群狀態,一旦集群狀態有變化 , 就會與CM 進行交互更新集群狀態 ,在CM側有自己的機制, 一旦檢查出集群實例異常就會下發仲裁邏輯線程保護集群始終處於可用狀態
特性: 1、主要用於通過主備成員一致性仲裁, 主備倒換 switchover failover 自動維護主備副本之間的關系
2、調整ETCD個數保證奇數可達多數派可用
3、CN節點故障隔離
集群管理仲裁核心價值
AZ內數據庫自動仲裁 ---> 雙AZ高可用 ----> 兩地三中心高可用
單點故障RTP <1分鍾、 數據中心故障RTP<3 分鍾
集群支持多個組件仲裁
目前集群Cm仲裁邏輯架構對接多個實例 GTS/ZENITH/PAXOS
各個實例的仲裁邏輯 、選主流程 也不一樣 集群仲裁模塊針對各個實例適配也不同
集群仲裁模塊 Cm server 本身也有主備進行 互備,但是cm server 是通過ETCD進行搶主實現主備切換
Gaussdb oltp CM模塊對外提供命令
CM
agent
server
ctl
build list query reload retoreCn set start stop switchover
help
version
config
dum generate load
build build備DN實例
need repair 需要重建該數據庫 。由於文件誤刪錯誤 或損壞 等無法修復的故障造成數據庫無法正常啟動時,需要重建該數據庫
命令用法: cm ctl build -H [host name] -I [standy DN name ] -b [full 全量build | increamental(增量build) | auto(不指定 三次增量失敗后全量build)] -l [debug|info | warn |error | fatal ] -L [log path ]
示例:cm ctl build -H lltdb5 -I DB1_1 [-l debug -L temp.log]
list 列出所有集群管理相關的參數
查看CM具體值時候使用
命令用法:cm ctl list -l [debug | info | warm | error | fatal ] -L [log path]
示例: cm ctl list [-l debug -L temp.log]
query 查詢集群狀態
在需要查詢句群狀態時候 使用
命令用法: cm ctl query -l [debug | info | warm | error | fatal ] -L [log path ]
示例: cm ctl build -H lltddb05 -I DB1_1 [-l debug -L temp.log]
reload 重新加載json 文件到ETCD中
集群信息破壞 無法獲得正常集群信息 需要重新加載集群信息到ETCD中
load
把json 文件加載到ETCD中
用法:cm config load -f [json file ] --force
實例:cm config load -f dumpfile.json
agent server
啟動cm agent|server 進程
用法: cm agent|server -e $ETCD_ADDRESS -L AGENT.log
示例: cm agent|server -e $ETCD_ADDRESS
version help
查看CM版本號 | 查看CM相關命令
cm version | cm help
數據節點