返回首页

gbase数据、南大通用产品文档:GBase8a审计日志高可用

更新日期:2024年09月11日

GBase 8a MPP Cluster 具有审计日志高可用机制,为实现审计日志的高可用机制,
集群安装或升级时自动在gclusterdb 库下创建EXPRESS 引擎随机分布表
audit_log_express,
并自动创建定时导出事件,
将gbase 库中的audit_log 表内容定时
导出到gclusterdb 库中的audit_log_express 表。
说明

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
370

在多VC 版本下,内置自动导出event 功能失效,需要用户手动删除后重新创建event。
CREATE EVENT "import_audit_log"
ON SCHEDULE EVERY 60 MINUTE
STARTS '2017-12-01 00:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
LOCAL
DO
begin
declare errno int;
declare msg text;
declare exit handler for sqlexception
begin
get diagnostics condition 1 errno = gbase_errno, msg = message_text;
create table if not exists import_audit_log_errors(
err_time datetime,
hostname varchar(64),
err_no int,
msg_txt varchar(1024)
) CHARSET=utf8mb4;
insert into import_audit_log_errors values (now(), @@hostname,
errno, substr(msg, 0, 1024));
end;
create table if not exists audit_log_express (
hostname varchar(64),
thread_id int,
taskid bigint,
start_time datetime,
uid bigint, user varchar(16),
host_ip varchar(32),
query_time time, rows bigint,
table_list varchar(4096),
sql_text varchar(8191),
sql_type varchar(16),
sql_command varchar(32),
operators varchar(256),
status varchar(16),
conn_type varchar(16)
) CHARSET=utf8mb4;
set self sql_mode = '';
create self table gbase.audit_log_bak2 like gbase.audit_log;
set self sql_mode = default;
rename
self
table
gbase.audit_log
to
gbase.audit_log_bak1,
gbase.audit_log_bak2 to gbase.audit_log;

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
371
set _gbase_query_path = on;
insert into audit_log_express select
@@hostname as hostname,
thread_id,
taskid,
start_time,
uid,
user,
host_ip,
query_time,
rows,
substr(table_list, 0, 4096),
substr(sql_text, 0, 8191),
sql_type,
sql_command,
operators,
status,
conn_type
from gbase.audit_log_bak1;
drop self table gbase.audit_log_bak1;
end

语法格式
ALTER TABLE [[vc_name.]database_name.]table_name DROP GROUPED
grouped_name;
表5- 88 参数说明
参数名称


vc_name
vc 名,可选项。
database_name
数据库名,可选项。
table_name
表名
grouped_name
行存列的名称。
示例
示例1:使用ALTER TABLE 语句删除行存列。
gbase> ALTER TABLE t2 DROP GROUPED c;
Query OK, 0 rows affected
Records: 0
Duplicates: 0
Warnings: 0
gbase> SHOW CREATE TABLE t2 \G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE "t2" (
"a" int(11) DEFAULT NULL,
"b" int(11) DEFAULT NULL,
"c" int(11) DEFAULT NULL,
"d" int(11) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8
TABLESPACE='sys_tablespace'

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1049
1 row in set (Elapsed: 00:00:00.00)

当集群规模不断扩大时,集群节点损坏的概率会增加,同时随着数据量增大,单个
节点的计算能力和存储能力也可能成为瓶颈,
这两种情况都需要对集群节点进行替
换,保证集群能够正常工作。GBase 8a MPP Cluster 具有在线不停服务节点替换能
力,即可在生产环境下不停机进行节点替换。
说明

集群范围内同一时刻只能启动一个节点替换进程,不允许多个节点替换进程并行,gcware
会加资源锁来保证。

一次只能替换同一个vc 中的节点,且被替换节点至少有一个可用备份分片:

纯数据节点,一个vc 内的,一次可以替换多个data 节点;

复合节点,需要进行两次替换,先替换coordinator 节点,再替换数据节点;

复合节点,
可以同时替换包括复合节点里coordinator 节点在内的多个coordinator 节点;

复合节点,可以同时替换一个vc 中,包括复合节点里数据节点在内的多个数据节点。

如果复合节点上部署了gcware,则需要进行三次替换,先执行gcware 替换,然后执行
coordinator 替换,最后执行数据节点替换。

允许中断正在执行的节点替换进程。

允许用户指定数据恢复时用户数据表的恢复顺序。

允许用户指定节点替换过程中是否用内存(/dev/shm)来存储临时数据。

在线不停服务节点替换说明:
节点替换时,集群变为readonly 状态,集群收到应用程序写操作时,让SQL 等待,不返回
报错信息,等节点替换操作完成之后再返回,应用程序未超时的情况下,可以继续执行,
保证节点替换时完全在线。

如果gcware 和gcluster 部署在同一节点上,节点替换时需要对gcluster 和gcware 分别进行
替换,先替换gcware 节点,再替换gcluster 节点。

gcluster 节点替换同旧版本的节点替换操作,没有变化。

gcware 节点替换需单独进行,替换前必须保证gcware 节点多数派可用。

一次可以替换小于总gcware 节点数的一半。

支持在线替换,无需设置原集群gcware 节点的gcware 状态。

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
286