【HICP Gaussdb】数据库 数据库管理( 访问控制 用户管理 集群高可用 升级仲裁 主备切换) -18

访问控制
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

数据节点

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-01-13 09:29  阿里云的奥斯卡  阅读(1018)  评论(0编辑  收藏  举报