关键字:
KingbaseES、日志管理、人大金仓
1.日志信息一览表
日志 | 日志描述 |
${install_dir}/kingbase/log/hamgr.log | 集群repmgrd日志存放路径, ${install_dir}表示集群部署目录。 日志文件将通过系统 logrotate进行定期清理。 |
${install_dir}/kingbase/log/kbha.log | 集群kbha日志存放路径, ${install_dir}表示集群部署目录。 日志文件将通过系统 logrotate进行定期清理。 |
${KINGBASE_DATA}/sys_log | 数据库日志存放路径, ${KINGBASE_DATA}表示数据库目录 |
/var/log/message | 操作系统日志 |
2.集群日志自动清理机制
集群中的hamgr.log和kbha.log日志文件将通过系统 logrotate日志管理工具按照大小或周期进行日志清理,具体清理策略查看${install_dir}/kingbase/etc//logrotate_ha.conf参数文件配置。
0 0 * * * . /etc/profile;/usr/sbin/logrotate -s /opt/cluster//kingbase/bin/../etc/logrotate_status /opt/cluster//kingbase/bin/../etc/logrotate_ha.conf [kingbase@node1 share]$ cat /opt/cluster//kingbase/bin/../etc/logrotate_ha.conf # Generate by sys_monitor.sh at 2024年 05月 06日 星期一 10:17:30 CST /opt/cluster//kingbase/log/kbha.log { weekly maxsize 100M su kingbase kingbase create 0600 kingbase kingbase rotate 3 copytruncate dateext } /opt/cluster//kingbase/log/hamgr.log { weekly maxsize 100M su kingbase kingbase create 0600 kingbase kingbase rotate 3 copytruncate dateext } |
参数说明:
weekly,日志轮换时间周期,可以按照每天(daily),每周(weekly),每月(monthly)进行日志轮换;
maxsize,限制了日志文件轮换前允许达到的最大容量,一旦日志文件超过这个阈值,将开始日志轮换;
su kingbase kingbase,表示使用什么用户进行日志轮换,默认是集群部署用户;
create 0600 kingbase kingbase,表示日志的用户属组和操作权限;
rotate,表示保留最近第几次轮换产生的日志文件,如rotate 3,表示第四次轮换时,第一个日志文件将被删除;
copytruncate,表示日志轮换之后,会将现有的日志文件情况,并将内容复制到新的日志文件中;
dateext,表示轮换的日志文件添加日志扩展名,以便区分不同轮换周期的日志文件。
3.日志分析工具
为了解决集群环境中跨节点日志关联分析困难的问题,产品推出了halog_analyse.sh日志收集分析工具。该工具可以通过配置halog_analyse.conf参数文件来自定义日志收集的节点信息,关键字,日志日期范围等,然后对收集到的各个节点日志文件进行过滤并将结果输出到文件。
工具组成
执行文件halog_analyse.sh、halog_analyse、halog_collect在 bin 目录下,halog_analyse.conf配置文件在share 目录下。
脚本名 | 功能说明 |
halog_collect | 日志收集二进制执行文件,位置在bin目录下; |
halog_analyse | 日志分析二进制执行文件,位置在bin目录下; |
halog_analyse.sh | 日志收集分析执行脚本,位置在bin目录下,使用时与halog_analyse.conf参数文件配合使用,读取其中参数配置,进行自动日志收集分析 |
halog_analyse.conf | 日志收集分析参数文件,位置在share目录下,与halog_analyse.sh配合使用 |
halog_analyse.conf参数文件说明
配置项 | 参考值 | 描述 |
loga_port | loga_port | 日志收集通信端口,默认端口65432。 |
begin_time | 2024/01/30 14:00 | 需要分析的日志开始时间点,会根据本 |
end_time | 2024/01/30 15:00 | 需要分析的日志结束时间点,会根据本机和各节点的时间差计算出各节点各自 的真实时间范围。 |
ip_path | /usr/sbin/ | 配置系统工具 ip 所在的目录。 |
ssh_path | /usr/bin | 配置系统工具 ssh 所在的目录。 |
ssh_or_scmd_port | 配 置 远 程 执 行 工 具 端 口 号, 默 认 为空,此时自动使用工具的默认端口。当 use_ssh=true 时,使用 ssh,其默认端口为 22;当 use_ssh=false 时,使用 sys_securecmdd,其默认端口为8890。 | |
use_ssh | TRUE | 为 true 时使用 ssh,否则使用 |
kb_bin_path | /home/kingbase/cluster/test/ test/kingbase/bin | 目标节点 Kingbase bin 目录绝对路径。 |
network_speed_limit (暂不支持) | 1024(单位 KB) | 设置单个进程的最大网络传输速度,单 |
memory_limit (暂不支持) | 10(单位 MB) | 设置单个进程最大内存使用量,单位 |
local_ip | 10.10.10.10 | 本机 IP 地址(不能使用 127.0.0.1)。 |
anal_file_save_path | /home/kingbase/anal_files | 日志收集后,保存到本地目录。 |
result_file | /home/kingbase/halog_analyse.result | 日志分析结果文件。 |
log_file | /home/kingbase/halog_analyse.log | 日志收集分析过程中的日志输出文件。 |
log_level | DEBUG,INFO,NOTICE,WARNING,ERROR, ALERT,CRITor EMERG | 日志输出等级。 |
log_facility | STDERR,LOCAL0, LOCAL1,..., LOCAL7, USER | STDERR,LOCAL0, LOCAL1, ..., LOCAL7, USER 日志输出位置。 |
node_ips | 192.168.28.128, 192.168.28.129 | 配置需要做日志分析的节点 IP 列表。 |
remote_user | root | 登录远端节点的用户名。 |
file_name_* | /home/kingbase/cluster/test/test/kingbase/hamgr.log | 需要做分析的日志文件列表,’*’ 为文件 编号,从 1 开始,需要修改为该文件正 确的路径。 |
fname_format_* | hamgr-%Y-%m-%d-%H%M%Skbha.log-%Y%m%d | 文件名格式,编号需要跟 file_name 保 持一致, 默认格式已填好,不需要修改。 |
time_reg_* | [0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} | 日志文件中解析时间字符串的正则表达 式,’*’ 必须跟 file_name 保持一致默认 正则已填好,不需要修改。 |
time_format_* | %Y-%m-%d %H:%M:%S | 日志文件中的时间格式,’*’ 必须跟 file_name 保持一致默认的时间格式已 填好,不需要修改。 |
file_keyword_* | ERROR,error,FAILED,failed | 需要收集的日志关键字,’*’ 必须跟 file_name 保持一致默认已支持集群切 换、节点自动恢复场景的日志过滤持续 补全中。 |
其中,kb_bin_path、local_ip、node_ips、remote_user 必须配置后,才能使用此工具。
使用约束
1. 必须配置本机到各节点的免密登录;
2. remote_user 对需要收集的文件有读取权限;
3. 本地用户对 anal_file_save_path 和 result_file 有读写权限;
4. 所配置的端口号没有被占用。
收集和分析日志
收集并分析日志
参考命令: ${install_dir}/bin/halog_analyse.sh halog_analyse.conf
此命令会对日志进行收集和分析,收集后的日志会存放在anal_file_save_path参数配置的路径下,分析后的结果放在result_file参数配置的文件中。在日志文件收集过程中,会收集每个节点的系统时间,然后和本机系统时间计算一个时间差, 保存到anal_file_save_path目录下。
分析日志
如果日志文件已收集,可以执行以下命令来分析日志
参考命令: ${install_dir}/bin halog_analyse.sh halog_analyse.conf –a
分析后,所有符合条件的日志会根据时间线排序,全部输出到结果文件中。在分析过程中,会以本机的时区和系统时间自动对每个节点进行时间校准。结果文件中会自动加上已校准的时间。
- 自治事务有如下重要的特性:
- 事务的独立性
主事务和自治事务相互独立,各自的 TCL 操作互不影响,即主、自治事务的 commit/
rollback 互不干涉。
如下示例:匿名块中的 rollback 不会回滚 proc1 中的 t2 语句,proc1 中的 commit 也不会提交主事务的 t1 语句:
begin
insert into test1 values (1); --t0
commit;
insert into test1 values (2); --t1
proc1('this is my error message');
rollback;
end;
/
2. 数据的可见性
a) 主事务或其他事务仅已提交的更改对自治事务可见
b) 自治事务中已提交的更改对主事务和其他事务可见
用 1 中的例子加以说明,主事务的 t1 语句未提交,对于 proc1 不可见,t0 语句已提交, 对 proc1 可见;同理,自治事务的 t2 语句被提交后对主事务可见。
3. 数据的关联性
a) 自治程序可接受主事务传递的参数
b) 自治程序可返回结果集
c) 自治事务异常可以被主事务捕获
d) 自治程序的打印等信息可直接被主事务接收,使用透明
e) 自治程序的 OUT 参数对主事务同样生效
- 自治事务示例
包中存储过程、并传递参数
create table accounts(account_id int, balance float);
insert into accounts values (7715, 5000.5);
CREATE OR REPLACE PACKAGE pac1 AS
procedure f1(id int, n float);
END;
/
CREATE OR REPLACE PACKAGE body pac1 AS
procedure f1(id int, n float) as
pragma autonomous_transaction;
begin
insert into accounts values (id, n);
update accounts set balance = balance - 100 where account_id =id;
commit;
end;
END;
/
BEGIN
call pac1.f1(7720, 5680);
rollback;
END;
/




