kingbaseV7 认证与资源限制

本文详细介绍了KingbaseES数据库的认证策略,如trust、reject、口令认证和LDAP认证,以及资源限制(如连接数、权限有效期等),同时探讨了DataGuard的数据保护机制和系统参数管理,包括字符集支持和故障切换流程。
摘要由CSDN通过智能技术生成

认证策略,资源限制,数据保护,系统参数,系统表和视图

2.1. 概述
认证,是客户端向数据库服务器发起连接的标识
由数据库数据目录下的配置文件 sys_hba.conf(HBA:host-based authentication)控制
2.2. 认证方法
信任认证
如果声明了 trust (信任)认证模式,trust 认证模式只适合 TCP/IP 连接
拒绝认证
如果声明了reject拒绝认证,数据库无条件地拒绝连接
口令认证
以口令为基础的认证方法包括 md5 和 password
各个数据库用户的口令是存储在sys_authid系统表里面的。 口令可以用 SQL 语言命令 CREATE USER 和 ALTER USER 等管理。 
基于 Ident 的认证
ident(身份)认证方法的运作模式是通过获取客户端的操作系统用户名,
然后限制不同的操作系统用户只能使用指定的数据库用户名字连接指定的数据库。
LDAP 认证
LDAP(Lightweight Directory Access Protocol)认证需要 LDAP 服务器的支持

2.3. 配置文件说明
2.3.1. sys_hba.conf 文件
规则如下:
每行一条记录,记录不能跨行存在
空白行被忽略
以 # 号开头的,表示本行内容为注释
一条记录是由若干用空格(或“/”或tab)分隔的字段组成
如果字段用引号包围,那么它可以包含空格。

每条记录声明一种连接类型,一个客户端 IP 地址范围,一个数据库名,一个用户名字,对匹配这些参数的连接使用的认证方法以及客户端连接数限制。
每个字段的含义如下:
database 
要连接的数据库名。值 all 表明该记录匹配所有数据库,值sameuser表示被请求的数据库必须和请求的用户同名。
user
表明使用此用户名连接数据库。值 all 表明它匹配于所有用户。
CIDR-address
声明这条记录匹配的客户端机器的 IP 地址范围
auth-method
认证方法,包括:trust,reject,md5,password,ident,cert,ldap,krb5 
limit
客户端连接数限制,默认为0,即不限制,当匹配记录的连接数达到限制值时,
不在允许新的连接启动,该字段只有在enable_conn_limit开启时有效。

2.3.2. sys_ident.conf 文件
身份映射文件sys_ident.conf在ident认证方法时生效
map-name 是将被sys_hba.conf里引用的这个映射的名称。 另外两个域声明某个操作系统用户被允许以哪个数据库用户的身份进行连接。

2.3.3. 读取文件规则
读取文件规则
因为认证时系统是为每个连接请求顺序检查 sys_hba.conf 里的记录的
我们一般都希望对本地 TCP/IP 连接使用 trust 认证, 而对远端的 TCP/IP 连接要求口令。
在这种情况下我们将 trust 认证方法的记录放在前面,使用口令认证的记录放在后面。

3. 资源限制
KingbaseES数据库提供了客户端连接数量的限制功能,可以通过enable_conn_limit参数来打开此功能
包括帐号有效期限制、密码有效期限制、登录时间限制、帐号闲置时间限制、帐号连接时间限制、最大连接数限制等。
帐号有效期限制
    VALID UNTIL 指定用户账户的有效期时间,默认为无限制。
密码有效期限制
    PASSWORD EXPIRE 指定用户密码的有效期时间,默认为无限制。
登录时间限制
    CONNECT INTERVAL 指定每周几允许用户登录,0表示周日,1-6表示周一到周六。 
ConnectTime的格式是item,item,item…的形式,item必须是0和6之间的数字,或者是“begin-end”这样的形式(begin <= end,而且begin和end只能是0和6之间的数字),并且至少选择一天让用户可以登录。
连接时间限制
    CONNECT DURATION 指定用户的最大连接时间(单位为分钟),0表示不限制用户的连接时间,取值范围[0,2147483647],默认为无限制。
闲置时间限制
    CONNECT IDLE TIME 指定用户闲置的最长时间(单位为分钟),0表示不限制用户的闲置时间,取值范围[0,2147483647]。
在安全版中默认为30分钟。 用户闲置时间:从上次sql命令执行完毕到当前时间的时间间隔。
最大连接数限制
CONNECTION LIMIT 指定用户的最大并发连接数目。-1表示无限制,取值范围[-1,2147483647],默认为无限制。

4. 数据保护
KingbaseDataGuard的完备数据保护和灾难恢复特性
采用一主一从的架构,在任一时刻最多只能有一台主机对外提供服务,客户端与系统内的主机进行连接,当主机数据库服务失效时,从机自动切换为新的主机提供服务
4.2. 工作机制
KingbaseDataGuard保证了当主机出现故障时,从机能够切换为主机继续提供服务,实现数据容灾保护
主机的数据库服务器为用户提供服务,同时主机根据用户设置的日志传输模式,将日志传输到从机。
4.3. 工作方式及状态
控制器是和数据库服务器配置在一起的,其功能由standby服务提供,用于完成尾日志的发送
包括以下功能:
监控本机对外提供服务的网络是否故障。
监控本机数据库服务器进程是否故障。
本机作为主机且处于最大性能模式时,负责尾日志的发送。
发生故障时,进行自动故障切换,保证持续的对外提供服务。
提供本机和远程服务器的状态查询功能。
提供用户手动切换功能。

控制器的状态
状态名称 说明 
primary 正常状态的主机,处于联机状态,可以对外提供服务 
standby 正常状态的从机,正在处于日志恢复之中 
failed 异常状态的主机或从机。此状态的服务器可能是由于外部网络异常或kingbase进程异常退出 
switching 正在进行切换的中间状态 
unreachable 当从机服务没有启动,主机服务启动时的状态 

4.4. 日志传输模式
KingbaseDataGuard中日志传输是异步的
4.5.1. 自动故障切换
注意:
如果是控制器出现故障,或主机与从机之间出现网络故障,则无法正常使用。

4.5.2. 手动故障切换
登录主机或从机的控制器,执行命令即可触发主从切换。
可以通过命令行工具istandby登录控制器,执行命令switch over,完成手动切换,转换主/从机的状态。

4.6. 数据不一致状态下的恢复
通过联机物理备份的方式,将可用节点的数据恢复到备用节点上。
方法为:
1.保证主机以primary方式启动(通过控制器的配置文件),以打开归档的方式运行。
2.从机standby正常运行,可以去掉从机kingbase可执行文件的执行权限,以防从机恢复进程影响下一步的物理恢复。
3.在主机使用isql 进行一次联机备份,产生一个备份集BAKSET
4.打包并拷贝这个备份集到从机。
5.从机器解压备份集BAKSET,使用脱机恢复工具sys_backup恢复到一个新的数据目录newdatapath: 
sys_bakcup -r -P "baksetpath" -N "newdatapath" --standby-recovery
6.在从机上将原来的数据目录下的内容全部删除,然后将上一步的 newdatapath 中的内容全部拷贝到原来的数据目录下。
7.修改数据库配置文件kingbase.conf 中 standby 部分配置参数。
8.删除数据目录中的kbxlog.status。从机节点数据目录制作完成,可以恢复kingbase执行权限,从机即可自动进入主备模式。

4.7. 备机只读
1.首先,通过配置 GUC 参数(hot_standby=on wal_level='hot_standby'),在主备模式中打开备机只读功能。
2.当主备机搭建成功后,用户可以连接备机IP,以只读事务的形式访问备机的数据。
与此同时,主机修改的数据也以日志的形式实时的被恢复。用户可以通过查询语句获得备机中最新的数据。
3.由于备机需要实时的恢复数据,在打开备机只读开关后,查询所在的backend线程有可能和恢复线程发生资源争用,进而发生冲突。
为了使得备机查询总是获得尽可能新的数据,发生冲突时需要尽可能让恢复线程优先进行下去。
于是,当发生资源冲突时,kingbase 允许恢复线程等待一段时间(可以通过 GUC 参数 max_standby_delay 设置等待的时间的长短)。
如果等待超时,只读查询事务将被回滚,恢复得以继续进行。
4.在备机状态中,通过查询视图 sys_stat_database_conflicts,可以得到当前状态下备机发生冲突的类型和次数。
5.如果备机查询语句频繁发生冲突,除了可以通过在备机中设置 max_standby_delay 减少发生冲突的次数,
还可以通过在主机中调大 vacuum_defer_cleanup_age 参数,达到减少备机查询语句发生冲突的可能。
该参数允许在主机中存放一定数量的垃圾数据,避免处理垃圾数据的日志发送到备机引发查询冲突。
6.备机中提供系统函数(sys_is_in_recovery(),sys_last_xlog_receive_location(),sys_last_xlog_replay_location(), sys_last_xact_replay_timestamp()),
用于帮助用户获得主备系统的实时状况,以便了解主备机的性能瓶颈以及运行状态。

4.8. standby 浮动IP
standby.conf
注意:
standby和kingbase运行在普通用户模式下,普通用户没有设置和删除IP的权限,IP浮动过程中,需要设置和删除IP
通过sudo方式,提升普通用户权限。
增加ifconfig文件的SUID和SGID,使普通用户运行ifconfig时暂时具备root权限。
    chmod u+s /sbin/ifconfig
    chmod g+s /sbin/ifconfig

4.9. 系统配置
1.主从环境保持一致
2.配置参数kingbase.conf 开启归档
配置参数文件kingbase.conf, standby.conf, network
注意:
主、从机的启动和关闭顺序可以任意,控制器会自动协调二者的状态使其启动和停止都能保持数据一致的状态,建议的顺序是:
    启动时,先启动主机再启动从机;
    关闭时,先关闭主机再关闭从机。

使用istandby登陆控制器,可以成功连接,能进行相关的数据库操作,是primary

5. 系统参数说明
5.1.1. 参数级别
KingbaseES 的系统参数配置文件为服务器数据目录中的 kingbase.conf,
参数的设置分成四个级别:固定级、系统级、全局级和会话级
固定级(cluster)
系统一旦初始化,固定级参数的值就确定下来,不能对其重新设置。
系统级(system)
通过直接编辑参数文件 kingbase.conf 或者通过 ALTER SYSTEM SET 语句来设置系统级参数的值。重启生效
全局级(global)
通过直接编辑参数文件 kingbase.conf 或者通过 ALTER SYSTEM SET 语句来设置全局级参数的值,不用重启生效
会话级(session)
KingbaseES 的部分系统参数可以使用 SET 或者 ALTER DATABASE SET 语句进行设置。
通过 SET 语句设置只对当前连接有效,而通过 ALTER DATABASE SET 语句设置会对该数据库上启动的每个新会话生效,
注意:
所有参数名都是大小写不敏感的。
每个参数都可以接受四种类型之一:布尔、整数、浮点数、字符串。
布尔值可以是(都是大小写无关) ON, OFF, TRUE, FALSE, YES, NO, 1, 0 

5.1.2. 设置方法
可以采用几种方法进行参数设置:
1)直接编辑 kingbase.conf 文件
2)把参数作为命令行参数传递给kingbase程序,需要以如下形式的命令启动数据库: 
 kingbase -c log_connections=yes -c log_statement=all -D ../data     
其中,系统参数通过“-c 参数名称 = 参数值”的形式指定
3)连接数据库后,通过SQL语句设置,这些语句针对不同级别的参数,产生不同的效果: 
 ALTER SYSTEM SET 参数名称 = 参数值 
 ALTER DATABASE SET DatabaseName 参数名称 = 参数值
 SET 参数名称 = 参数值
对于系统参数的查看,可以通过SHOW命令或从系统视图中查询,而"SHOW ALL"将显示所有参数的当前值。
所有系统参数存储在系统视图 sys_catalog.sys_settings 中

9. 字符集支持
KingbaseES支持ASCII、GBK、GB18030和UNICODE四种字符集。其中,UNICODE为 UTF-8, GB18030向下兼容GBK。
9.2.1. 服务器端相关
    针对服务器端的字符集设置,KingbaseES提供两种途径,具体如下:
在initdb中,通过-E或者--encoding选项为新创建数据库设置缺省字符集,
例如:./initdb --encoding GBK -USYSTEM -WMANAGER --ssousername=SSO --ssopassword=SSO 
--saousername=SAO --saopassword=SAO -D ../gbkdata --database=TEST

利用CREATE DATABASE的 ENCODING选项设置
例如:CREATE DATABASE PROJ ENCODING = ‘GBK’;

9.2.2. 客户端查询工具相关
通过kingbase.conf设置
若设置kingbase.conf 的client_encoding选项,那么与服务器连接时,客户端将会自动选择该字符集
在isql中设置
(1)通过\encoding命令设置客户端的字符集。例如,将客户端字符集设置为GBK:
       # \enconding GBK    
(2)通过SET client_encoding TO命令设置客户端的字符集。例如,将客户端的字符集设置为GBK:
       # SET CLIENT_ENCODING TO 'GBK';   
(3)通过SET NAMES SQL标准语法实现,例如,将客户端字符集设置为GBK:
       # SET NAMES 'GBK';    
此外,还可通过SHOW命令在isql中查询客户端的字符集配置信息:
       # SHOW client_encoding;     
在isql中,把客户端字符集配置恢复为默认值的方法如下:
       # RESET client_encoding

//获取当前系统支持的字符集信息
locale -a
//设置当前登录用户的语言环境为GBK
[root@hlzhu1 data]# export LANG=zh_CN.GBK
//设置当前登录用户的语言环境为UTF-8
[root@hlzhu1 data]# export LANG=zh_CN.UTF-8
//查看locale信息

9.6.2. 导入数据乱码
可能的原因是:加载数据的字符集编码和导入服务器的字符集设置不相同或不兼容,
可尝试把服务端字符集设置为加载数据的字符集编码,然后重新导入数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值